# Интерпретация восстановленного кода - DE Decompiler

> DE Decompiler восстанавливает Delphi-подобную логику программы из нативных инструкций и доступных метаданных. Детализация результата определяется информацией, сохранённой в бинарном файле.

Canonical HTML: <https://www.de-decompiler.com/help/ru/validation.htm>

## Интерпретация восстановленного кода

DE Decompiler восстанавливает Delphi-подобную логику программы из нативных инструкций и доступных метаданных. Детализация результата определяется информацией, сохранённой в бинарном файле.

### Что представляет собой высокоуровневый листинг

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

### Имена, структуры данных и вызовы

- **Имена переменных:** оригинальные локальные имена обычно отсутствуют в бинарном файле. Сгенерированные идентификаторы представляют восстановленные значения; присвоенные аналитиком имена могут прояснить их роль.

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

- **Вызовы:** распознанные методы VCL могут отображаться по имени. Вызов, который не удалось идентифицировать, может остаться вызовом метода или адреса без его оригинального VCL имени.

- **Вариации компилятора:** поколения компиляторов, библиотеки и оптимизация влияют на генерируемые машинные инструкции и метаданные. Специфичная для версии информация RTTI помогает в их интерпретации, однако выведенный тип или выражение все еще может требовать коррекции.

### Проверяйте существенные выводы

1. Определите точный бинарный файл, модуль, класс и процедуру, которые рассматриваются.

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

3. Исследуйте вызывающие объекты, подготовку аргументов, условные переходы и связанные строки.

4. Используйте HEX-редактор, когда инструкцию или восстановленное значение необходимо проверить по данным файла.

5. Фиксируйте то, что было замечено непосредственно, и то, что остается выведенной интерпретацией.

### Расследование безопасности

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

### Восстановление исходного кода

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

### Приложения, созданные в C++Builder

Баз знаний RTTI для библиотек, специфичных для C++Builder, пока нет. Функции вне общей базы VCL, а также нераспознанные свойства и методы объектов могут отображаться без библиотечных имён. Поэтому качество декомпиляции кода C++Builder заметно ниже, чем для программ, написанных на Delphi. Это ограничение касается качества восстановления кода и распознавания библиотечных имён. Остальные возможности доступны для C++Builder по тем же правилам редакций, что и для программ, написанных на Delphi.

Код C++Builder восстанавливается в виде Delphi-подобного Pascal с экспортом в PAS/DFM. Исходный текст на C++ не восстанавливается. Как и при другом восстановлении нативного кода, перед использованием результата в IDE вручную проверьте и исправьте предполагаемые типы, сгенерированные имена и погрешности декомпиляции.
