Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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


Ранг: 2011.1 (!!!!)
Статус: Модератор
retired

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

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

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



Ранг: 582.3 (!)
Статус: Участник
_Вечный_Студент_

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

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


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

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

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



Ранг: 256.6 (наставник)
Статус: Участник

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

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

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



Ранг: 52.0 (постоянный)
Статус: Участник

Создано: 11 марта 2019 16:01 New!
Цитата · Личное сообщение · #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") так что-то возвращает, но совсем не туда.
???


Ранг: 1031.1 (!!!!)
Статус: Участник

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

get_name_ea(BADADDR, ja2::p) ?

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


Ранг: 322.8 (мудрец)
Статус: Участник

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

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

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

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


Ранг: 52.0 (постоянный)
Статус: Участник

Создано: 11 марта 2019 18:02 · Поправил: UniSoft New!
Цитата · Личное сообщение · #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)


Ранг: 1031.1 (!!!!)
Статус: Участник

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

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


Ранг: 52.0 (постоянный)
Статус: Участник

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

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


Ранг: 1031.1 (!!!!)
Статус: Участник

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

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


Ранг: 52.0 (постоянный)
Статус: Участник

Создано: 11 марта 2019 19:00 · Поправил: UniSoft New!
Цитата · Личное сообщение · #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);


Ранг: 322.8 (мудрец)
Статус: Участник

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

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

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


Ранг: 52.0 (постоянный)
Статус: Участник

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

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


Ранг: 256.6 (наставник)
Статус: Участник

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

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

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


Ранг: 1031.1 (!!!!)
Статус: Участник

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

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


Ранг: 256.6 (наставник)
Статус: Участник

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

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


Ранг: 582.3 (!)
Статус: Участник
_Вечный_Студент_

Создано: 22 марта 2019 08:02 · Поправил: plutos New!
Цитата · Личное сообщение · #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

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


Ранг: 1.6 (гость)
Статус: Участник

Создано: 5 апреля 2019 17:28 New!
Цитата · Личное сообщение · #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 рабатает.

Ранг: 20.0 (новичок)
Статус: Участник

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

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

(ida 6.8 / idapython 1.7.0)


Ранг: 322.8 (мудрец)
Статус: Участник

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

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

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


Ранг: 322.8 (мудрец)
Статус: Участник

Создано: 17 апреля 2019 19:25 · Поправил: DenCoder New!
Цитата · Личное сообщение · #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 в таком случае вообще далека от совершенства...


Ранг: 322.8 (мудрец)
Статус: Участник

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

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


Ранг: 256.6 (наставник)
Статус: Участник

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

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

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


Ранг: 322.8 (мудрец)
Статус: Участник

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

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

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

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


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

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


Ранг: 256.6 (наставник)
Статус: Участник

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

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

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


Ранг: 322.8 (мудрец)
Статус: Участник

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

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

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


Ранг: 256.6 (наставник)
Статус: Участник

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

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

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

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


Ранг: 65.0 (постоянный)
Статус: Участник

Создано: 24 апреля 2019 21:50 · Поправил: hash87szf New!
Цитата · Личное сообщение · #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.


Ранг: 331.0 (мудрец)
Статус: Участник

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

hash87szf

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

Ранг: 70.8 (постоянный)
Статус: Участник

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

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

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


Ранг: 582.3 (!)
Статус: Участник
_Вечный_Студент_

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

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

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

Видеокурс ВЗЛОМ