# DE Decompiler 26.7: более точное восстановление кода нативных приложений

> DE Decompiler 26.7: точнее восстановление условий, строк, свойств и вызовов. Обзор анализа нативного кода и визуализации VCL-форм со скриншотами.

Canonical HTML: <https://www.de-decompiler.com/de_decompiler_267_rus.htm>

## DE Decompiler 26.7: более точное восстановление кода нативных приложений

2 ноября 2026 года

Вышел DE Decompiler 26.7. Основное направление этого выпуска — восстановление читаемой логики нативной программы с сохранением связей между значениями, ветвлениями и вызовами. Повышена точность восстановления условий, строковых значений, унаследованных свойств и аргументов функций. Также улучшены распознавание библиотек и стабильность анализа.

DE Decompiler — профессиональный инструмент для специалистов по реверс-инжинирингу, компьютерной криминалистике, анализу вредоносного ПО, сотрудников отделов безопасности и разработчиков. Он предназначен для исследования VCL-приложений Win32 и Win64, написанных на Delphi или созданных в C++Builder, и связывает восстановленные формы, модули, классы и функции с Delphi-подобным Pascal-кодом, дизассемблированными инструкциями и байтами файла. В статье рассмотрим ключевые изменения 26.7 и возможности анализа, появившиеся в последних выпусках.

### Условия, ветвления и возвращаемые значения функций

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

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

Порядок вызовов особенно важен, если вычисление выражения меняет состояние программы. Улучшенная обработка повторно используемых возвращаемых значений предотвращает появление нескольких вызовов вместо одного, в том числе при выборе значений и в условиях циклов. Проверки типа объекта и приведения с проверкой типа во время выполнения чаще отображаются выражениями `is` и `as` с сохранением необходимых проверок и исключений.

[![Восстановленный код обработчика события: строки, условия, свойства элементов управления и вызов метода VCL в контексте процедуры.](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_code_decompilation.png)](https://www.de-decompiler.com/image/articles/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 позволяет исследовать интерфейсы большего числа реальных приложений. Плагин просмотра изображений извлекает графику форм и отдельные значки из распознанных нативных ImageList.

[![Восстановленная форма в режиме просмотра, дерево проекта и свойства выбранного элемента.](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_forms_visualizer.png)](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_forms_visualizer.png)
Восстановленная форма в режиме просмотра, дерево проекта и свойства выбранного элемента.

### Исследование логики приложения и кода работы с базой данных

Дерево проекта группирует восстановленный код по модулям, классам и процедурам. Наряду с обработчиками форм доступны публичные функции и эвристически найденные приватные подпрограммы. Поиск процедур, ссылки на строки и переходы по адресам помогают связать элемент интерфейса с реализующим его кодом. Дизассемблер и HEX-редактор позволяют проверить соответствующие инструкции и байты.

Практический пример — код взаимодействия с базой данных. На скриншоте ниже видны проверка наличия файла, свойства компонентов подключения и запроса, строка SQL и условие с использованием количества записей. Всё это восстановлено из бинарного файла приложения. Такое представление не подключается к базе данных и не получает её содержимое.

Результат можно сохранить в виде модулей Pascal, файлов DFM, проекта Delphi или единого листинга Pascal. Базы анализа VDD сохраняют восстановленную структуру и изменённые имена символов для дальнейшего исследования. Общий SDK позволяет создавать собственные плагины, в том числе с переходами по виртуальному адресу и пометками функций.

[![Код приложения со свойствами подключения, текстом SQL и условием по количеству записей результата запроса.](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)](https://www.de-decompiler.com/image/articles/de_decompiler_267/de_decompiler_267_sql_db_decompilation.png)
Код приложения со свойствами подключения, текстом SQL и условием по количеству записей результата запроса.

### Программы, написанные на Delphi и созданные в C++Builder

DE Decompiler поддерживает VCL-приложения, написанные на Delphi 3–13, для Win32 и Win64. Для VCL-приложений C++Builder также доступны восстановление и визуализация форм, анализ модулей, классов и функций, переходы к обработчикам событий и остальные поддерживаемые инструменты на тех же лицензионных условиях. Код обоих семейств отображается в виде Delphi-подобного Pascal и экспортируется в PAS/DFM.

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

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

### Попробуйте DE Decompiler 26.7

В Free Lite доступны просмотр VCL-форм, дизассемблирование нативного кода и ссылки на строки. Коммерческие лицензии добавляют декомпиляцию в высокоуровневый Pascal-код и остальные лицензируемые инструменты. Скачайте актуальный выпуск для исследования приложения; подробности работы и полный список изменений приведены в справке и новостях.

[Скачать Free Lite 26.7](https://www.de-decompiler.com/download_rus.htm) · [Все изменения 26.7](https://www.de-decompiler.com/news_rus.htm#release-267) · [Открыть справку](https://www.de-decompiler.com/help/ru/index.htm) · [Лицензии и цены](https://www.de-decompiler.com/order_rus.htm)

2 ноября 2026 года

© Чубченко Сергей Георгиевич, основной разработчик [DE Decompiler](https://www.de-decompiler.com/main_rus.htm)
