Современные решения

для защиты Windows приложений

и восстановления исходного кода
Автор: Сергей Чубченко. Дата публикации: 10.06.2019

Трассировка исследуемого кода в 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. Ввиду огромных затрат времени на реализацию описанных возможностей по отладке кода и крайне малого числа потенциальных пользователей - для использования трассировки потребуется приобретение отдельной лицензии. VB Decompiler Коммерческая лицензия с поддержкой трассировки уже доступна к приобретению.



(C) Сергей Чубченко, разработчик VB Decompiler