Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

Декомпиляторы

GPcH (admin@dotfix.net)

Спецвыпуск: Хакер, номер #057, стр. 057-016-2


Что же делает эта программа? Многое - разве что яичницу не жарит. Для начала предоставляет тебе все формы в оригинальном виде и дает возможность полазить по процедурам и функциям, имеющимся в программе. Помимо дизассемблерного листинга этих функций, программа пытается распознать стандартные операторы и типы Delphi и добавляет их в комментарии к ассемблерному коду. Особенно радует распознавание блоков типа:

ЛИСТИНГ

try

..

except

..

end;

Кроме того, эта программа умеет создавать исходник, который можно открыть в Delphi. А если ты используешь в качестве дизассемблера WDasm (о ужас!), то тебе точно будет полезна возможность Dede экспортировать данные в понятный ему формат. В общем, весьма позитивный декомпилер. Главный минус Dede в том, что он не умеет выдергивать из exe'шника компоненты, используемые в программе. Из-за этого в сгенерированном исходнике присутствует множество нераспознанных типов данных. Но это не большая беда, так как заставить полученный код работать все равно не удастся, как ни крути. А исследовать его – пожалуйста.

Программу вместе с сорцами бери на www.wasm.ru.

SourceRescuer

Еще один декомпилер Delphi, но попроще. Умеет восстанавливать формы и генерировать заголовки pas-файлов. Главное отличие от Dede – мгновенная работа и более эргономичный интерфейс. Что ж, одной программе дано иметь крутой интерфейс, другой - крутые возможности, тут ничего не поделаешь. Из главных особенностей декомпилятора можно выделить то, что он может создавать шаблон исходника не только в формате Delphi, но и в формате Builder'а. Фишка простая (после компиляции программы из Delphi и C++ Builder мало чем отличаются), но полезная. Распространяется в двух видах: GUI и консольном. Насколько я понял, требует регистрации.

Взять можно отсюда: www.ems-hitech.com.

REC by Giampiero Caprino

Полное название - the Reverse Engineering Compiler. Программа, которая с успехом преобразует в исходный код на С любой попавшийся ей на глаза исполняемый файл. Конечно, сорец получается мало похожим на оригинал, но разобраться в нем будет несложно. REC определяет функции исследуемого файла, основные блоки и структуры языка, такие как if, for, switch, вызовы API, и делает вообще все возможное, чтобы код стал понятным С-программисту. Однако не удивляйся, если увидишь в исходнике что-нибудь вроде:

ЛИСТИНГ

eax++;

for(ecx=1000;ecx!=0;ecx--)

{

ebx = ebx&ecx;

}

Это нормально. И, я думаю, лучше уж исследовать это, чем:

ЛИСТИНГ

00400000: inc eax

00400001: mov eсx, 1000

00400006: and ebx, ecx

00400008: loop 00400006

Хотя на вкус и цвет... Некоторые знают ассемблер даже лучше, чем русский матерный. Из приятных мелочей: кроссплатформенность (кроме Windows, декомпилятор считает родными Linux, Mac OS X и Solaris); поддержка нескольких форматов исполняемых файлов (REC не ограничился одними PE и COFF, он умеет анализировать и ELF, и AOUT, и даже Playstation PS-X).

Назад на стр. 057-016-1  Содержание  Вперед на стр. 057-016-3