droopy Он-то понятно, этож еще забить, потестировать нужно... desquirr inquisition boomerang rec Может ли кто из них определять С++ классы с методами и полями? Я пробовал rec и boomerang, первый хорошо определяет конструкции программы и хорошо справляется с неструктурированым кодом, но я так и не смог получить приемлемый листинг, и возможность интерактивно поправить его. Бумеранг, понравился меньше, консольная версия коека отработала на коде, вообще без оптимизации и выдала полностью нечитаемый код, пробовал использовать графическую примочку, настроил разбирать несколько процедур, очень дого тыкал всякие тюнинговые параметры в итоге все упало, листинга так и не получил desquirr inquisition Не пользовался, ничего сказать не могу, может кто "конструктивно" опишет, приемлемость их использования?
Да, товарищи, не поймите меня не правильно, я не хочу всех переплюнуть, просто есть идеи и я проверяю возможность их реализовать
Ну опеделить класс не очень трудно если это MSVC, то он генерит характерный код А если подключено RTTI - то можно узнать имена классов.
dag Хм, там даже есть 32бита но выковыривать особого желания нет PaCHER Как нашет огласить список вариантов, от их количества пользы мало... Пока остановлися на этом http://antiabylos.sourceforge.net/
Хотел я как-то декомпилировать игру Allods чтобы выташить код для любительской версии Allods-2.25, но что-то заглохла разработка игры и декомпилер тоже стал, остался вот движок эмулятор тестовый. Выброшу на форум что не мучала совесть и на флешке глаз не мозолил Движок этот хитрый, эмулирует все, даже если не знает что Основная идея, состояние данных либо известно либо нет. Если к известным данным прибавить неизвестные то они сами становятся неизвестными. Для прояснения ситуации приведу лог выполнения куска кода. Результат трасирования тестовой программы, если значение данных неизвестно выдны вопросики. Начальное состояние, значения регистров не определены. Есть два региона памяти Данные 8 байт(00000300: AA AA BB BB CC CC DD DD) Стек 8 байт(00000200: ?? ?? ?? ?? ?? ?? ?? ??) Код (Text): 100: MOV EAX,208 EAX=00000208 ECX=???????? EDX=???????? EBX=???????? ESP=???????? EBP=???????? ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? ?? ?? 00000300: AA AA BB BB CC CC DD DD 105: MOV ESP,EAX EAX=00000208 ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=???????? ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? ?? ?? 00000300: AA AA BB BB CC CC DD DD 107: MOV AX,300 EAX=00000300 ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=???????? ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? ?? ?? 00000300: AA AA BB BB CC CC DD DD 10B: MOV BP,AX EAX=00000300 ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? ?? ?? 00000300: AA AA BB BB CC CC DD DD 10E: ADD AX,WORD[BP+0] EAX=0000ADAA ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? ?? ?? 00000300: AA AA BB BB CC CC DD DD 113: PUSH AX EAX=0000ADAA ECX=???????? EDX=???????? EBX=???????? ESP=00000206 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? AA AD 00000300: AA AA BB BB CC CC DD DD 115: ADD AX,WORD[400] EAX=0000???? ECX=???????? EDX=???????? EBX=???????? ESP=00000206 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? AA AD 00000300: AA AA BB BB CC CC DD DD 11C: POP AX EAX=0000ADAA ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? AA AD 00000300: AA AA BB BB CC CC DD DD 11E: ADD EAX,ECX EAX=???????? ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? AA AD 00000300: AA AA BB BB CC CC DD DD 120: RET EAX=???????? ECX=???????? EDX=???????? EBX=???????? ESP=00000208 EBP=????0300 ESI=???????? EDI=???????? 00000200: ?? ?? ?? ?? ?? ?? AA AD 00000300: AA AA BB BB CC CC DD DD Как видно, например, по инструкции "115: ADD AX,WORD[400]" к регистру AX ("EAX=0000ADAA") прибавляются данные из участка памяти 400h собдержимое которого неизвестно, в результате значение регистра устанавливается в неопределенное (EAX=0000????). Эмулятор держит 4 инструкции (add,mov,push,pop) больше не успело понадобиться. В качестве бонуса полная таблица опкодов (bonus_table.h) от несостоявшегося релиза. Собрано через MSYS-1.10 gcc -o emul.exe decode.c fde.c errors.c emulate.c intelstyle.c