Новости
Выпущен DE Decompiler v26.7
В DE Decompiler 26.7 улучшено восстановление нативного кода программ, написанных на Delphi: условий, строк, свойств, аргументов и порядка вычислений. Также улучшены распознавание библиотек, загрузка баз данных и стабильность анализа.
- Улучшено восстановление условий со значениями, выбираемыми в трёх и более ветвях: в Delphi-подобном коде остаётся меньше неопределённых промежуточных значений.
- В сравнения строк больше не подставляются устаревшие начальные значения после вызовов, выходные параметры которых ещё не удалось полностью определить.
- Точнее учитываются строковые и другие значения выходных параметров при косвенных вызовах с передачей параметров через стек, когда сигнатура вызова ещё не определена. Это устраняет ложные пустые строки и константные условия в большем числе процедур.
- Круглые числовые константы теперь отображаются в десятичной системе там, где это уместно; распознанные адреса и битовые маски сохраняют шестнадцатеричную запись.
- Точнее различаются одноимённые классы из разных библиотек Delphi. Наследуемые библиотечные методы распознаются быстрее, неоднозначных совпадений стало меньше.
- Ускорена загрузка баз данных библиотек Delphi и повышена стабильность чтения небольших баз.
- Улучшено восстановление размеров локальных переменных и счётчиков. Точнее сохраняется арифметика с 8- и 16-битными значениями.
- Надёжнее восстанавливаются вычисленные значения при повторном использовании локальных переменных: устранены ошибочные подстановки и повторные чтения памяти.
- Надёжнее восстанавливаются унаследованные свойства классов Delphi. Посторонние методы с совпадающими именами сохраняются как обычные вызовы.
- Точнее восстанавливаются вызовы библиотек Delphi: параметры и возвращаемые значения сохраняются, если подпрограмму нельзя достоверно представить обращением к свойству.
- Точнее восстанавливается чтение свойств Delphi, включая наследуемые Text и Caption. Полученные строковые значения сохраняются без повторного обращения к свойству.
- Точнее восстанавливаются целочисленные вычисления после знаковых и беззнаковых преобразований, с сохранением 64-битной арифметики и значений, выбираемых в разных ветвях.
- Улучшено восстановление значений, выбираемых в нескольких ветвях. Сохранённые результаты больше не смешиваются с последующими вычислениями.
- Больше вызовов методов записи свойств элементов управления Delphi восстанавливается в виде присваиваний, включая наследуемые свойства Text и Caption.
- Улучшено восстановление проверок типа объекта, результат которых сохраняется перед использованием. Логические выражения сохраняются без повторного выполнения исходных проверок.
- Сохраняются возвращаемые значения функций на путях досрочного выхода, в том числе в общих блоках возврата и в коде очистки, к которому ведут разные ветви.
- Вызовы функций в восстановленных выражениях выбора значения теперь выполняются однократно, с сохранением исходных побочных эффектов.
- Исправлен разбор входа в подпрограммы с общими блоками обработки ошибок. Значения из отдельных ветвей больше не используются на путях, где им ничего не присваивалось.
- Восстановлены пропущенные вызовы функций в логических условиях и вложенных ветвях. Добавлены недостающие объявления для значений, восстановленных при разборе ветвлений.
- Предотвращено чрезмерное выделение памяти при анализе некорректных описаний API-вызовов. Неопределённые аргументы сохраняются, а не пропускаются.
- Надёжнее восстанавливается порядок вычислений при использовании возвращаемых значений функций и в условиях циклов. Вызовы сохраняются при наличии промежуточных операций, в восстановленных циклах устраняются неинициализированные значения.
- Проверки типа объекта и приведения с проверкой типа во время выполнения чаще отображаются выражениями is/as, с сохранением необходимых проверок и исключений.
- Улучшена обработка результатов функций, несколько раз используемых в одном выражении: в восстановленном коде не появляются повторные вызовы.
- Точнее восстанавливаются параметры функций при ветвлениях: возвращены пропущенные аргументы, исключено использование значений из недостижимого кода.
- Устранены зависания при анализе нативных процедур со встроенными данными или необычными инструкциями возврата. При этом сохраняются аргументы, переданные через стек.
- Улучшена обработка стека при нестандартных соглашениях о вызовах; предотвращены ошибки переполнения во время анализа нативного кода.
- Исправлены объявления локальных переменных после логических преобразований: сохраняются исходный размер хранения и нестандартные значения True.
Выпущен DE Decompiler v26.6
DE Decompiler 26.6 расширяет поддержку VCL-приложений, созданных в C++Builder, улучшает восстановление нативного кода, отзывчивость интерфейса и визуализацию форм. В SDK добавлены команды навигации и работы с отметками функций.
- C++Builder и определение компилятора
- Для VCL-приложений C++Builder поддерживаются восстановление и визуализация форм, разбор модулей, классов и функций, переходы к обработчикам событий и остальные инструменты анализа. Восстановленный код выводится в виде Delphi-подобного Pascal и экспортируется в PAS/DFM, а не в виде исходного C++.
- Баз знаний RTTI для библиотек, специфичных для C++Builder, пока нет. Функции вне общей базы VCL, а также нераспознанные свойства и методы объектов могут отображаться без библиотечных имён. Поэтому качество декомпиляции кода C++Builder заметно ниже, чем для программ, написанных на Delphi. Это ограничение касается качества восстановления кода и распознавания библиотечных имён. Остальные возможности доступны для C++Builder по тем же правилам редакций, что и для программ, написанных на Delphi.
- C++Builder и Free Pascal определяются отдельно от Delphi. Сведения о компиляторе остаются корректными при использовании совместимой базы сигнатур и после загрузки сохранённого проекта. Длинные названия и диапазоны версий помещаются в поле главного окна; полные сведения доступны в подсказке.
- В коде C++Builder понятнее представлены операции со строковыми объектами, точнее восстанавливаются выходные параметры и реже встречаются служебные конструкции обработки исключений среди операторов программы.
- Типы, вызовы и свойства
- Улучшены типы строковых переменных во вложенных конкатенациях, локальных переменных после явных числовых и символьных преобразований, а также результатов функций: целых со знаком и без знака, символов, строк и типов хранения логических значений. Частичное чтение указателя на динамический массив больше не представляется как обращение ко всему массиву.
- Исправлена обработка целых размером с указатель, параметров по ссылке, типов хранения логических значений и присваиваний типизированным свойствам. Сведения о классах помогают точнее восстанавливать аргументы и результаты виртуальных методов, включая var/out и строковые результаты. Улучшены типы и аргументы библиотечных вызовов и вызовов через обёртки, в том числе с параметрами по умолчанию.
- Точнее восстанавливаются типы сохранённых результатов чтения свойств, включая классы объектов и типы хранения логических значений. Сохраняются необходимые вызовы геттеров и порядок вычислений. При повторном использовании результата устраняются повторные вызовы геттера без потери преобразований. Улучшена обработка наследуемых свойств и общих аксессоров; при неоднозначном имени сохраняется вызов метода.
- Исправлено распознавание RTL-хелперов: посторонние методы больше не подменяются, а следующий за ними код не пропускается. Совпадение машинного кода разных библиотечных функций не приводит к выбору неподтверждённого имени или типа результата. Внешние API отделяются от одноимённых хелперов среды выполнения.
- Строки и файловые операции
- Точнее восстанавливаются AssignFile, Write и WriteLn с сохранением кодировок, явно заданных кодовых страниц, нулевых символов и ширины полей. Цепочки записи в текстовый файл и изменения полей файловых записей больше не приводят к повторным вызовам или использованию устаревших значений. Улучшены проверки конца бинарного файла.
- Улучшено восстановление длины строк по указателям, строковых буферов с явно заданной длиной, инициализации памяти, присваиваний и конкатенации ShortString. Точнее обрабатываются копирование с ограничением длины, встроенные нулевые байты и строковые поля внутри структур.
- Улучшены сравнения содержимого строк и восстановление аргументов после вызовов: стало меньше ложных константных условий и лишних параметров. Строковые результаты, возвращаемые через параметры, больше не смешиваются с записями, содержащими строковые поля.
- Поток управления и машинные инструкции
- Исправлены обращения к переменным в циклах, повторное использование результатов функций и запись через указатели. Изменение данных по указателю больше не показывается как изменение самого указателя. В коде стало меньше неразрешённых имён регистров и повторяющихся выражений вызова.
- Улучшены знаковые сравнения у границ диапазона целых, отрицательные константы и условия арифметического переполнения. В сложных условиях и переходах к общим путям возврата сохраняется порядок вызовов и присваиваний без повторных вызовов и неверных возвращаемых значений.
- Исправлено декодирование редких случаев 16-битной адресации памяти и префиксов замены сегмента в 32-битных приложениях.
- Скорость, память и сохранённый анализ
- Ускорена и стабилизирована обработка глубоко вложенных выражений и процедур с многократным использованием результатов функций и свойств. Сложные процедуры открываются быстрее, уменьшены начальные задержки в проектах с большим числом форм и классов, ускорено переключение между процедурами.
- Обновлённые сигнатуры функций учитываются в последующих вызовах. Анализ обновляется после изменения файла, загрузки сохранённого проекта и правок через плагины. Оптимизировано хранение данных с сохранением совместимости с существующими базами.
- HEX-редактор использует меньше памяти при работе с большими файлами, сохраняя редактирование, отмену и повтор правок, а также сохранение. Снижено потребление памяти при поиске форм, классов и ветвей кода, анализе нативного кода и загрузке сигнатур. Исправлена утечка памяти при неудачном сохранении состояния анализа.
- Улучшена обработка неполных таблиц запуска и ссылок на строки у конца исполняемого файла. Ссылки на строки сохраняются после полной декомпиляции в Pro и Lite. Повторное открытие сохранённой процедуры в Lite больше не оставляет пустой дизассемблер; переходы по ссылкам выбирают правильное представление кода.
- Визуализация форм VCL
- Улучшена визуализация поддерживаемых компонентов TMS: надписей, кнопок, списков, групп, ползунков, полос прокрутки и вкладок. Точнее сохраняются текст и расположение. Индикаторы активности показываются статически, а встроенные веб-области обозначаются без загрузки страниц.
- Служебные компоненты изменения формы окна и списки изображений больше не перекрывают содержимое формы. Прозрачный фон ползунков больше не отображается чёрным.
- SDK плагинов
- Плагины могут определять открытую форму, модуль, класс или процедуру через GetDisplayedTreeItem (65), читать и менять отметки функций через GetModuleFunctionMark (66) и SetModuleFunctionMark (67), а также искать функции по виртуальному адресу через FindModuleFunctionByVA (68). GetModuleFunctionVA (69) возвращает полный виртуальный адрес, включая 64-битный. Существующие сигнатуры callback и номера команд сохранены.
- Отмена операций и справка
- Улучшена отмена открытия больших приложений, поиска классов, чтения форм и полной декомпиляции. После запроса отмены дальнейшая обработка процедур прекращается; неполный результат полной декомпиляции по-прежнему отбрасывается.
- При отмене необязательного анализа прототипов разобранный файл остаётся открытым, а уже найденные прототипы, API и строки сохраняются. Незавершённые отчёты не выводятся; после прерывания восстанавливаются параметры декодирования.
- Если справка на выбранном языке отсутствует, DE Decompiler открывает английский PDF или сайт. Если локальный PDF или CHM открыть не удаётся, используется соответствующая онлайн-документация.
Перед использованием в IDE восстановленный нативный код необходимо вручную проверить и исправить.
Выпущен DE Decompiler v26.5
DE Decompiler возвращается в открытую продажу с нативным анализом VCL-приложений Delphi 3–13 для Win32 и Win64. В версии 26.5 представлены следующие возможности и улучшения.
- Обновлённые переводы интерфейса
- Обновлены переводы интерфейса на арабский, бразильский португальский, упрощённый и традиционный китайский, чешский, датский, нидерландский, английский, французский, немецкий, греческий, иврит, индонезийский, итальянский, японский, курдский (сорани), персидский, польский, португальский, русский, словацкий, испанский, турецкий и украинский языки.
- Нативный код Delphi и поток управления
- Движок декомпиляции программ, написанных на Delphi, для Win32/Win64 восстанавливает условия
if/else, вложенные блоки case, циклыfor/while/repeatи распознанные переходыBreak/Continue. Локальным переменным присваиваются сгенерированные смысловые имена, если это подтверждается доступными данными. - Улучшена обработка знакового переполнения, беззнакового переноса и заёма, логических проверок, частей регистров, разрядности указателей и условий с коротким замыканием. Неопределённые типы и потоки данных остаются явными и не заменяются неподтверждёнными высокоуровневыми выражениями.
- Движок декомпиляции программ, написанных на Delphi, для Win32/Win64 восстанавливает условия
- Строки, массивы и вызовы RTL
- Улучшено восстановление результатов
AnsiString,UnicodeStringиWideString, параметров по ссылке и скрытых областей возврата с сохранением порядка вызовов и побочных эффектов. - Распознанные операции RTL представляются выражениями и операторами Delphi:
Length,Copy,Delete,Insert,SetLength, конкатенация, индексация динамических массивов, массивы Variant и операцииTextFile. При неоднозначной сигнатуре сохраняется низкоуровневое представление.
- Улучшено восстановление результатов
- RTTI, вызовы VCL и базы сигнатур
- Поля объектов, свойства, виртуальные методы и вызовы VCL восстанавливаются по метаданным файла и базам сигнатур. Полные цепочки наследования помогают различать совпадающие имена классов; при разборе Windows API учитываются соглашения о вызовах Win32/Win64.
- Определение компилятора не зависит от выбора базы. Коммерческие версии сначала ищут точную базу, затем ближайшую более новую и ближайшую более старую той же разрядности. Звёздочка и подсказка обозначают заменяющую базу или неопределённое соответствие. Базы сигнатур охватывают в том числе Delphi 12.3 и Delphi 13.
- Формы VCL, исходный DFM и переходы к событиям
- Визуальное восстановление сохраняет поддерживаемые меню, страницы, списки, сетки, кнопки панелей инструментов, свойства, шрифты и наследуемые цвета. Поддерживаемые компоненты AlphaSkins отображаются через аналоги VCL с сохранением исходных имён классов DFM.
- Исходный текст DFM доступен с подсветкой синтаксиса, сворачиванием блоков, поиском и копированием. Переходите от восстановленных элементов управления и событий меню к обработчикам; история восстанавливает выделение, вкладки и прокрутку формы. Код отрисовки и событий исследуемого приложения не выполняется.
- Изображения и общий SDK плагинов
- Плагины получают исходные изображения DFM в форматах BMP, PNG, JPEG, GIF, ICO и CUR с сохранением альфа-канала PNG и прозрачности GIF. FRX Image Viewer показывает и экспортирует отдельные значки распознанных нативных ImageList Delphi, включая маски и альфа-прозрачность.
- DE Decompiler 26.5 поддерживает ревизию общего SDK 26.6, включая
GetFrxImageListInfo(63) иGetProductName(64). Имена экспортируемых функций и идентификаторы существующих команд сохраняют совместимость.
- Структура проекта, поиск и бинарные представления
- Дерево группирует код как «Модуль → Класс → Процедура». Фильтры пользовательских классов и VCL, эвристический поиск приватных функций и поиск полных имён процедур помогают находить код приложения. Служебные классы анонимных методов скрыты в обычном дереве и раскрываются при явном переходе.
- Поиск, переименование и ссылки учитывают регистронезависимые идентификаторы Pascal и свёрнутый код. Переходы между кодом и дизассемблером, а также HEX-редактор сохраняют полные адреса Win64. В Free Lite доступны ссылки на строки с переходом к дизассемблированному коду.
- Экспорт, отмена операций и сохранённый анализ
- Экспортируйте модули PAS в UTF-8, отдельные DFM, проект Delphi или объединённый листинг PAS. Списки процедур поддерживают TXT, MAP, IDC и HIEW с полными адресами Win64. Экспорт IDC учитывает новую базу загрузки и сохраняет существующие инструкции и данные IDA.
- Начальный анализ, экспорт и сохранение VDD можно отменить между процедурами. Существующие файлы заменяются только после полной записи; уже завершённые файлы многофайлового экспорта сохраняются при отмене. VDD содержит ресурсы, переименованные символы и кэшированный нативный код для просмотра без исходного EXE; для ещё не декомпилированных процедур нужен соответствующий бинарный файл.
- AI Helper, обфускация и удобство работы
- AI Helper передаёт полные процедуры, включая свёрнутый текст, в Ollama или настроенный API-сервис OpenAI/DeepSeek. Улучшены отмена запросов и обработка состояния проекта при активной AI-задаче. Для локальных моделей требуется совместимое оборудование.
- Обфускация Win32/Win64 создаёт резервную копию и перестраивает анализ после сохранения, предусматривая восстановление при сбое. Повторное использование декодированных инструкций и состояния баз сокращает лишнюю обработку. Улучшены выбор языка и темы, список недавних файлов и открытие локализованной справки в PDF, CHM или онлайн.
Высокоуровневый код восстанавливается из машинных инструкций и сведений, сохранившихся в бинарном файле. Проверяйте восстановленные типы, сгенерированные имена и нераспознанные вызовы с учётом соответствующего машинного кода. Интерпретация восстановленного кода.
Архив выпусков (2007–2008)
Изменения в первых публичных версиях до перезапуска продукта в 2026 году.
Выпущен DE Decompiler v2.0
- Добавлена поддержка декомпиляции приложений, скомпилированных в Delphi 2007.
- Значительно улучшена эмуляция кода.
- Исправлены все известные ошибки.
Выпущен DE Decompiler v1.4
- Улучшено обнаружение упаковщиков.
- Улучшено определение приложений, скомпилированных в Delphi 6.
- Улучшена эмуляция кода.
- Исправлена эмуляция переходов назад для плагина ShowRef.
- «Decompile for VA» теперь поддерживает приложения, написанные на Delphi.
- Обновлён распаковщик.
- Добавлен плагин для изменения приоритета процесса декомпилятора.
- В обфускатор добавлена поддержка приложений, созданных в C++Builder.
- Обфускатор теперь обрабатывает дополнительные поля.
- Исправлена очистка стека перед разбором процедуры.
- Исправлен разбор пользовательских классов при отсутствии поля компонентов.
Выпущен DE Decompiler v1.3
- Исправлены ошибки разбора пользовательских классов.
- Исправлены ошибки разбора форм.
Выпущен DE Decompiler v1.2
- Исправлены ошибки разбора форм.
Выпущен DE Decompiler v1.1
- Добавлена справка на немецком языке.
- Исправлены ошибки в режиме декомпиляции.
Выпущен DE Decompiler v1.0
- Первый публичный выпуск.