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

Главное окно программы

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

VB Decompiler стиль окна как в Visual Studio

Особенно следует отметить элементы панели инструментов. Над деревом объектом располагаются две кнопки со стрелками, для перехода вперед и назад по истории просмотра функций (появляются после открытия двух и более функций), название внутреннего формата файла и два режима декомпиляции: Парсить парам. из стека и Анализ и оптимизация кода. Остановимся на каждом из этих элементов поподробнее.

Кнопки со стрелками < и > служат для перемещения по истории открытия функций. Переходя с одной функции декомпилированной программы на другую порой бывает полезно вернуться на предыдущую функцию, а потом перейти обратно. Для этих целей VB Decompiler ведет историю просмотра функций и после открытия двух и более функций появляются кнопки навигации. Эти кнопки также запоминают переходы через комбинацию клавиш Ctrl + G, а также через соответствующий пункт меню Перейти на виртуальный адрес.

Далее идет название внутреннего формата файла. Если быть точнее, это тип кода, в который скомпилирована программа. Этот тип напрямую влияет на качество декомпиляции и степень приближенности результатов к исходному коду. На данный момент поддерживаются следующие типы форматов: P-Code, Native Code, .NET Assembly. Более подробно обо всех этих типах можно прочитать в разделе Описание.

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

Для P-Code файлов Парсить парам. из стека включает сворачивание операций со стеком, превращая команды вроде:

push var_b push Rnd call %x1(%x2)

в более понятное:

call Rnd(var_b)

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

Для Native Code при отключении режима Парсить парам. из стека выводится код на языке Assembler (так называемый машинный код). С включенным режимом код обрабатывается эмулятором и преобразуется в более понятный для чтения (когда Assembler код приводится к коду, максимально приближенному к коду на Visual Basic).

Режим Анализ и оптимизация кода включает глубокую оптимизацию полученного листинга. Объединяются разрозненные блоки команд, очищаются неиспользуемые переменные и служебные конструкции. Код становится более близок к исходному. Этот режим работает аналогично для P-Code и Native Code.

Для .NET Assmbly на данный момент изменение режимов работает подобно P-Code только псевдокод MS IL код приводится к коду, максимально приближенному к коду на C#.

Со временем эти функции будут дорабатываться и улучшаться.