
Spacchetta e deoffusca binari protetti da VMProtect 2 con un esploratore di VM basato su emulazione, un profiler di handler e un ricompilatore LLVM sperimentale per la devirtualizzazione.
Questo repository è una raccolta di strumenti legacy per lavorare con binari protetti da VMProtect 2.
Questi strumenti consentono l'unpacking, l'analisi e la devirtualizzazione sperimentale di software protetti con VMProtect 2. Al centro di questa raccolta c'è vmprofiler, una libreria di utilità che fornisce la logica fondamentale utilizzata da tutti gli altri strumenti. È responsabile dell'identificazione dei componenti chiave di VMProtect 2 come VM handler, la handler table, i transforms e altro.
Le lezioni apprese da questo progetto di oltre 4 anni dovrebbero essere trasmesse a coloro che sono interessati alla devirtualizzazione.
Questo progetto tenta di identificare i singoli VM handler. Questo approccio è fragile, non scala e può essere sconfitto da modifiche all'architettura della macchina virtuale (interconnessione di più handler, handler complessi, ecc.). Invece, sostengo una strategia di lifting incrementale e recupero del flusso di controllo con una logica di deoffuscazione minima specifica per la VM. Strumenti come Saturn, Dna by Colton, Triton e Mergen hanno deoffuscato con successo VMProtect con poca o nessuna identificazione di handler specifici della VM. Questo repository documenta l'architettura di VMProtect 2 e funge da nota di cautela: evita di costruire strumenti di devirtualizzazione che dipendano fortemente dall'identificazione di handler specifici della macchina virtuale.
Un approccio semi-generico alla devirtualizzazione di VMProtect richiede un framework robusto che supporti la propagazione di load/store, la propagazione di costanti di sezione, la DCE e una manciata di altre semplici ottimizzazioni. Molte persone tentano di usare LLVM per ricompilare in codice nativo; tuttavia, credo che questo approccio produrrà sempre un output non ottimale. Abbiamo il nostro framework, blare2, che offre capacità di lift e lowering pulite 1:1 che sfruttiamo per i nostri scopi di deoffuscazione. Se sei interessato a servizi di consulenza per la deoffuscazione, possiamo fornirli purché abbiamo spazio in agenda.
vmemu
Uno strumento di esplorazione della macchina virtuale basato su Unicorn Engine.
Consente di effettuare l'unpacking di programmi protetti e analizzare il flusso di controllo all'interno di un vmenter specificato.
Questo strumento genera un file .vmp2 contenente il grafo di flusso di controllo del dato punto di ingresso VM.
Il file .vmp2 risultante può quindi essere passato a vmdevirt per ricompilare la funzione in x86 nativo e reintegrarla nel binario originale. Si noti che questo NON è un semplice tracer che scopre solo un singolo percorso attraverso una funzione: identifica effettivamente i jcc virtuali ed esplora tutto il flusso di controllo virtualizzato.
vmdevirt
Un ricompilatore sperimentale basato su LLVM per file .vmp2.
Sebbene funzionante, è considerato altamente sperimentale e instabile, e questo approccio è generalmente sconsigliato.
vmassembler
Un assembler sperimentale per codificare operazioni di macchina virtuale definite dall'utente.
Questo progetto dimostra una profonda comprensione tecnica dell'architettura della macchina virtuale di VMProtect 2.
vmhook
Uno strumento progettato per agganciarsi alla macchina virtuale di VMProtect 2 in fase di esecuzione, consentendo un'ispezione dettagliata dei .
Segui le istruzioni in questa pagina.
vmhookConfigurazione per vmassembler, vmemu, vmprofiler e vmprofiler-cli:
cmake -B build
cmake --build build
Con vmdevirt (scaricherà e compilerà LLVM!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Con vmprofiler-qt:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
Entrambi i moduli opzionali:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
Questi strumenti sono forniti esclusivamente a scopo educativo e di ricerca. Non devono essere utilizzati per attività illegali, accessi non autorizzati o violazioni del DMCA o di altre leggi. Gli strumenti stessi non violano alcuna norma del DMCA. Tutto il lavoro è una mia creazione originale, e qualsiasi azione intrapresa dagli utenti di questi strumenti è di esclusiva responsabilità di tali utenti e non riflette le azioni o le intenzioni dell'autore.
vmprofiler
La libreria di utilità principale che alimenta tutti gli altri strumenti.
Include il pattern matching dei VM handler, l'estrazione della tabella degli handler, l'eliminazione del codice morto (DCE) e altre routine di analisi essenziali.
vmprofiler-cli
Un'interfaccia a riga di comando per vmprofiler, che consente agli utenti di visualizzare e ispezionare le informazioni estratte in formato testuale.
vmprofiler-qt
Un disassemblatore grafico basato su Qt per il bytecode di VMProtect 2, che offre un'esplorazione interattiva e visiva del codice virtualizzato.