суббота, 7 августа 2010 г.

Offsets plugin

Залил на sourceforge сорцы еще одного античного (2001 года выпуска) баяна, портированного (с borland c++ между прочим и ida 4.15) на visual c++ 6.0 и ida 5.0


В IDA 4.x появилась замечательная возможность - манипуляция структурами. Однако как всегда в реализации Ильфака весь этот механизм слегка недописан - а именно, Вы можете объявить структурой некоторую область памяти, но Вы не можете сказать IDA, что некий DWORD в коде является указателем на структуру ! Вы должны вручную выставить тип операндов инструкций, манипулирующих указателем на структуру, в Struct offset и нет (как минимум он мне неизвестен) решительно никакого механизма, устраняющего эту ручную работу. Предлагаемый Вашему вниманию plugin пытается решить данную задачу

Прежде чем использовать данный plugin, Вы должны для начала заранее определить все Ваши структуры в IDA Pro. Далее, Вы должны создать файл, в котором указать данному pluginу соответствие между адресом указателем и типом структуры, на которую он указывает.
Файл этот имеет имя дизассемблированного файла с расширением .off и должен находиться либо в той же директории, что и дизассемблированный файл, либо в каталоге cfg IDA Pro. Этот файл имеет следующий формат:
# комментарий
name struct_name
причем name может быть указано и как шестнадцатеричное число (например 0x404EB2).
Соответственно struct_name - название структуры.
Plugin имеет несколько параметров вызова:
 0 (по умолчанию) - обработать только текущую функцию
 1 - обработать все функции (это может занять некоторое время - даже несколько больше, чем Вы предполагаете :-)

Для того чтобы иметь возможность использовать аргументы pluginа, добавьте строчку в файл plugins/plugins.cfg вида:
String_in_plugin_menu offsets  0 1
здесь 1 - аргумент вызова pluginа. Вот и все, собственно...

Комментариев нет:

Отправить комментарий