eXeL@B —› Софт, инструменты —› Вопрос по IDA |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 сентября 2011 21:40 · Поправил: PE_Kill · Личное сообщение · #1 Был же топик где спрашивали всё по IDA, что то найти его не могу, может прилепить в этом подфоруме? Вопрос такой. В делфи есть такое понятие как локальная процедура. Эта процедура описывается в разделе var и имеет доступ ко всем переменным родительской процедуры. Для доступа к переменным генерируется такой код: Code:
Проблема в том, что IDA не понимает, что NestedProc через ebp работает со стеком основной процедуры. Как это поправить? Вот пример: Code:
Вот IDA разобрала основную процедуру: Code:
А вот так она видит процедуру NestedProc: Code:
----- Yann Tiersen best and do not fuck |
|
Создано: 31 октября 2011 11:32 · Личное сообщение · #2 |
|
Создано: 03 марта 2012 10:02 · Поправил: crackintosh · Личное сообщение · #3 Имею дизассеблированный IDA-й кусок кода: Code:
Тут (.text:00401C68) понимаю что имеет меcто вызов функции CSliderCtrl::SetRange с 3-мя значениями INT(начальное=0, максимальное=2710h=10000d, шаг=1). Значение regECX после интрукции Code:
равно = 0126A154h т.е.: Code:
Встал вопрос: какой ID у элемента "Slider" при вызове функции? Тоже самое и выше при вызове CDialog::OnInitDialog. Значение regECX = 01269FF0h т.е.: Code:
какой ID у элемента диалогового окна содержащий элемент SLIDER? |
|
Создано: 03 марта 2012 11:53 · Личное сообщение · #4 crackintosh Что-то вы не туда копаете: ecx = this - указатель на класс диалога, CSliderCtrl элемент окна диалога, его смещение в классе диалога - 0х164. Чтобы найти ИД диалога нужно смотреть виртуальную функцию диалога DoModal(void), в которой диалог будет загружаться из ресурсов CDialogTemplate::Load(char const *) аргумент этой функции и есть ИД диалога. Если же нужен ИД CSliderCtrl, то его проще посмотреть в ресурсах соответствующего диалога. ----- Everything is relative... |
|
Создано: 03 марта 2012 11:57 · Поправил: OKOB · Личное сообщение · #5 |
|
Создано: 03 марта 2012 14:06 · Личное сообщение · #6 |
|
Создано: 03 марта 2012 14:31 · Личное сообщение · #7 |
|
Создано: 03 марта 2012 17:12 · Личное сообщение · #8 crackintosh пишет: Знаю что по ID. Тока как это в коде видно? Обращение к слайдерам идёт с помощью методов класса слайдер, в ecx передаётся указатель на определённый экземпляр слайдера. Если слайдеры являются членами класса-наследника диалог, то в экземпляре этого класса и хранятся указатели на слайдеры. Один вы нашли - add ecx, 164h от начала диалога. Друрие имеют другие смещения. Как определить нужный? Ищем вызов слайдерских фунок в диалоге, брякаемся, запоминаем смещение, меняем аргументы так, чтоб это было визуально видно, отпускаем. Визуально делаем вывод за какой слайдер отвечает указатель по запомненому смещению. ----- Следуй за белым кроликом |
|
Создано: 07 марта 2012 07:10 · Личное сообщение · #9 |
|
Создано: 07 марта 2012 19:54 · Личное сообщение · #10 В очередной раз ковыряю прогу с OpenSSL. Имена функций понаходил, код стал хоть немного понятный, но хотелось бы и структуры впихнуть. Я с IDA не слишком хорошо знаком, поэтому возник вопрос - можно ли где нибудь слить структуры под OpenSSL и импортировать их как-то в IDA? Руками собирать их - дико долго ----- Research For Food |
|
Создано: 07 марта 2012 20:33 · Поправил: reversecode · Личное сообщение · #11 IDA умеет парсить .h файлы на предмет С/C++ структур(и возможно классов) и превращать это все в свои структуры можно на краний случай набить .h и потом его скормить IDA enum тоже можно в .h впихнуть только там есть глюк enum ... непомню уже какой а еще хексрейс умеет по магической кнопочке тоже создавть структуры, криво правда но иногда на скорую руку удобно r_e ну тогда проще уже сигнатуры по скомпиленой либе сделать, в каком из их формата сразу и структуры будут | Сообщение посчитали полезным: daFix |
|
Создано: 07 марта 2012 20:57 · Личное сообщение · #12 Смотреть в сторону tilib. Там более конфигурируемый парсер. ----- старый пень | Сообщение посчитали полезным: daFix |
|
Создано: 08 марта 2012 00:24 · Личное сообщение · #13 |
|
Создано: 08 марта 2012 00:54 · Личное сообщение · #14 |
|
Создано: 08 марта 2012 01:07 · Личное сообщение · #15 r_e а в целом говрил, если мне память не изменяет то кроме сигнатур помоему в флирт еще и структуры добавляются и после определения сигнатуры - флирт может в структуры IDA запихать используемую стуктуру мб я ошибаюсь и то с другой кактой технологие IDA я спутал, где совмещенно обнаружение+добавление стуктурных типов данных |
|
Создано: 08 марта 2012 14:58 · Личное сообщение · #16 |
|
Создано: 06 апреля 2012 10:32 · Поправил: awoland · Личное сообщение · #17 reversecode TIL хранит информацию о типах: структурах, енумах, и функциях (формат вызова, типы возвращаемого значения и аргументов, их количество). SIG хранит только сигнатуры функций. Если сначала подгрузить нужный .til, а затем применить .sig, то IDA в автомате прекрасно все распознает (можно даже через .idc) . У меня это работает через userload.idc : Code:
|
|
Создано: 31 июля 2012 01:29 · Личное сообщение · #18 |
|
Создано: 24 июля 2013 18:34 · Личное сообщение · #19 Кто-нибудь знает адекватный способ в IDC вытащить вещественные числа в строковой формат? .data:0041A514 var_3_2 dd 3.2 Пробовал разные варианты, но все не то... Большинство функций для работы с памятью в IDA имеют тип string и long. Последний вытаскивает корректное значение, если бы оно было целым. А вот вещественный тип получить не получается. Добавлено спустя 4 минуты GetFloat помогла. Но ее блин нет в документации (точнее в индексе функций IDC) Нашел здесь: https://www.hex-rays.com/products/ida/support/idapython_docs/idc-module.html |
|
Создано: 24 июля 2013 20:59 · Личное сообщение · #20 |
|
Создано: 25 июля 2013 10:01 · Личное сообщение · #21 |
|
Создано: 25 июля 2013 10:55 · Личное сообщение · #22 MadHacker ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: MadHacker |
|
Создано: 27 ноября 2013 18:37 · Личное сообщение · #23 Разгребаю ROM с архитектуры на которой путем переключения страниц (2..15) по 16к разные части прошивки проецируются на одни и теже адреса (8000-BFFF), аналогично RAM имеет (0..7) страниц по 8к проецируемые на Е000-FFFF. Разбросал прошивку по страницам благодаря назначению поля Base при создании сегмента (https://www.hex-rays.com/products/ida/support/idadoc/508.shtml). В дальнейшем необходимо чтобы для любых переключаемых страниц кода были видны первые две страницы 0000-7FFF (ядро системы), своя в адресах 8000-BFFF, ну и любая страница RAM. Для этого ИМХО предназначена опция Edit->Segments->Change segment translation https://www.hex-rays.com/products/ida/support/idadoc/521.shtml Но сколько не крутил с этой опцией нормально ни один функционал не работает (O/Ctrl+O/Alt+R/Ctrl+R). Команды типа: op [mem],r и op r,[mem] еще как то удается разресолвить на нужные адреса, а команды со смещением в виде операнда типа mov r,offset val вообще не заводятся. Может кто пользовал ИДУ для подобных задач и просветит? ----- 127.0.0.1, sweet 127.0.0.1 |
|
Создано: 28 ноября 2013 23:35 · Личное сообщение · #24 |
|
Создано: 21 декабря 2013 21:37 · Личное сообщение · #25 |
|
Создано: 22 декабря 2013 02:36 · Личное сообщение · #26 r_e Вообще или под определённой виртуалкой? В VirtualBox если хостовая машина не поддерживает виртуализацию в гостевой не работают хардварные бряки (тикет #477 висит уже много лет) Также при отладке в IDA с использованием WinDbg и установке больше четырёх хардварных бряков они не работают вообще. ----- DREAMS CALL US |
|
Создано: 22 декабря 2013 12:10 · Личное сообщение · #27 |
|
Создано: 23 декабря 2013 14:00 · Личное сообщение · #28 |
|
Создано: 23 декабря 2013 17:27 · Личное сообщение · #29 |
|
Создано: 23 декабря 2013 20:59 · Личное сообщение · #30 |
|
Создано: 23 декабря 2013 22:00 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Софт, инструменты —› Вопрос по IDA |
Эта тема закрыта. Ответы больше не принимаются. |