Анализ и реверс-инжиниринг VCL-приложений

DE Decompiler — профессиональная декомпиляция и анализ кода

Профессиональный декомпилятор для специалистов по компьютерной криминалистике, антивирусных аналитиков, отделов безопасности и разработчиков, исследующих нативное ПО, вредоносный код и потенциально нежелательную или скрытую функциональность.

Декомпилируйте VCL-приложения, написанные на Delphi 3–13 или созданные в C++Builder, для Win32 и Win64 в Delphi-подобный Pascal. Восстанавливайте поток управления, вызовы, формы, модули и классы по машинным инструкциям и доступным метаданным; переходите от событий VCL к их обработчикам.

Декомпилированный Delphi-подобный код и восстановленная структура проекта.
Декомпилированный Delphi-подобный код и восстановленная структура проекта.

Структура приложения

Найдите соответствующий модуль, класс и функцию.

Переходите от структуры приложения к реализации. Восстановленные объявления и базы знаний о RTTI конкретных версий компилятора помогут сориентироваться в приложении перед изучением отдельных процедур.

  • Модули и объявления

    Просматривайте распознанные модули и восстановленные объявления. Находите классы, поля и методы, относящиеся к исследуемой части приложения, и переходите к их коду, сохраняя контекст структуры проекта.

  • Классы и публичные функции

    Изучайте распознанные классы, методы и публичные функции в дереве проекта. Читайте восстановленные сигнатуры вместе с их телами, чтобы понять взаимодействие объектов и процедур.

  • Обнаружение приватных функций

    Эвристический анализ помогает находить приватные функции в каждом модуле и изучать реализацию за пределами распознанных публичных точек входа. Ссылки и машинные инструкции позволяют уточнить границы функции и её принадлежность к модулю.

  • RTTI разных поколений Delphi

    Базы знаний о RTTI разных версий Delphi обеспечивают распознавание приложений Delphi 3–13. Сохранившиеся в файле имена и типы дополняют листинг. Если исходные сведения утрачены, используются автоматически созданные идентификаторы и структуры данных, определённые косвенно.

Восстановленные объявления модулей и классов Delphi.
Восстановленные объявления модулей и классов Delphi.

Формы и события VCL

От интерфейса к реализации.

Просматривайте интерфейс VCL-приложения в конструкторе, работающем в режиме только для чтения. Сопоставляйте элементы управления, восстановленные свойства и события с реализующим их кодом.

Восстановленная форма VCL со свойствами компонентов и событиями.
Восстановленная форма VCL со свойствами компонентов и событиями.
  • Визуальный просмотр форм

    Просматривайте восстановленные формы и их элементы управления без запуска анализируемого приложения. Используйте визуальное расположение для выявления соответствующих элементов интерфейса и понимания контекста функции или подозрительного действия.

  • Компоненты и свойства

    Изучайте восстановленные свойства компонентов вместе с данными DFM. Сопоставляйте настройки элемента управления с его ролью в интерфейсе. Если нестандартный компонент или предполагаемый тип требует уточнения, обратитесь к данным формы.

  • События, связанные с кодом

    Переходите от восстановленных записей событий в визуализации формы к соответствующим обработчикам Delphi. Отслеживайте реализацию кнопки, команды меню или другого события без ручного поиска по всему списку процедур.

  • Экспорт проекта Delphi

    Сохраняйте восстановленные модули и формы как проект Delphi или экспортируйте объединенный листинг .pas для ознакомления. Модули используют расширение .pas, а определения форм — .dfm; экспортированный код требует ручного анализа и исправления перед использованием в IDE.

Нативная декомпиляция

Изучайте логику и её реализацию.

Читайте Delphi-подобные операторы, восстановленные из машинного кода и метаданных. Декомпилятор восстанавливает условия if, блоки case, циклы и вызовы, включая распознанные методы VCL. Для подробной проверки доступны дизассемблированный код и байты файла.

  • Поток управления и вызовы VCL

    Изучайте восстановленные условия, ветви case и циклы в окне декомпилятора. У распознанных вызовов VCL сохраняются имена методов. Если метод не распознан, вызов отображается без предполагаемого имени VCL.

  • Дизассемблирование и байты файла

    Сопоставляйте высокоуровневый листинг с машинными инструкциями Win32 или Win64 и данными HEX-редактора. В смешанном листинге восстановленные операторы расположены рядом с соответствующими инструкциями. Это помогает проверять аргументы, обращения к полям и переходы.

  • Поиск, ссылки и сохранение анализа

    Находите процедуры и текст в листинге, изучайте ссылки на строки и переходите по адресам. Сохраняйте базу анализа, чтобы продолжить исследование позже, или экспортируйте имена и адреса процедур для работы в других инструментах.

  • AI Helper и расширения

    Используйте AI Helper с Ollama или настроенным API-сервисом для улучшения уже восстановленного листинга. Общий SDK позволяет разрабатывать плагины под собственные задачи анализа. Сопоставляйте предложения ИИ с результатом нативной декомпиляции и машинными инструкциями.

Декомпиляция программы, написанной на Delphi: восстановленный поток управления и вызовы.
Декомпиляция программы, написанной на Delphi: восстановленный поток управления и вызовы.

Приложения, созданные в C++Builder

DE Decompiler поддерживает VCL-приложения, созданные в C++Builder, для Win32 и Win64. Доступны восстановление и визуализация форм, разбор модулей, классов и функций, переходы к обработчикам событий, а также остальные инструменты анализа и экспорта.

Баз знаний RTTI для библиотек, специфичных для C++Builder, пока нет. Функции вне общей базы VCL, а также нераспознанные свойства и методы объектов могут отображаться без библиотечных имён. Поэтому качество декомпиляции кода C++Builder заметно ниже, чем для программ, написанных на Delphi. Это ограничение касается качества восстановления кода и распознавания библиотечных имён. Остальные возможности доступны для C++Builder по тем же правилам редакций, что и для программ, написанных на Delphi.

Код C++Builder восстанавливается в виде Delphi-подобного Pascal с экспортом в PAS/DFM. Исходный текст на C++ не восстанавливается. Как и при другом восстановлении нативного кода, перед использованием результата в IDE вручную проверьте и исправьте предполагаемые типы, сгенерированные имена и погрешности декомпиляции.

Интерпретация нативной декомпиляции

Delphi-подобный код на основе исследуемого файла.

Полнота восстановленной информации зависит от машинных инструкций и метаданных, сохранившихся в файле. Машинный код не содержит исходного текста программы: имена переменных обычно генерируются автоматически, структуры данных могут определяться косвенно по размерам обращений к памяти и адресам, а для некоторых вызовов не удаётся восстановить исходные имена методов VCL.

DE Decompiler восстанавливает логику программы для анализа. Полученный Delphi-подобный код требует доработки и не является готовым к компиляции проектом. Восстановление исходного проекта — дополнительный сценарий использования: перед работой в IDE или попыткой сборки необходимо вручную проанализировать результат, уточнить предполагаемые типы, исправить неточности декомпиляции и восстановить недостающие зависимости.

Как интерпретировать результат → · Все возможности продукта →

Инструменты и ресурсы

Продолжайте исследование.

Документация на русском языке

Изучите быстрый старт и инструкции по анализу кода, просмотру форм VCL, экспорту, настройке обработки и работе с AI Helper.

Открыть руководство →

Обфускация Win32 и Win64

Используйте встроенный обфускатор при подготовке собственного Delphi приложения для распространения.

Как использовать обфускацию →

Изображения и плагины

FRX Image Viewer позволяет просматривать и экспортировать изображения зарегистрированных типов из DFM и отдельные значки распознанных нативных ImageList. Общий SDK поддерживает разработку расширений для анализа.

Просмотр изображений и загрузки →

Справочник SDK плагинов →

О разработчике и поддержке

DotFix Software разрабатывает программные инструменты с 2001. Узнайте об истории DE Decompiler и свяжитесь со службой технической поддержки.

О разработчике и продукте →