После нескольких месяцев кропотливой работы мы рады представить новую, значительно переработанную версию VB Decompiler. На этот раз изменения коснулись главного - декомпиляции Native Code. Этого ждали многие и вот, наконец, после значительного рефакторинга кода появилась возможность значительно переработать и улучшить эмулятор. Теперь доступна частичная отладка программ, скомпилированных как в P-Code, так и в Native Code на встроенном эмуляторе без запуска программы на реальном процессоре!
Трассировка (или если точнее пошаговая эмуляция) представляет из себя возможность приостановить эмуляцию на каждой строке ассемблерного кода с возможностью просмотра регистров процессора и сопроцессора, содержимого стэка и переменных. Ввиду того что код обрабатывается эмулятором и не запускается на реальном процессоре, данная функция будет весьма полезна вирусным аналитикам для исследования вредоносных программ в антивирусных лабораториях.
Теперь пара слов о некоторых нюансах реализации. Трассировка возможна только отдельно взятой функции, при этом эмулятор считает, что на момент обработки этой функции стэк, регистры и переменные пусты. На данный момент хоть и поддерживается огромное число команд процессора Intel x86, все же остаются команды, не поддерживаемые эмулятором, которые просто пропускаются при трассировке. Также трассировщик не отображает изменение флагов. В текущей реализации флаги влияют только на обработку cmp и jcc команд. Заход во внешние функции не поддерживается, при этом корректно обрабатываются как stdcall так и cdecl вызовы с соответствующей корректировкой стэка по sub esp, XX и add esp, XX. Также пока возможна только трассировка вперед, без зацикливания внутри циклов, равно как и без прыжков через команды. В остальном инструмент очень близок к обычной трассировке и весьма удобен в использовании (поддерживается продолжение и отмена трассировки с клавиатуры, без использования мыши).
Данная функция к сожалению не входит в базовые лицензии на VB decompiler. Ввиду огромных затрат времени на реализацию описанных возможностей по отладке кода и крайне малого числа потенциальных пользователей - для использования трассировки потребуется приобретение отдельной лицензии.