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

GPcH (admin@dotfix.net)

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

Обзор средств для восстановления исходного кода программ

Сложность кода, генерируемого компиляторами языков высокого уровня, использование виртуальных машин, новые хитрые форматы хранения данных - VCL, Visual Basic, Java, FoxPro, .NET, наконец – все это ведет к тому, что обычных дизассемблеров native-кода перестало хватать для того, чтобы хоть как-то разобраться в работе программы. Реверсеру потребовались новые инструменты, которые смогли бы раскопать в миллионах байт исследуемой программы до боли знакомые ему строки языка, на котором она была написана. Вдруг выясняется, что стали необходимы декомпиляторы, и в этом обзоре пойдет речь именно о них.

Восстановление исходного кода программы во многом стало возможным из-за массы лишней информации об оригинальном коде в откомпилированном файле, а также из-за однотипности структур и операторов, используемых в языках высокого уровня. Декомпиляторы анализируют избыточную информацию, и, зная, как компилер того или иного языка любит представлять некоторые структуры, пытаются создать на базе сырого кода программы некоторое подобие исходника. У некоторых это даже неплохо получается. Лучше всего декомпилируются программы, которые выполняются не напрямую процессором, а виртуальной машиной (написанные на Java, Visual Basic, FoxPro, .NET и т.п.). Причина этого кроется в том, что инструкции виртуальных машин, как правило, высокоуровневые и объединяют сразу несколько машинных команд. Иными словами, это те же операторы и ключевые слова языка программирования, только записанные немного иначе, с некоторой оптимизацией инструкций языка разработки.

Вторыми по простоте декомпиляции идут программы, написанные на таких языках программирования, как Delphi и C++ Builder. Несмотря на то, что данные языки не имеют дела с виртуальными машинами (кроме разве что платформы .NET), а компилируют программы в нормальный native-код, они любят использовать собственные стандартные библиотеки вроде VCL и оставляют в EXE-файлах много лишней информации, используя которую можно также вполне успешно восстановить исходный код.

Что же касается новомодной среды разработки .NET, то благодаря действительно невероятному количеству избыточной информации, хранящейся в exe-файлах компилируемых программ, можно чуть ли не с 100% точностью восстановить исходный код, написанный кодером. Разработчики сего проекта вовремя опомнились и начали выдавать так называемые обфускаторы кода, способные вычищать лишнюю информацию из программ, чтобы хоть как-то препятствовать декомпиляции, однако об этом пока мало кто знает, а вот сама среда разработки используется уже вовсю. К чему это ведет? К росту количества кейгенов, конечно :).

Что ж, давай посмотрим, какие декомпилеры уже успели появиться на свет.

Dede by DaFixer

Самый знаменитый декомпилятор Delphi. Работает с программами, скомпилированным любыми версиями Delphi, кроме восьмой (так как она создает .NET-код). Парень с ником DaFixer, написавший его, действительно молодец. Мало того, что он создал такой полезный инструмент, он еще и не пожалел для народа исходного кода одной из его старых версий! Подобный сорец может очень пригодиться тому, кто изучает код, генерируемый борландовскими монстрами.

Содержание  Вперед на стр. 057-016-2
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75