| Сейчас на форуме: asfa, bartolomeo, _MBK_ (+7 невидимых) | 
| eXeL@B —› Вопросы новичков —› IDA, привести листинг в порядок | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 09 марта 2012 03:32 · Поправил: Модератор  · Личное сообщение · #1 IDA не корректно показывает ассемблерный код функции. Code: 
 Во первых, есть какие-то переменные с очень большим смещением (var_76AF33BB= dword ptr -76AF33BBh), поиск ссылок на них по клавише X не дает результатов. Из-за этого плагин HexRays не может сгенерировать код, пишет очень большой стек. Во вторых не видит аргументов функции. Пишет что есть аргуметы dword ptr 0Ch и 14h, но поиск ссылок по ним ничего не показывает. А первый аргумент, к которому явно обращаются (mov ecx, [ebp+8]) не показывает, вот стек аргументов, почему-то на r он отвел 8 байт Code: 
 Соответственно, вопрос, как привести размер стека в соответствующий вид, и как добавить первый аргумент? ![]()  | 
| 
 | 
Создано: 09 марта 2012 11:58 · Поправил: Hexxx  · Личное сообщение · #2 проще пересоздать функцию. 'U', а потом 'P'. А бороться с вот таким локальными переменными, только если оно продолжает создавать такую же хрень. Если таки продолжает, то ALT-P на функции. И редактируем размер локальных переменных. На mov ecx, [ebp+8] нажмите 'K', и аргумент создастся. Но честно говоря не факт что это аргумент, и что у функции 3 аргумента вообще. Есть столько всяких исключений из правил, что я бы не рисковал не разобравшись. А без контекста (т.е. примеров на асме), говорить не о чем. ----- Реверсивная инженерия - написание кода идентичного натуральному ![]()  | 
| 
 | 
Создано: 09 марта 2012 16:35  · Личное сообщение · #3  | 
| 
 | 
Создано: 10 марта 2012 07:13  · Личное сообщение · #4  | 
| 
 | 
Создано: 13 марта 2012 02:40  · Личное сообщение · #5 Code: 
 вот где проблема и начинать нужно не с показа стека а с показа начала кода всего кода там в иде есть глючек когда она не может коректно стек поставить но рассуждать о нём пока не вижу смысла кроме показать функцию, вы еще с Alt+K для выравнивания стека пока не пользовались да кстати а уверены что программа писана на С/C++ ? ![]()  | 
| 
 | 
Создано: 21 марта 2012 16:36  · Личное сообщение · #6  | 
| 
 | 
Создано: 22 марта 2012 18:15 · Поправил: Veliant  · Личное сообщение · #7 Цитирую код, сгенерированный IDR. Первый цикл прогоняет все функции и удаляет их, в том числе имена. Второй цикл делает тоже самое с данными Code: 
 И задание имени по адресу Code: 
 Создание функции Code: 
 А вообще читайте IDA Pro book так все есть ![]()  | 
| 
 | 
Создано: 26 марта 2012 12:22  · Личное сообщение · #8 Zarion пишет: В частности, как программно реализовать команды «Y» и «N»? Вполне элементарно! Например, мы имеем в IdaPro запись: Code: 
 Ей соответствует скрипт: Code: 
 Допустим, надо поменять тип struct tagED * на DWORD * (команда «Y») и имя переменной a1 на aEditInfo (команда «N»). Это особенно актуально, если вы хотите получить Си код данной функции с нужными изменениями (клавиша F5 для плагина Hex-Rays Decompiler). Тогда вы просто запускаете скрипт: Code: 
 Последнюю точку с запятой для одиночной команды скрипта писать не обязательно (при этом становятся видны промежуточные сообщения «Иды»). ![]()  | 
| eXeL@B —› Вопросы новичков —› IDA, привести листинг в порядок | 







 Для печати