Параметры декомпиляции

При декомпиляции нативного кода Delphi-подобный Pascal восстанавливается по машинным инструкциям и доступным метаданным. Эти параметры обработки применимы к поддерживаемым программам, написанным на Delphi или созданным в C++Builder.

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

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

Элементы управления обработкой декомпиляции.
Элементы управления обработкой декомпиляции.

Выражения Delphi и операции времени выполнения

Распознанный поток управления включает if/else, case, for, while и repeat/until, с Break и Continue где нативные ветви устанавливают свое значение.

Доступные данные RTTI, метаданные классов и сигнатуры поддерживают поля объектов, свойства, виртуальные методы, вызовы VCL и импортированные вызовы Windows API. Общие операции RTL могут быть представлены как выражения строк Delphi, Length, Copy, Delete, Insert, изменение размера массива и индексация, доступ к Variant-массивам и TextFile операции ввода.

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

Параметры стека и оптимизация

«Парсить парам. из стека» (Parse stack parameters) способствует реконструкции вызовов и выражений высокого уровня. «Анализ и оптимизация кода» (Procedure analyzer and optimizer) упрощает распознавание паттернов выражений и потока управления. Сравнивайте полученный листинг с отключенными элементами управления, если выражение или ветвление неясны.

Обработка потока управления

«Обработать If ... End If блоки (Native Code)» (Process If ... End If blocks (Native Code)) реконструирует распознанные условные переходы в высокоуровневые условные блоки. «Обработка 'Else' блоков» (Process 'Else' blocks) добавляет эвристики для ветвей Else и требует обработки блоков If. Сравнивайте эти элементы управления включенными и выключенными при расследовании неоднозначного ветвления.

Прототипы и адреса

«Анализ прототипов» (Analyze prototypes) выполняет предварительный эвристический анализ аргументов процедур и возвращаемых значений. Это полезно в режиме быстрой декомпиляции, когда для частных функций отсутствует явная метаданных сигнатуры. Этот анализ требует дополнительного начального времени обработки. Проверяйте выведенные сигнатуры по вызывающим объектам и нативным инструкциям, если они влияют на вывод анализа.

«Добавлять адреса» (Add Addresses) сохраняет виртуальные адреса в высокоуровневом листинге для сравнения и навигации. Оставьте его включенным для «Скопировать в дизассемблер» (Copy to disassembler). Дизассемблер отображает адреса независимо от данной настройки.

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