Привет всем, подскажите как реализовать пошагово декомпиляцию проги написанной на С++. PEiD пишет Microsoft Visual C++ 6.0 Заранее большое спасибо за ответ на мой ламерский вопрос.
Ты исходники хочешь получить? Ассемблирование - однонаправленный процесс и полное восстановление кода не возможно. Ну а глянуть, что же такого прога делает можно с помощью любого дизассемблера. IDA лучший на сегодняшний день.
Насчет декомпиляции - ну если есть дебаг инфа, то дело значительно упрощается в плане наименований переменных, функций, параметров. Ну декомпилировать то, скорее всего, получится, правда код будет вида Код (Text): int sub_01562395( int arg_0, int arg_4 ) { DWORD var_4; DWORD eax; if( arg_0 == 0 ) var_4 = -1; else var_4 = arg_0; eax = sub_02375982( var_4, arg_4 ); return eax; } в лучшем случае... Насчет средств: Есть неплохой декомпилятор, правда, к сожалению, пока что очень сырой. Boomerang Decompiler, кажется, называется. Так же есть плагин для IDA, "С Functions Decompiler". Остальные мне не особо понравились.
Если сабж для С++, то это ещё сложнее. У каждого компилятора свои реализации ООП, да и восстанавливать последнее труднее простого Си.
rec еще есть. еще скоро выпустят авторы IDA свой "декомпилер". Код по обещаниям будет похож на тот что привел Great.
Посмотри, может поможет: ExeToC Decompiler http://sourceforge.net/projects/exetoc - очень сырой REC 2.1 - Reverse Engineering Compiler http://www.backerstreet.com/rec/rec.htm сырой и не учитывает vars в stacks Boomerang decompiler http://boomerang.sourceforge.net/ Anatomizer Decompiler http://jdi.at.infoseek.co.jp/japanese/download.plg - японский IDA + plugins: Desquirr http://desquirr.sourceforge.net/desquirr или HexRays Decompiler http://www.hexblog.com/hexrays/manual/index.html (только private)
скоро Ильфак выпустит свой чудо декомпилер, покупайте http://www.hex-rays.com/products.shtml http://hexblog.com/decompilation/video/vd1.swf ))
Hex-Rays реально рвёт и мечет. Бумеранг нервно курит в углу. Если вам приходится много реверсить MSVC кода - он своих денег стоит. http://pastebin.com/f779f9818
reverser Это ты листинг сгенерил (помнится, ты вроде говорил, что бета-тестируешь HR)? Если так, может выскажешь свои впечатления форуму?
Генерил не я, но весьма похоже на правду. Главная сила Hex-Rays, как и Иды - в интерактивности (хотя конечно движок декомпилятора тоже весьма неплох). Часто бывает нужно повозиться с определением структур и позадавать типы параметров функций, но зато листинг тогда становится почти идеальным. Ему бы ещё добавить интеллекта для автоопределения членов структур и тогда вообще останется только именовать функции да переменные
reverser Ну тогда нам, реверсерам, работать станет неинтересно А если серьезно, это довольно сложная задача (например, когда членами структуры являются другие структуры или массивы). ЗЫ Будет "возможность", обязательно поиграюсь с Hex-Rays.
crypto Иногда Anatomizer помогает, от free большего и не ждешь. Полуанглийский Anatomizer + либа http://slil.ru/24812381.