
Desempacote e desofusque binários protegidos por VMProtect 2 com um explorador de VM baseado em emulação, profiler de handlers e recompilador experimental LLVM para desvirtualização.
Este repositório é uma coleção de ferramentas legadas para trabalhar com binários protegidos por VMProtect 2.
Estas ferramentas permitem desempacotamento, análise e desvirtualização experimental de software protegido com VMProtect 2. No centro desta coleção está vmprofiler, uma biblioteca utilitária que fornece a lógica fundamental usada por todas as outras ferramentas. Ela é responsável por identificar componentes‑chave do VMProtect 2, como handlers de VM, a tabela de handlers, transforms e muito mais.
As lições aprendidas com este projeto de mais de 4 anos devem ser transmitidas àqueles interessados em desvirtualização.
Este projeto tenta identificar handlers individuais de VM. Essa abordagem é frágil, não escala e pode ser derrotada por mudanças na arquitetura da máquina virtual (interligação de múltiplos handlers, handlers complexos, etc.). Em vez disso, defendo uma estratégia incremental de lifting e recuperação de fluxo de controle com o mínimo de lógica de desofuscação específica de VM. Ferramentas como Saturn, Dna by Colton, Triton e Mergen desofuscaram VMProtect com sucesso com pouca ou nenhuma identificação de handlers específicos de VM. Este repositório documenta a arquitetura do VMProtect 2 e serve como uma nota de advertência: evite criar ferramentas de desvirtualização que dependam fortemente da identificação de handlers específicos da máquina virtual.
Uma abordagem semi‑genérica para desvirtualização de VMProtect requer uma estrutura robusta que suporte propagação de load/store, propagação de constantes de seção, DCE e algumas outras otimizações simples. Muitas pessoas tentam usar LLVM para recompilar para código nativo; no entanto, acredito que essa abordagem sempre resultará em um resultado aquém do desejável. Temos nossa própria estrutura, blare2, que oferece capacidades limpas de lift e lowering 1:1 que aproveitamos para nossos propósitos de desofuscação. Se você estiver interessado em serviços de consultoria para desofuscação, isso é algo que podemos fornecer, desde que tenhamos agenda para oferecê‑lo.
vmemu
Uma ferramenta de exploração de máquina virtual baseada em Unicorn Engine.
Ela permite desempacotar programas protegidos e analisar o fluxo de controle dentro de um vmenter especificado.
Esta ferramenta gera um arquivo .vmp2 contendo o grafo de fluxo de controle da entrada de VM fornecida.
O arquivo .vmp2 resultante pode então ser passado para vmdevirt para recompilar a função de volta para x86 nativo e reintegrá‑la ao binário original. Observe que esta NÃO é apenas uma ferramenta de rastreamento simples que descobre apenas um único caminho através de uma função; ela realmente identifica jccs virtuais e explorará todo o fluxo de controle virtualizado.
vmdevirt
Um recompilador experimental baseado em LLVM para arquivos .vmp2.
Embora funcional, é considerado altamente experimental e instável, e essa abordagem geralmente não é recomendada.
vmassembler
Um montador experimental para codificar operações de máquina virtual definidas pelo usuário.
Este projeto demonstra um profundo entendimento técnico da arquitetura da máquina virtual do VMProtect 2.
vmhook
Uma ferramenta projetada para se conectar (hook) à máquina virtual do VMProtect 2 em tempo de execução, permitindo introspecção detalhada de .
Siga as instruções nesta página.
vmhookConfiguração para vmassembler, vmemu, vmprofiler e vmprofiler-cli:
cmake -B build
cmake --build build
Com vmdevirt (baixará e compilará o LLVM!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Com vmprofiler-qt:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
Ambos os módulos opcionais:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Estas ferramentas são fornecidas apenas para fins educacionais e de pesquisa. Elas não devem ser usadas para atividades ilegais, acesso não autorizado ou violações do DMCA ou de outras leis. As próprias ferramentas não violam nenhuma regulamentação do DMCA. Todo o trabalho é de minha criação original, e quaisquer ações tomadas pelos usuários dessas ferramentas são de responsabilidade exclusiva desses usuários e não refletem as ações ou intenções do autor.
vmprofiler
A biblioteca utilitária principal que alimenta todas as outras ferramentas.
Ela inclui correspondência de padrões de handlers de VM, extração da tabela de handlers, eliminação de código morto (DCE) e outras rotinas essenciais de análise.
vmprofiler-cli
Uma interface de linha de comando para vmprofiler, permitindo que usuários exibam e inspecionem informações extraídas em formato textual.
vmprofiler-qt
Um desmontador gráfico baseado em Qt para bytecode do VMProtect 2, fornecendo uma exploração interativa e visual do código virtualizado.