
Strumenti di deoffuscazione per VMProtect2
Questo repository è una raccolta di strumenti legacy per lavorare con binari protetti da VMProtect 2.
Questi strumenti permettono l'unpacking, l'analisi e la devirtualizzazione sperimentale di software protetto con VMProtect 2. Al centro di questa raccolta c'è vmprofiler, una libreria utility che fornisce la logica fondamentale utilizzata da tutti gli altri strumenti. È responsabile dell'identificazione dei componenti chiave di VMProtect 2 come VM handlers, la handler table, trasformazioni e altro.
Le lezioni apprese da questo progetto vecchio di oltre 4 anni dovrebbero essere trasmesse a chi è interessato alla devirtualizzazione.
Questo progetto tenta di identificare singoli VM handler. Questo approccio è fragile, non scala e può essere sconfitto da cambiamenti nell'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 VM. Strumenti come Saturn, Dna di 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 monito: evitate di costruire strumenti di devirtualizzazione che dipendono 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 load/store, la propagazione di costanti di sezione, 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à pulite di lift e lowering 1:1 che sfruttiamo per i nostri scopi di deoffuscazione. Se siete interessati a servizi di consulenza per la deoffuscazione, possiamo fornirli, purché la nostra agenda lo permetta.
vmemu
Uno strumento di esplorazione della macchina virtuale basato su Unicorn Engine.
Permette di unpackare 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ò poi 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 funzioni, è considerato altamente sperimentale e instabile, e questo approccio è generalmente sconsigliato.
vmassembler
Un assemblatore sperimentale per codificare operazioni della 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 fare hook nella macchina virtuale di VMProtect 2 in fase di esecuzione, consentendo un'introspezione dettagliata di .
Si prega di seguire le istruzioni in questa pagina.
vmhookConfigurazione per vmassembler, vmemu, vmprofiler e vmprofiler-cli:
cmake -B build
cmake --build build
Con vmdevirt (scaricerà 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 normativa 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 utility principale che alimenta tutti gli altri strumenti.
Include pattern matching per VM handler, estrazione della tabella degli handler, eliminazione del codice morto (DCE) e altre routine di analisi essenziali.
vmprofiler-cli
Una 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, fornendo un'esplorazione interattiva e visiva del codice virtualizzato.