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