# DE Decompiler 26.7 — условия, строки и свойства VCL

> Что нового в DE Decompiler 26.7: восстановление условий и строк, свойства VCL, распознавание библиотек, анализ форм и кода работы с базами данных.

Canonical HTML: <https://www.dotfix.net/doc/de_decompiler_267.htm>

**Автор:** **Чубченко Сергей Георгиевич**. **Дата публикации:** 02.11.2026

## DE Decompiler 26.7: восстановление логики программ и анализ форм VCL

Вышел [DE Decompiler 26.7](https://www.dotfix.net/de_decompiler.htm). Главное направление этого выпуска — более точное восстановление логики программы из машинного кода с сохранением связей между значениями, ветвлениями и вызовами. Улучшены обработка условий, восстановление строковых результатов, унаследованных свойств и аргументов функций. Повышены точность распознавания библиотек и стабильность анализа.

DE Decompiler предназначен для антивирусных аналитиков, экспертов по компьютерной криминалистике, сотрудников отделов безопасности и разработчиков программного обеспечения. Он помогает исследовать VCL-приложения Win32 и Win64, написанные на Delphi или созданные в C++Builder: изучать их логику, искать скрытую или потенциально нежелательную функциональность, сопоставлять интерфейс с реализацией. Восстановленные формы, модули, классы и функции связаны с Delphi-подобным Pascal-кодом, дизассемблированными инструкциями и байтами файла. Ниже рассмотрены ключевые изменения версии 26.7 и возможности исследования программ, появившиеся в последних выпусках.

### Условия, ветвления и возвращаемые значения функций

Скомпилированная процедура может выбирать значение в нескольких ветвях, сохранять его и использовать значительно позже. При восстановлении такой последовательности важно отличать сохранённый результат от последующих вычислений. В версии 26.7 точнее обрабатываются условия, которые зависят от значений, выбранных в трёх и более ветвях. В восстановленном коде остаётся меньше неопределённых промежуточных значений.

Улучшен разбор общих участков возврата из функции, досрочного выхода и общих блоков обработки ошибок. Возвращаемые значения сохраняются при выполнении завершающих операций очистки. Значение, присвоенное в одной ветви, не подставляется в другую ветвь, где этого присваивания не было. Надёжнее восстанавливаются вызовы, которые раньше могли пропускаться в логических условиях и вложенных ветвлениях.

Порядок вызовов особенно важен, если вычисление выражения изменяет состояние программы. Если функция была вызвана один раз, а её результат используется повторно, листинг должен сохранять эту последовательность. В версии 26.7 улучшена обработка таких результатов: один вызов не превращается в несколько, в том числе при выборе значений и в условиях циклов. Проверки типа объекта и приведения с проверкой типа во время выполнения в большем числе случаев представляются операторами `is` и `as`, с сохранением необходимых проверок и исключений.

СветлаяТёмная

[![Восстановленный код обработчика события: строки, условия, свойства элементов управления и вызов метода VCL.](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_code_decompilation.png)](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_code_decompilation.png)
Восстановленный код обработчика события: строки, условия, свойства элементов управления и вызов метода VCL.

### Строковые результаты, свойства и библиотечные вызовы

Вызов через нераспознанный указатель на функцию может изменять выходные параметры, переданные через стек. Версия 26.7 точнее обрабатывает строки и другие выходные значения в таких случаях. Неполная информация о сигнатуре больше не приводит к подстановке устаревшего начального значения или ошибочной пустой строки в последующее сравнение.

Отдельное внимание уделено унаследованным свойствам VCL. Больше вызовов методов записи свойств восстанавливается в виде присваиваний, например свойствам `Text` и `Caption`. При чтении свойства сохраняется уже полученный строковый результат вместо повторного обращения к нему. Если подпрограмму нельзя достоверно распознать как метод доступа к свойству, в листинге остаётся вызов с его аргументами и возвращаемым значением.

Точнее различаются одноимённые классы из разных библиотек, быстрее распознаются унаследованные библиотечные методы, уменьшается число неоднозначных совпадений. Ускорена загрузка баз знаний о библиотеках и повышена стабильность чтения небольших баз.

### Разрядность значений, преобразования и стабильность анализа

Улучшено определение размеров локальных переменных и счётчиков, точнее сохраняются особенности 8- и 16-битной арифметики. Корректнее обрабатываются знаковые и беззнаковые целочисленные преобразования, в том числе для 64-битных значений. При преобразованиях логических значений сохраняются исходная разрядность и нестандартные представления `True`. Повторное использование локальных переменных реже приводит к ошибочным подстановкам или повторным чтениям памяти.

Круглые числовые константы выводятся в десятичной записи там, где это уместно. Распознанные адреса и битовые маски остаются шестнадцатеричными. Так обычные числовые значения легче читать, а представление адресов и масок сохраняет связь с машинным кодом.

Устранены сбои при анализе процедур со встроенными данными или необычными инструкциями возврата. Улучшена работа со стеком при нестандартных соглашениях о вызовах и исправлены ошибки переполнения во время анализа машинного кода. Некорректные описания API-вызовов больше не приводят к чрезмерному выделению памяти; нераспознанные аргументы сохраняются в результате декомпиляции.

### От восстановленной формы VCL к обработчикам событий

В предыдущих выпусках существенно расширены возможности визуального анализа. DE Decompiler читает текстовые и двоичные ресурсы DFM и восстанавливает визуальное представление поддерживаемых форм VCL. Меню, вкладки, панели инструментов, списки и другие поддерживаемые элементы отображаются с текстом, свойствами и расположением, сохранёнными в ресурсах. Для этого не требуется запускать исследуемую программу или загружать классы её компонентов.

Можно выбрать элемент управления, изучить его восстановленные свойства и перейти к обработчику события. Представление DFM в текстовом виде поддерживает подсветку синтаксиса, сворачивание блоков, поиск и историю переходов. Поддержка ряда компонентов AlphaSkins и TMS позволяет исследовать интерфейсы большего числа приложений. Плагин FRX Image Viewer извлекает графику форм и отдельные значки из распознанных списков ImageList.

СветлаяТёмная

[![Восстановленная форма в режиме просмотра, дерево проекта и свойства выбранного элемента управления.](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_forms_visualizer.png)](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_forms_visualizer.png)
Восстановленная форма в режиме просмотра, дерево проекта и свойства выбранного элемента управления.

### Исследование логики приложения и кода работы с базой данных

Дерево проекта группирует восстановленный код по модулям, классам и процедурам. Наряду с обработчиками форм можно изучать публичные функции и эвристически найденные приватные подпрограммы. Поиск процедур, ссылки на строки и переходы по адресам помогают связать видимую функцию приложения с её реализацией. Дизассемблер и HEX-редактор позволяют проверить соответствующие машинные инструкции и байты файла.

Практический пример — исследование кода, который работает с базой данных. На скриншоте ниже видны проверка наличия файла, свойства компонентов подключения и запроса, строка SQL и условие, использующее количество записей результата запроса. Эти сведения восстановлены из двоичного файла приложения. Декомпилятор при этом не подключается к базе данных и не получает её содержимое.

Результат можно сохранить в виде модулей Pascal, файлов DFM, проекта Delphi или единого листинга Pascal. Базы анализа VDD позволяют сохранить восстановленную структуру и переименованные символы, чтобы продолжить исследование позднее. Общий [SDK плагинов](https://www.de-decompiler.com/plugins_sdk_rus.htm) позволяет создавать собственные инструменты, в том числе с переходами по виртуальным адресам и пометками функций.

СветлаяТёмная

[![Код приложения со свойствами подключения, текстом SQL и условием по количеству записей результата запроса.](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)](https://www.dotfix.net/images/doc/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)
Код приложения со свойствами подключения, текстом SQL и условием по количеству записей результата запроса.

### Программы, написанные на Delphi или созданные в C++Builder

DE Decompiler поддерживает VCL-приложения для Win32 и Win64, написанные на Delphi 3–13. Для VCL-приложений, созданных в C++Builder, также доступны восстановление и визуализация форм, разбор модулей, классов и функций, переходы к обработчикам событий и остальные средства анализа на тех же лицензионных условиях. Для обеих групп программ код представляется на Delphi-подобном Pascal и экспортируется в PAS/DFM.

Для программ, написанных на Delphi, объём распознаваемой библиотечной информации шире. Базы знаний RTTI для специфичных библиотек C++Builder пока не подготовлены, поэтому вызовы, свойства и методы за пределами распознанных возможностей VCL могут получать сгенерированные имена. Это влияет на качество восстановления кода, а не на доступность остальных средств анализа приложений, созданных в C++Builder.

Полнота восстановления определяется инструкциями и метаданными, сохранившимися в исполняемом файле. Исходные имена локальных переменных не восстанавливаются. Типы и структуры данных определяются по доступным метаданным и эвристически — по размерам и обращениям в машинном коде. Нераспознанные вызовы получают сгенерированные имена. В восстановленном коде могут оставаться неточности; перед использованием результата в IDE необходимы ручной анализ и исправления.

### Попробуйте DE Decompiler 26.7

Бесплатная Lite позволяет изучать формы VCL, дизассемблированный машинный код и ссылки на строки. Коммерческая лицензия добавляет высокоуровневую декомпиляцию в Pascal и остальные лицензируемые инструменты. Скачайте актуальную версию и оцените работу с вашими файлами. Подробности использования и полный список изменений приведены в справке и новостях.

[Скачать бесплатную Lite 26.7](https://www.de-decompiler.com/files/de_decompiler_lite.zip) · [Все изменения версии 26.7](https://www.de-decompiler.com/news_rus.htm#release-267) · [Справка](https://www.de-decompiler.com/documentation_rus.htm) · [Лицензии и цены](https://www.dotfix.net/de_decompiler_license.htm)

© Чубченко Сергей Георгиевич, разработчик [DE Decompiler](https://www.dotfix.net/de_decompiler.htm)
