Трассировка исследуемого кода в VB Decompiler



После нескольких месяцев кропотливой работы мы рады представить новую, значительно переработанную версию VB Decompiler. На этот раз изменения коснулись главного - декомпиляции Native Code. Этого ждали многие и вот, наконец, после значительного рефакторинга кода появилась возможность значительно переработать и улучшить эмулятор. Теперь доступна частичная отладка программ, скомпилированных как в P-Code, так и в Native Code на встроенном эмуляторе без запуска программы на реальном процессоре!



VB Decompiler Native Code Tracer


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



VB Decompiler Tracer for Visual Basic Native Code files


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



VB Decompiler assembler code tracer


Данная функция к сожалению не входит в базовые лицензии на VB decompiler. Ввиду огромных затрат времени на реализацию описанных возможностей по отладке кода и крайне малого числа потенциальных пользователей - для использования трассировки потребуется приобретение отдельной лицензии.