
Ferramentas de Desofuscação do VMProtect2
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 devirtualizaçã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 VM, a tabela de handlers, transformações e muito mais.
As lições aprendidas com este projeto de mais de 4 anos devem ser transmitidas para aqueles interessados em devirtualização.
Este projeto tenta identificar handlers VM individuais. 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 elevação (lifting) e recuperação de fluxo de controle com lógica mínima de desofuscação específica da VM. Ferramentas como Saturn, Dna by Colton, Triton e Mergen desofuscaram com sucesso o VMProtect com pouca ou nenhuma identificação de handlers específicos da VM. Este repositório documenta a arquitetura do VMProtect 2 e serve como uma nota de cautela: evite construir ferramentas de devirtualização que dependam fortemente da identificação de handlers específicos da máquina virtual.
Uma abordagem semigênica para devirtualização de VMProtect requer um framework robusto 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 compilar de volta para nativo; no entanto, acredito que essa abordagem sempre resultará em uma saída abaixo do ideal. Temos nosso próprio framework, blare2, que oferece capacidades de elevação (lift) e redução (lowering) 1:1 limpas, 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 disponibilidade de agenda.
vmemu
Uma ferramenta de exploração de máquina virtual baseada em Unicorn Engine.
Ela permite desempacotar programas protegidos e analisar fluxo de controle dentro de um vmenter especificado.
Esta ferramenta gera um arquivo .vmp2 contendo o grafo de fluxo de controle da entrada 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 no binário original. Por favor, note que esta NÃO é apenas uma ferramenta de rastreamento simples que descobrirá apenas um único caminho através de uma função; ela na verdade 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 esta 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 enganchar na máquina virtual do VMProtect 2 em tempo de execução, permitindo introspecção detalhada de .
Por favor, siga as instruções nesta página.
vmhookConfiguração para vmassembler, vmemu, vmprofiler e vmprofiler-cli:
cmake -B build
cmake --build build
Com vmdevirt (fará download 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 utilizadas para atividades ilegais, acesso não autorizado ou violações da DMCA ou outras leis. As próprias ferramentas não violam nenhuma regulamentação da DMCA. Todo o trabalho é de minha criação original, e quaisquer ações tomadas pelos usuários destas 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.
Inclui correspondência de padrões de handlers VM, extração de 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 os 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, proporcionando uma exploração interativa e visual do código virtualizado.