Сейчас на форуме: -Sanchez- (+9 невидимых)

 eXeL@B —› Основной форум —› Использование IDA Pro (part 2)
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 21 . 22 . >>
Посл.ответ Сообщение


Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 27 марта 2017 11:54
· Личное сообщение · #1

Обмен опытом использования и настройки интерактивного дизассемблера и отладчика IDA Pro.
Прошлый топик Использование IDA Pro

| Сообщение посчитали полезным: oxfemale, gent0o0


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 06 марта 2019 04:23 · Поправил: plutos
· Личное сообщение · #2

reversecode пишет:
ида рвет ее


Может не все так плохо, как кажется.

Rolf Rolles: --> For being free, it's awesome<--

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: mak, sty


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 10 марта 2019 08:18 · Поправил: f13nd
· Личное сообщение · #3

Просто как забавный факт. Решил сопоставить три разных дизассемблера tricore, чтобы сравнить качество без секундомера (количество неправильно раскодируемых форматов инструкций). Получилось вот так:
radare2: 37/815 (тупо не поддерживает набор инструкций 1.6, по тому, что поддерживает, вообще ни единой явной проблемы)
trace32: 3/815 (в одной инструкции аргументы в неверном порядке и в двух константа взята со знаком, она беззнаковая по мануалу)
ida pro: 176/815 (технически это два бага, неверное раскодирование адреса в fcalla и 175 форматов где поле n ида считает 1-битным, мануал с этим не согласен категорически)
Вольные интерпретации к багам не относил (типа '[+a0]4' вместо канонического '[+a0]' при пре-инкременте), но радар и ида этим грешат. Вот вам и менеджмент качества.

-----
2 оттенка серого


| Сообщение посчитали полезным: mak, plutos


Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 11 марта 2019 16:01
· Личное сообщение · #4

Вопрос по IDC script и .NET
как получить адрес static поля?
пример:
Code:
  1. seg000:64530 16                    ldc.i4.0
  2. seg000:64531 80 3D 06 00 04        stsfld   int32 ja2::p

так вот как например получить адрес "ja2::p"?
дабл клик на "ja2::p" и заходим, все нормально...
Code:
  1. seg000:3E040                   .class private auto ansi beforefieldinit ja2 extends [mscorlib]System.Object
  2. seg000:3E040                   {
  3. seg000:3E040 ??                  .field public static int32 d
  4. seg000:3E041 ??                  .field public static int32 p          // DATA XREF: uf__m1+5DD&#8593;r

Так вот собственно как получить адрес "seg000:3E041" из "ja2::p"?
get_name_ea(BADADDR, "ja2::p") возвращает -1
get_name_ea("ja2", "p") так что-то возвращает, но совсем не туда.
???




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 11 марта 2019 17:27 · Поправил: reversecode
· Личное сообщение · #5

get_name_ea(BADADDR, ja2::p) ?

или вызвать из еа
string get_name(long ea, long gtn_flags=0);
что бы узнать как он кодирует имя для использования




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 11 марта 2019 17:37
· Личное сообщение · #6

Попробовать get_name_ea(0, "ja2::p") ?

Добавлено спустя 5 минут
reversecode опередил. Да. видимо, проблема в кодировании имён. Надо правильно задать имя и get_name_ea(BADADDR, ja2::p)

Добавлено спустя 6 минут
Есть просто get_name_ea_simple(name)

-----
IZ.RU





Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 11 марта 2019 18:02 · Поправил: UniSoft
· Личное сообщение · #7

reversecode
a = get_name_ea(BADADDR, "ja2::p");
msg("ea: %a\n", a);
результат: "ea: 0:FFFFFFFF"

a = get_name(0x3E041, 0); // как и get_name("seg000:3E041", 0);
msg("name: %a\n", a);
результат: "name: seg000:0000"

DenCoder
тоже самое, что и с BADADDR - "ea: 0:FFFFFFFF"
#define get_name_ea_simple(name) get_name_ea(BADADDR, name)




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 11 марта 2019 18:05
· Личное сообщение · #8

я имел ввиду без скобочек строки "
только имя
но учетом следующей функции возможно решения на идц нет
сейчас все на апи питона перевели
идц для вида




Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 11 марта 2019 18:36
· Личное сообщение · #9

reversecode
без скобок ошибка о неизвестном идентификаторе.
оно скорее всего и на питоне не пойдет.
jump to address (G) даже не срабатывает, если ввести: ja2::p
Вот имя класса (ja2) она понимает, и выдает верный адрес, а вот на конкретное поле в этом классе ни в какую...




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 11 марта 2019 18:49
· Личное сообщение · #10

ну почему же
можно еще попробовать получить операнд тип
а потом операнд валуе
это более rawно




Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 11 марта 2019 19:00 · Поправил: UniSoft
· Личное сообщение · #11

reversecode
да пробовал уже,
long get_operand_value(long ea, long n);
обламывается, так как там тип не стандартный
long get_operand_type(long ea, long n); возвращает 10 (o_idpspec2)
поэтому используя
auto instr = decode_insn(long ea);
можно получить значение через instr.Op0.value, получаем собственно то, что и в байткоде, т.е. 0x0400063D,
вот только как из этого получить адрес, пока не разобрался.
походу надо разбираться как там вся метаинфа в этом .NET хранится...

Все, нашел как решить...
через
long get_first_dref_from(long from);




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 11 марта 2019 22:28
· Личное сообщение · #12

UniSoft
Попробуй встать на этот на адрес, как reversecode писал, и дать команду просто get_name(ScreenEA()). Узнаешь имя, довалишь, мб, как кодирует имена ида.

Второй вариант: меню View -> Names. Найди там имя этого поля, должно быть!

-----
IZ.RU





Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 11 марта 2019 23:48
· Личное сообщение · #13

DenCoder
да то-же самое... и в Names их попросту нет...
да ладно, стоя на инструкции которая обращается к тому полю get_first_dref_from() дает то, что нужно...




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 12 марта 2019 09:28
· Личное сообщение · #14

UniSoft пишет:
да ладно, стоя на инструкции которая обращается к тому полю

Скорей всего это связано с тем, что дотнетовые адреса с файловыми смещениями не очень кореллируют. Поэтому надо брать неправильно работающий 'get_name_ea("ja2", "p")' и придумывать как находить для него поправку.

-----
2 оттенка серого





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 12 марта 2019 13:04 · Поправил: reversecode
· Личное сообщение · #15

специалисты сказали что можно еще через netnode но это более низкоуровнее и на С
ну или на питоне
но на idc кроме найденного варианта выше, никак




Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 12 марта 2019 13:35
· Личное сообщение · #16

Да все сводится к парсу PE формата и разбирательству где dnspy берет RVA --> Link <-- Но специалистам видней.

-----
2 оттенка серого





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 22 марта 2019 08:02 · Поправил: plutos
· Личное сообщение · #17

--> “Karta”<-- is a source code assisted binary matching plugin for IDA.
The plugin was developed to match symbols for an open source library in a very large binary, usually a firmware file. For those who deal daily with firmware files, it’s a waste of time to have to repeatedly reverse net-snmp; there is a clear need for a tool to identify the used open sources, and automatically match their symbols in IDA

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: =TS=

Ранг: 1.6 (гость), 1thx
Активность: 0.01=0.01
Статус: Участник

Создано: 05 апреля 2019 17:28
· Личное сообщение · #18

Нужна помощь с настройкой удалённой отладки IDA ( Version 7.0.170914 Windows x64 )+ windbg (10.0.17134.1)
Я знаю что тема уже заезженна и в нете много об это писали, может кто то подскажет в чём моя проблема

За основу брал эту статью - https://research.checkpoint.com/scriptable-remote-debugging-windbg-ida-pro/

т.e. на одной виртуалке запускаю dbgsrv ( "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbgsrv.exe" -t tcp:port=5064)
на второй настраиваю IDA (выбираю windbg и настраиваю Connection string как "tcp:port=5064,server=169.254.210.241")

Пишет "The file can't be loaded by the debugger plugin. Please verify that the parameters are valid."

Вывод консоли:
Windbg: using debugging tools from '<PATH>'
Connecting in user mode with 'tcp:port=5064,server=169.254.210.241'
Connect failed: Сервер в настоящее время отключен.

При этом другая версия windbg по этим параметрам подключения (tcp:port=5064,server=169.254.210.241) подключается

Сам файл на целевую виртуалку копируется. Локальная отладка с данным debugging tools рабатает.



Ранг: 21.0 (новичок), 19thx
Активность: 0.010.03
Статус: Участник

Создано: 12 апреля 2019 22:03
· Личное сообщение · #19

в скрипте python посредством SetMemberName и SetType меняю имя и тип стековых переменных некой функции.
в дизассемблере и в закладке "stack variables" все меняется успешно, но вот в псевдокоде почему-то не меняется ничего, если псевдокод был хотя бы один раз сгенерирован до выполнения скрипта (в текущей рабочей сессии IDA для этой функи). после скрипта, ни F5, ни idaapi.decompile() не обновляют данных об измененных переменных в уже созданном псевдокоде.
но если сначала скрипт выполнить, а потом вызвать hex-rays, то в псевдокоде отображаются новые имена и типы локальных переменных.
собственно вопрос, как после скрипта заставить hex-rays сделать "реанализ" функи и подтянуть новые объявления стековых переменных?

(ida 6.8 / idapython 1.7.0)




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 13 апреля 2019 13:04
· Личное сообщение · #20

vilimax
Возможно, протокол в сборке WinDbg 10.0.17134.1 не стыкуется с протоколом в ида 7.0. Какой билд виндбг у тебя работает?

Кроме того, у иды есть свои отладочные сервера. Копируешь из папки иды\dbgsrv на гостевую ось win32_remote.exe или win64_remotex64.exe, запускаешь, из иды подсоединяешься.

-----
IZ.RU





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 17 апреля 2019 19:25 · Поправил: DenCoder
· Личное сообщение · #21

Использую для отладки Remote Windows Debugger x64. IDA 6.8. Пытаюсь выполнить питон-скрипт на бряке
Code:
  1. idaapi.step_until_ret()
  2. evt_code = GetDebuggerEvent(WFNE_SUSP, 1)
  3. while evt_code != STEP
  4.          print("event code: %x" %evt_code)
  5.          evt_code = GetDebuggerEvent(WFNE_SUSP, 1)


и ида зависает. WFNE_SUSP - по совету, найденному в инете, по всему значит, что выполнение остановлено. 1 - 1 секунда ожидания.

Зависает даже при WFNE_ANY. И никаких сообщений. Почему?

В инете ничего не нашёл по данной проблеме

Добавлено спустя 15 часов 11 минут
Оказалось, зависает именно сама ида, не дебаггер. То ли ошибка в протоколе "удалённой" отладки, то ли в какой-то банальной ошибке... Ведь смысл самой по себе идовской функции GetDebuggerEvent() аналогичен функции WaitForDebugEvent(), которая НЕ зависает. И по найденным страницам в интернете, в ранних версиях до 6.8 отлично работала... Ида 6.8 также вообще крашится, если неправильно пользоваться скриптом (вызывать/не вызывать ненужные/нужные функции невовремя/вовремя). Назревает мысль, что все программы уязвимы, поскольку люди уязвимы... 7.0 в таком случае вообще далека от совершенства...

-----
IZ.RU





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 18 апреля 2019 21:10
· Личное сообщение · #22

И никто на мои вопросы не отвечает.Тут реверсеры есть или кто тут? ))

-----
IZ.RU





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 апреля 2019 21:27
· Личное сообщение · #23

DenCoder пишет:
Тут реверсеры есть или кто тут?

Ида как отладчик не очень популярна.

-----
2 оттенка серого





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 18 апреля 2019 21:37
· Личное сообщение · #24

Но поддержка питона отличная. Где ещё питон есть?

Добавлено спустя 8 минут
Года 4 назад писал свой дебаггер... Но у него были свои цели и задачи, пытался вообще-то реализовать дебаг под дотнет без дотнета. (Это реально, было доведено до точки, где дебаггером хукался jit-компилятор). Всё было хорошо, пока не увели меня в другую сторону... Неужели обстановка в мире инструментов настолько плачевна, что придётся всё же писать свой дебаггер?

Добавлено спустя 11 минут
f13nd пишет:
Ида как отладчик не очень популярна.


Зато сколько статей по ней и сколько книг! Некоторые даже в диссертациях "настойчиво" упоминают иду... И у них работает такое, что у меня почему-то нет

Добавлено спустя 12 минут
Ключ, может, плохой? )

-----
IZ.RU





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 апреля 2019 21:52
· Личное сообщение · #25

DenCoder пишет:
Но поддержка питона отличная. Где ещё питон есть?

У ексодии питон есть.

-----
2 оттенка серого





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 18 апреля 2019 22:57
· Личное сообщение · #26

f13nd пишет:
У ексодии питон есть.

ага... я сбился со счёта, какое апи уже изучаю. Если б оно было для проекта - ладно, но для инструмента - сколько можно перебирать их, и их различные апи

-----
IZ.RU





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 18 апреля 2019 23:12
· Личное сообщение · #27

DenCoder пишет:
ага... я сбился со счёта, какое апи уже изучаю.

У иды в принципе траблы с синхронизацией при отладке (была где-то тема про изменение значений в стеке скриптом), она при запуске в режиме отладчика традиционно подтупливает и бог знает сколько там еще сюрпризов. Не сказать что ексодия идеал, но по крайней мере отладчик это ее основное назначение. Если бы х64 ольга таки однажды вышла, ничего перебирать бы не пришлось никому.

-----
2 оттенка серого


| Сообщение посчитали полезным: DenCoder

Ранг: 64.9 (постоянный), 47thx
Активность: 0.120.02
Статус: Участник

Создано: 24 апреля 2019 21:50 · Поправил: hash87szf
· Личное сообщение · #28

DenCoder
GetDebuggerEvent(WFNE_SUSP, 1)
GetDebuggerEvent(WFNE_SUSP, -1)
long GetDebuggerEvent(long wait_evt, long timeout)
Waits for a debugger event (as specified by wait_evt ) to take place within
the specified number of seconds (–1 waits forever). Returns an event type
code that indicates the type of event that was received. Specify wait_evt
using a combination of one or more WFNE_xxx (WFNE stands for Wait For
Next Event) flags. Possible return values are documented in the IDA
help file.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 24 апреля 2019 22:12
· Личное сообщение · #29

hash87szf

Я могу любые события выбрать при загрузке софта, в данном случае Ida.

-----
vx





Ранг: 77.2 (постоянный), 73thx
Активность: 0.190.15
Статус: Участник

Создано: 24 апреля 2019 22:28
· Личное сообщение · #30

difexacaw пишет:
Я могу любые события выбрать при загрузке софта

И не только ты.. К чему вёл-то?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 25 апреля 2019 22:52
· Личное сообщение · #31

--> climacros<--– IDA productivity tool to enhance the CLI. Very useful if you use WinDbg debugger in IDA

Initial --> version<--

-----
Give me a HANDLE and I will move the Earth.



<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 21 . 22 . >>
 eXeL@B —› Основной форум —› Использование IDA Pro (part 2)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати