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

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

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

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

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

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

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