Просмотр и сравнение кода

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

Следование по листингу

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

Восстановленные тела могут быть заключены в обёртки комментариев Pascal для экспорта. DE Decompiler по-прежнему рассматривает эти тела как код для подсветки идентификаторов, поиска ссылок и переименования. Строковые литералы и обычные комментарии остаются исключёнными из совпадений ссылок на код.

Идентификаторы и навигация по коду

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

Дважды щёлкните по распознанному вызову процедуры, чтобы открыть вызываемую процедуру. Константы, похожие на адреса, могут привести к соответствующим байтам файла в HEX-редакторе. Используйте Esc, стрелки истории или кнопки мыши «Назад» и «Вперёд», чтобы вернуться.

Синхронизация адресов

Переключение между Декомпилятором и Дизассемблером следует текущему адресу курсора, включая полные Win64 адреса. Если отсутствует метка идентичной инструкции, выбирается ближайший доступный адрес. Открываются только свёртки, содержащие пункт назначения.

Смешанные представления высокого уровня и нативного кода

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

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

Ссылки и имена

Используйте «Найти ссылки» (Find references) на процедуре, выбранной в дереве, или нажмите X, чтобы просмотреть распознанные вызывающие объекты. Дважды щёлкните по результату для анализа вызывающего объекта. Поиск ссылок требует полной обработки: отключите «Быстрая декомпиляция» (Fast decompilation) и повторно откройте входные данные, если будет предложено. Список ссылок на основе не декодированных кэшированных тел является неполным. В представлении кода установите курсор на глобальную переменную и нажмите X для поиска её ссылок. Косвенные или динамически разрешаемые использования могут отсутствовать в списке распознанных ссылок.

Используйте «Переименовать переменную» (Rename variable) или N для присвоения осмысленного имени анализа. Имена подчиняются правилам идентификаторов Pascal. Переименование с учётом совпадений нечувствительно к регистру и проверяет коллизии с параметрами, локальными объявлениями и зарезервированными ключевыми словами. «Отменить переименование» (Undo renaming) или Ctrl+Shift+Z отменяет переименование переменной независимо от обычного отмены редактирования текста. Сохраняйте имена, присвоенные аналитиком, отличными от оригинальных имён, сохранённых в бинарном файле.

Клавиатурный доступ

ФокусСочетание клавишДействие
КодDОбъедините восстановленный листинг с дизассемблированием.
КодNПереименовать выбранную переменную.
КодCtrl+Shift+ZОтменить переименование переменной.
КодXНайти ссылки на глобальную переменную под курсором.
ДеревоXНайти ссылки на выбранную процедуру.
ДеревоGПереход по пути раздела.
ДеревоCtrl+CСкопировать полный путь к выбранному объекту в дереве.
ДеревоПробел или InsertОтметить или снять отметку с выбранного элемента.
ПредставленияAlt+1Переключить фокус между деревом и активным представлением.
ИсторияEscВернуться к предыдущей процедуре.

Однобуквенные сочетания зависят от клавиатурного фокуса. Они не заменяют обычное вводе текста в полях ввода.