Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Использование дизассемблера в Delphi


Автор: Vasek 10.9.2005, 22:29
Существуют ли диззассемблеры, которые переводят файл EXE не в ассемблер, а в object pascal? Если есть, то где ее можно скачать?

Автор: Dimannn 10.9.2005, 23:27
Цитата(Vasek @ 10.9.2005, 22:29)
Существуют ли диззассемблеры, которые переводят файл EXE не в ассемблер, а в object pascal?


Хорошо бы было. Тока чёто никто ещё такого не придумал smile

Автор: Alex 10.9.2005, 23:48
это сделать нельзя

Автор: Satana 11.9.2005, 09:58
Vasek Есть прога называется помойму DeDe (раньше была на www.cracklab.ru) так вон она переводит в дельфевский код вот только потом етот проект почемуто не компилиться smile
Вот и ссылка если интересно http://www.cracklab.ru/download/get.php?g=10

Автор: Alex 11.9.2005, 10:25
Цитата(Satana @ 11.9.2005, 10:58)
Есть прога называется помойму DeDe (раньше была на www.cracklab.ru) так вон она переводит в дельфевский код

Она востанавливает структуру проекта, но не сам код функций, его она включает как асемблерные вставки

Автор: Z10 11.9.2005, 16:59
Цитата(Alex @ 11.9.2005, 10:25)
Она востанавливает структуру проекта, но не сам код функций, его она включает как асемблерные вставки

...... и ещё это называется декомпилятор smile

Автор: Mayk 11.9.2005, 17:15
Цитата(Z10 @ 11.9.2005, 20:59)
и ещё это называется декомпилятор

декомпиляторы сей поступают так же. Делают int func() { asm{ .. и поехало smile
Кстати, не стоит забывать про один важный момент, который препятсвует успешной декомпиляции - оптимизация. Так, например, умный компилятор(как говорилось в эхе по си]) заменит деление умножением и сдвигом.
Таким образом код
Код

a := b div 55;

"декомпилируется" в что-то типа(во что точно компилируется - смотрите http://forum.vingrad.ru/index.php?showtopic=63079&st=0&unread=#)
Код

a := (b * 702812831) shr 1 (*и далее в том же духе*) 

На самом деле будет еще страшнее. Согласитесь, что умножение на 702812831 и деление на 55 это разные для восприятия вещи smile


Автор: Alex 11.9.2005, 17:48
Много, что сделает оптимизатор. По этой причине я и говорю, что получить object pascal код нельзя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)