Назад к содержанию

Декомпиляция по адресу



В меню Утилиты содержится очень полезная функция - Декомпилировать по смещению. Главная особенность этой функции в том, что ей не требуется чтобы декомпилируемый файл имел корректную структуру и декомпилировался стандартными средствами.

Для декомпиляции того или иного куска кода в файле достаточно лишь указать виртуальный адрес этого кода (если речь идет о Native Code или о .NET сборке), либо ссылку на структуру ProcInfo (если речь идет о P-Code). Особенность работы с P-Code в том, что структура ProcInfo содержит в себе адрес массива данных, используемых кодом. Без этого массива невозможно определить с какими функциями работает код, на какие строки ссылается и так далее. В случае работы с .NET сборкой, после ввода адреса декомпилятор предложит на выбор либо декомпилировать код как MS IL псевдокод, либо дизассемблировать этот код. Данный выбор связан с тем, что .NET сборки могут содержать как псевдокод MS IL (managed код), так и машинный (так называемый unmanaged) код.

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

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