Есть ли программа для декомпиляции Delphi?
Кто-то просто прислал мне декомпилировать программу на C. Это был очень хороший декомпилировать, создавая хороший, в основном код readabe C (если вы упускаете из виду тот факт, что ни одна из переменных или функций не имела удобочитаемого имени) в основном выглядела так, как будто бы она скомпилировалась.
Однако была одна большая проблема. Я знаю, что программа, которую он декомпилировал, была написана в Delphi, которая полна концепций, которые трудно перевести на C. Но я был действительно впечатлен выходом декомпилятора, и это заставило меня задуматься. Есть ли что-то, что может сделать для Delphi?
Лучший инструмент для декомпиляции, который я видел для Delphi, - DeDe. Он может многое сделать, но он даже не пытается создать код Object Pascal в качестве своего вывода, и он не обновлялся с Delphi 6. Есть ли что-то лучше там?
Ответы
Ответ 1
Я не думаю, что есть декомпиляторы машинного кода, которые производят код Pascal. Большинство "декомпиляторов Delphi" анализируют форму и данные RTTI, но фактически не декомпилируют машинный код. Я могу только рекомендовать использовать что-то вроде DeDe (или аналогичное программное обеспечение) для извлечения символьной информации в сочетании с декомпилятором C, а затем перевести декомпилированный код на C Delphi (там есть много конвертеров исходного кода).
Ответ 2
Вы можете использовать IDR, это отличная программа для декомпиляции delphi, она обновляет текущие версии delphi и имеет много возможностей.
Ответ 3
Вот список: http://delphi.about.com/od/devutilities/a/decompiling_3.htm (и на этой странице упоминается еще: http://www.program-transformation.org/Transform/DelphiDecompilers)
Я иногда использовал DeDe, но на самом деле это не так уж и много, и это не актуально с текущими версиями Delphi (последняя версия поддерживает Delphi 7, я считаю)
Ответ 4
Языки, такие как Delphi, C и С++. Компилировать машинный код на основе процессора, а выходные исполняемые файлы имеют мало или вообще не содержат метаданных. Это контрастирует с Java или .Net, которые компилируются для объектно-ориентированного независимого от платформы байт-кода, который сохраняет имена методов, параметров метода, классов и пространств имен и других метаданных.
Таким образом, существует гораздо менее полезная декомпиляция, которая может быть выполнена на Delphi или C-коде.
Тем не менее, Delphi, как правило, имеет встроенные данные формы для любой формы проекта (сгенерирована линией $R *.dfm), а также имеет метаданные по всем опубликованным свойствам, поэтому инструмент, зависящий от Delphi, сможет извлечь эту информацию.