Для дизассемблирования программ обычно применяют один и тот же набор
инструментов, проверенных многими людми и временем. Обычно это IDA, WinDasm,
Heiw. Главным их достоинством и в тоже время недостатком является широта
применения. Бессомнения лидером среди них является IDA, поддерживающий
платформы, отличные от x86. Но для программ, написанных на Delphi, IDA не всегда
распознает функции, классы и т.д. особенно, если программа была распакована,
например, ASPack'ом. Достоинство же DeDe в том, что он дизассемблирует не сам
файл, а его образ в памяти (так называемый дамп). Поэтому иногда можно и не
распаковывать программу, для ее анализа. Конечно, DeDe может не все, но
некоторые упаковщики, в числе которых и ASPack/ASProtect он поддерживает. Еще
одной важной особенностью, этого дизассемблера, является то что он поддерживает
Kylix, хотя я сам этого не проверял. DeDe поддерживает версии Delphi c 3-ей по
6-ю и С+ Builder. Также он распознает библиотеку KOL для Delphi. Программа и
меет очень удобный интерфейс. После выбора файла следует нажать на кнопку
Process и после некоторого шуршания появится сообщение о удачном
дизассемблировании.
Выбирая вкладки можно посмотреть адреса описания классов, список и структуру
форм, функций и могое другое. Причем многие функции имеют осмысленные названия (btnOKOnClick,
Timer1Timer ...), поэтому разобраться в работе программы будет очень просто.
Если два раза нажать мышкой на названии функции, то появится окно с ассемблерным
листингом, который снабжен очень полезными коментариями.
DeDe показывает названия многих функций (VCL и WinAPI) , названия элементов
управления (например TRegWin.Edit2). При нажатии клавиши Enter на строке
содержащий jmp xxx , курсор прыгает на нужный адрес. Если же в строке будет call
xxx, то мы перейдем в эту функцию. Кроме этого DeDe умеет создавать проект
Delphi, исследуемой программы, map-файл для SoftIce и wjp/alf -файл для WinDasm.
Для расширения этого дизассемблера используется плагины (в дистрибутиве имеется
SDK). Размер же архива с DeDe около 3,5 Мб. P.S. Возможно имеются и другие,
более совершенные программы для разбора Delphi-программ, но я с такими не
встречался. Если вы используете такие, то я был бы не против о них узнать.
|