Новости

Выпущен 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 26.7 со скриншотами

Скачать Free Lite 26.7

Выпущен 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 восстановленный нативный код необходимо вручную проверить и исправить.

Скачать Free Lite 26.6

Обновлённый справочник SDK

Выпущен 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. Локальным переменным присваиваются сгенерированные смысловые имена, если это подтверждается доступными данными.
    • Улучшена обработка знакового переполнения, беззнакового переноса и заёма, логических проверок, частей регистров, разрядности указателей и условий с коротким замыканием. Неопределённые типы и потоки данных остаются явными и не заменяются неподтверждёнными высокоуровневыми выражениями.
  • Строки, массивы и вызовы 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 или онлайн.

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

Скачать Free Lite

Архив выпусков (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

  • Первый публичный выпуск.