Декомпиляция в Delphi. (перевод одноимённой статьи с delphi. Поддерживаемые форматы файлов : EXE, DLL, BPL, DCU Snapshot 1. Данная программа предназначена для частичного восстановления утерянного. Декомпилятор Exe Файлов Visual Basicabout. com ). Читая форумы по программированию, иногда натыкаешься на вопрос типа: "У меня есть откомпилированная программа на Delphi. Как мне получить её исходный код?". Обычно такой вопрос возникает, когда программист потерял файлы проекта и у него остался только. exe. Как правило полностью восстановить исходный код на языке высокого уровня невозможно. Значит ли это, что другие тоже не смогут восстановить исходный код Вашей программы.
Хм. и да и нет. Для начала сразу скажу, что восстановить исходный код в точности каким он был однозначно невозможно, так как не существует в мире такого декомпилятора, который бы смог сотворить такое. После компиляции и линковки проекта и получения исполняемого файла все имена, используемые в программе конвертируются в адреса. Потеря имён означет, что декомпилятор создаст уникальное имя для каждой константы, переменной, функции и процедуры. Даже если мы и достигнем какого-то успеха в декомпиляции исполняемого файла, то получим уже другой синтаксис программы. Данная проблема связана с тем, что при компиляции практически идентичные куски кода могут быть скомпилированы в разные последовательности машинных команд (ASM), которые присутствуют в. exe файле. Естевственно декомпилятор не обладает такой степенью интеллектуальности, чтобы решить - какова же была последовательность инструкций языка высокого уровня в исходном проекте. Когда же применяется декомпиляция. Для этого существует довольно много причин. Вот некторые из них:. - Восстановление исходного кода;. - Перенос приложения на другую платформу;. - Определение наличия вирусов в коде программы или вредоносного кода;. - Исправление ошибок в программе, в случае, если создатель приложения не собирается этого делать :). Легально ли всё это. Хотя декомпиляция и не является взломом, но утвердительно ответить на этот вопрос довольно сложно. Обычно программы защищены законом об авторских правах, однако в большинстве стран на декомпиляцию делается исключение. В часности, когда необходимо изменить интерфейс программы для конкретной страны, а сервис приложения не позволяет этого сделать. На данный момент Borland не предоставляет никаких программных продуктов, способных декомпилировать исполняемые файлы (. exe) либо откомпилированные Delphi-модули (. dcu) в исходный код (. pas). Если же Вы всё-таки решились попробовать декомпилировать исполняемый файл, то необходимо знать следующие вещи. Исходные коды на Delphi обычно хранятся в файлах двух типов: сам исходник в ASCII кодировке (. pas. dpr) и файлы ресурсов (. res. rc. dfm. dcr). Dfm файлы хранят в себе свойства объектов, содержащихся в форме. При создании конечного. exe, Delphi копирует в него информацию из. dfm файлов. Каждый раз, когда мы изменяем координаты формы, описания кнопок или связанные с ними события, то Delphi записывает эти изменения в. dfm (за исключением кода процедур. Он сохраняется в файлах pas/dcu ). И наконец, чтобы получить при декомпиляции файл. dfm, нужно знать - какие типы ресурсов хранятся внутри Win32 исполняемого модуля. Все программы, скомпилированные в Delphi имеют следующие секции: CODE, DATA, BSS. idata, tls. rdata. rsrc. Самые важные для декомпиляции секции CODE и. rsrc. В статье "Adding functionality to a Delphi program " приведены некоторые интересные факты о исполняемых форматах Delphi, а так же информация о классах и DFM ресурсах. В этой статье есть один интересный момент под заголовком: "Как добавить свой обработчик события в уже откомпилированный файл, например, чтобы изменять тект на кнопке". Среди многих типов ресурсов, которые сохранены в. exe файле, интерес представляет RT_RCDATA, который хранит информацию, которая были в DFM файле перед трансляцией. Чтобы извлеч DFM данные из. exe файла, мы можем вызываться API функцией EnumResourceNames. Исскуство декомпилирования традиционно было уделом мастеров, знакомых с ассемблером и отладчиками. Некоторые Delphi декомпиляторы создают впечатление, что любой, даже с ограниченными техническими знаниями, может изменить по своему желанию большинство исполняемых файлов Delphi. И в заключение, если Вы заинтересовались декомпилованием, то предлагаю Вам несколько Delphi декомпиляторов:. DeDe довольно шустрая программка, позволяющая анализировать экзешники, скомпилированные в Delphi. После декомпиляции DeDe даёт Вам следующее:. - Все dfm файлы. Вы сможете открывать их и редактировать в Delphi. - Все объявленные методы с хорошо комментированным кодом на ассемблере с ссылками на строки, импортированных функций, методов и компонент в юните, блоки Try-Except и Try-Finally. - Большое количество дополнительной информации. - Вы можете создать папку Delphi проекта со всеми файлами dfm, pas, dpr. Не забудьте, что pas файлы содержат ассемблерный код. Revendepro находит почти все структуры (классы, типы, процедуры, и т. ) в программе, и генерирует их паскальное представление, процедуры естевственно будут представлены на языке ассемблера. К сожалению, полученный ассемблерный код не может быть заново откомпилирован. Так же доступен исходник этого декомпилятора. К сожалению, этот декомпилятор не совсем рабочий - генерирует ошибку при декомпиляции.
0 Комментарии
Оставить ответ. |
АвторНапишите что-нибудь о себе. Не надо ничего особенного, просто общие данные. Архивы
Март 2019
Категории |