vmp-lazy-unpack README

The project's README from github.com/x86rc/vmp-lazy-unpack. As one markdown file: README.md.

vmp-lazy-unpack
@x86rc

An emulation-based unpacker and import resolver for Windows x64 VMProtect 3.x binaries.

The project started as a script used to unpack VMProtect 3 in our devirtualization pipeline. It does this without the need to attach a debugger or dump live.

How

The project uses Unicorn to emulate syscalls used by VMProtect's unpacker and import resolver.

Installation

py -m pip install -e .

For decent speeds its recommended to install Microsoft C++ Build Tools so the C helper is used. If not installed the unpacking falls back to purely python based hooks (slower).

Usage

For normal unpacking + import fixups run:

py -m unpack "C:\path\file.exe"

To fix imports on an already unpacked bin:

py -m unpack "C:\path\file.bin" --imports_only

Limitations


Want to chat about deobfuscation or reverse engineering?

Find us here too

vmp-lazy-unpack (x86rc/vmp-lazy-unpack)

Searching Database…

Что это?Это инструмент на Python, который автоматически распаковывает Windows x64-бинарники, защищённые VMProtect 3.x, и восстанавливает их таблицу импорта (IAT) — без отладчика и дампа живой памяти.
Это библиотека или отдельный скрипт, который я запускаю на бинарнике?Это консольный инструмент на основе скриптов, а не библиотека: вы указываете на защищённый бинарник, он эмулирует собственный анпакер VMProtect и системные вызовы с помощью Unicorn, а затем сбрасывает восстановленный процесс на диск.
Как распаковать бинарник этим инструментом?Запустите главный скрипт на исполняемом файле, упакованном VMProtect, чтобы за один проход распаковать его и починить импорты, либо запустите отдельный режим исправления импортов на уже распакованном бинарнике.
Что нужно установить перед запуском?Он полагается на движок эмуляции Unicorn; для большей скорости стоит также установить Microsoft C++ Build Tools, чтобы использовался скомпилированный C-хелпер вместо более медленных хуков на чистом Python.
Он справится с любым бинарником VMProtect и чего он не умеет?Он нацелен только на Windows x64-бинарники, проверен на VMProtect 3.4, 3.9 и 3.10, не девиртуализирует виртуализованный код и не разрешает автоматически внешние вызовы, сделанные изнутри виртуализованных функций.
Что такое VMProtect и почему его распаковка важна?VMProtect — это коммерческий обфускатор/виртуализатор для Windows-бинарников; его распаковка — необходимый первый шаг, прежде чем любой конвейер девиртуализации или дальнейшего реверс-инжиниринга сможет анализировать защищённый код.
Как он избегает подключения отладчика к цели?Он отображает целевой бинарник в симулируемый Windows-процесс и эмулирует его системные вызовы и вызовы API с помощью Unicorn, останавливаясь, когда выполнение доходит до восстановленного кода, поэтому живой отладчик или дамп памяти не нужны.
Что происходит с таблицей адресов импорта после распаковки?IAT восстанавливается из данных, собранных во время эмуляции, распознанные заглушки импортов патчатся, а таблицы исключений чинятся, прежде чем восстановленный процесс будет сброшен из памяти на диск.
Он восстанавливает вызовы изнутри виртуализованного кода?Да, импорты, вызываемые изнутри виртуализованных функций, всё равно восстанавливаются и добавляются в IAT, хотя сам виртуализованный код не девиртуализируется.
Creator
x86rc
Size
8 MB
Stars
407
Updated
CommitOct 15
Age
18d
Commits · 90 Days