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

Декомпиляция

Имеются следующие настройки декомпиляции:

VB Decompiler настройки декомпиляции

Опция Вывод служебных команд применяется исключительно для P-Code классического Visual Basic и позволяет также просматривать в декомпилированном листинге функции и команды, не несущие смысловой нагрузки, предназначенные для внутренних нужд компилятора и отладчика Visual Basic, но присутствующие в бинарном файле. Это вряд ли может пригодиться для анализа, но создает наиболее полную картину об исследуемой программе. В большинстве случаев рекомендуем отключать данную опцию.

Опция Обработать If ... End If блоки (Native Code) предназначена для конвертирования условных переходов внутри процедур в блоки If ... End If. Рекомендуем отключать данную опцию только в тех редких случаях, когда декомпилятор некорректно обрабатывает ту или иную процедуру. В остальных случаях данная функция должна быть всегда включена.

Обработка 'Else' блоков улучшает работу предыдущей опции. Декомпилятор эвристически пытается отличить вложенные If ... End If блоки и операторы GoTo от условных операторов Else. К сожалению этот функционал не может корректно работать в 100% случаев, потому мы сделали возможность отключать данную опцию вручную. В большинстве случаев, как и предыдущая опция, она должна быть включена.

Если у Вас включен режим Быстрая декомпиляция в Расширенных свойствах, то код декомпилируется только в момент открытия пользователем той или иной процедуры. Это накладывает ряд ограничений на качество декомпилированного кода. Декомпилятор в этом случае никогда заранее не знает прототипы той или иной процедуры или функции, если они не оставлены компилятором явно в бинарном файле. Для этих целей используется эвристический анализ кода каждой процедуры, на основе чего генерируется прототип. Этот прототип основан на предположениях сколько внутри кода обрабатывается аргументов и возвращает ли что либо рассматриваемая процедура (то бишь является функцией). К сожалению, не всегда удобно для этого отключать режим Быстрая декомпиляция, так как полная декомпиляция не только занимает очень много времени, но и в дальнейшем не позволяет нам менять опции на лету. И тут на помощь приходит опция Анализ прототипов. Она позволяет провести поверхностный эвристический анализ с включенной опцией Быстрая декомпиляция, основываясь только на машинном коде, что происходит быстрее и сохраняет возможность изменения опций на лету в дальнейшем.

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

VB Decompiler копировать в дизассемблер

VB Decompiler объединение декомпилированного и дизассемблированного кода