Совместимость компиляторов и RTTI

DE Decompiler распознаёт версии компилятора Delphi с 3 по 13 и поддерживает VCL-приложения, созданные в C++Builder, для Win32 и Win64.

Версии компилятора и восстановленные типы

Версии Delphi различаются структурой исполняемых файлов и форматом RTTI — информации о типах времени выполнения. Для интерпретации этих различий DE Decompiler использует знания о типах, соответствующие версии компилятора. Распознанная версия компилятора не гарантирует одинакового качества восстановления всех типов, библиотечного кода и процедур.

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

Определение компилятора и базы сигнатур

C++Builder и Free Pascal определяются отдельно от Delphi. Сведения о компиляторе остаются корректными при использовании совместимой базы сигнатур и после загрузки сохранённого проекта. Длинные названия и диапазоны версий помещаются в поле главного окна; полные сведения доступны в подсказке.

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

В коммерческих версиях DE Decompiler выбирает базу из каталога de: сначала для точной версии компилятора, затем для ближайшей более новой и, если её нет, для ближайшей более старой версии той же разрядности. Имена файлов имеют вид vcl<version>.bin или vcl<version> x64.bin.

Звездочка (*) обозначает использование заменяющей базы или базы, соответствие которой не удалось установить с достаточной уверенностью. Наведите указатель на название компилятора, чтобы увидеть имя выбранного BIN-файла. Маркер относится к подбору базы и сам по себе не означает, что файл невозможно проанализировать. Базы сигнатур доступны в коммерческих версиях.

Приложения, созданные в 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 вручную проверьте и исправьте предполагаемые типы, сгенерированные имена и погрешности декомпиляции.

Приватные функции

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

Формы VCL

Рабочий процесс визуальных форм применяется к формам и элементам управления VCL, восстановленным из входных файлов Win32 и Win64.

Сообщение о проблеме совместимости

DE Decompiler постоянно развивается, а качество декомпиляции улучшается по мере совершенствования поддержки компиляторов, распознавания типов и реконструкции кода.

Если вы хотите сообщить о конкретной проблеме, отправьте двоичный файл, воспроизводящий ошибку, и укажите форму или функцию, в которой она возникает. Включите ее имя и, для функции, ее адрес (если доступен), вместе с версией сборки DE Decompiler и описанием ошибки. См. Техническая поддержка для контактных данных.