Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vmp-devirt — Piattaforma di ricerca per la devirtualizzazione di VMProtect assistita da trace: i front-end delle versioni alimentano un backend condiviso Remill/LLVM per sollevare gli handler, recuperare il dataflow ed emettere oggetti nativi. | Kitploit
Strumenti/GitHubGitHub/rasetsuu/vmp-devirt
Analisi StaticaAnalisi Dinamica (Sandboxing)Analisi del CodiceReverse EngineeringDebuggerAnalisi MalwareUtilità e FrameworkAnalisi di BinariPaper e RicercaReverse Engineering Assistito dall'IABinary Exploitation
71 giorno faNon ancora revisionato
GitHubrasetsuu/vmp-devirt

vmp-devirt

Piattaforma di ricerca per la devirtualizzazione di VMProtect assistita da trace: i front-end delle versioni alimentano un backend condiviso Remill/LLVM per sollevare gli handler, recuperare il dataflow ed emettere oggetti nativi.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

vmp-devirt

Ricerca sulla devirtualizzazione di VMProtect assistita da trace: front-end per versione (gate 1.x / tabella 2.x / FDJ 3.x) che alimentano un unico backend condiviso (lift Remill → opt LLVM → card semantiche → dataflow → oggetti nativi).

Validato su binari VMP 3.9.4 compilati autonomamente attraverso molteplici modalità di protezione. La compatibilità con VMP 3.8.x/3.10.x è sperimentale e dipende dal campione.

Ambito e limitazioni (leggere prima)

Questa è una piattaforma di ricerca per analizzare binari protetti con VMProtect di cui si è proprietari o per cui si è autorizzati al reverse engineering — non un devirtualizzatore universale con un solo pulsante:

  • VMP 3.7+ richiede esecuzione: stream di fetch, chiavi e target degli handler provengono da snapshot Unicorn strumentati, non da analisi statica.
  • La copertura è legata alla trace: vengono recuperati solo i percorsi eseguiti. Esecuzioni multi-stato + merging dei branch la estendono; il recupero completo del CFG per target complessi rimane manuale.
  • L'anti-emulazione (gate temporali, trap I/O, controlli d'ambiente) richiede stub specifici per target — l'harness fornisce il meccanismo, voi fornite i valori.
  • I front-end VMP 1.x/2.x sono scanner euristici; i loro vecchi walker statici sono mantenuti come oracoli di cross-check, non come percorsi primari.

Struttura

src/
  lib.rs               crate root, data_dir()
  pe_loader.rs         PE parsing / VA reads
  opcode_map.rs        canonical 3.5.1 opcode -> handler map
  frontend/
    mod.rs             VmFrontend trait (detect/fetch_stream/handler_addrs)
    fetch_finder.rs    movzx-byte FDJ scan + watchset/snapshot helpers
    cryptor_miner.rs   per-site ValueCryptor mining (branch-following)
    site_emulator.rs   sample-specific oracle decoders (legacy)
    handler_classifier.rs  handler classification via legacy patterns
    classifier_legacy.rs   first-bytes patterns (weak; fallback only)
    v1_gate.rs         VMP 1.x gate-scan front-end
    v2_walker.rs       VMP 2.x dispatch-table front-end
    v3_fdj.rs          VMP 3.x FDJ front-end
  backend/
    value_cryptor.rs   ADD/SUB/XOR/ROL/ROR/NOT/NEG/... chains
    lifter.rs          iced-x86 text lift + Remill subprocess backend
    llvm_pipeline.rs   opt -O3 over Remill IR (real passes)
  harness/
    snapshot.rs        Unicorn snapshots: sections+scratch mapping,
                       IN hooks, import stubs, watch hits, memlog,
                       zero-slide fast-forward
tests/
  smoke.rs             synthetic PE64 + hand-built fetch chain (no fixtures)
tools/                 (analysis drivers; each documents its inputs)
scripts/               Triton/angr/Ghidra helpers (external deps)

Build

# Debian/Ubuntu (LLVM 22 for optional llvm feature)
sudo apt install llvm-22-dev libclang-22-dev clang-22
cargo build --release          # pure Rust (no LLVM link)
cargo build --release --features llvm   # llvm-sys link check
pip install triton-library capstone pefile   # python helpers
# Remill (optional lifter backend): build upstream, export REMILL_LIFT=<path>/remill-lift
# Souper (optional MBA superoptimizer): external only, wire its `souper` CLI
#   to scripts/triton_handlers.py output if desired; not vendored.

Il Dockerfile riproduce l'ambiente completo. La CI esegue cargo build/test --release (feature predefinite, nessun link LLVM, nessun fixture commerciale; i test sample-gated vengono saltati, tests/smoke.rs viene sempre eseguito). Il controllo opzionale di link --features llvm viene eseguito come job CI non bloccante (richiede LLVM 22).

Ambiente

VarDefaultSignificato
DATA_DIR./datatutti gli artefatti del tool
WATCH_FILE$DATA_DIR/watch.txtVA di fetch da monitorare
CARDSopen_cards3.jsonfile di cache delle card Remill
BIN_PATHpercorso del binario target (default dei tool: placeholder ./target.exe)binario target
IAT_JSON—mappa di import stub {api_name: iat_va}
VMP_TEST_BIN / VMP_ORACLEtests/fixtures/…test su campioni con licenza
REMILL_LIFTremill-lift-22 nel PATHbinario di lift Remill
DEVIRT / FORCE_EDGE / REPO_ROOT./target/… / .binari richiamati dagli script + root del repo
VMP_WORK_DIRtemp di sistemascratch del lift
EFLAGS / IN_RET / DLL_MAIN—varianti di stato dello snapshot

Metodo (3.x, il percorso collaudato)

  1. Snapshot del binario dal suo entry point in Unicorn (sezioni + scratch, ret a pagina zero, import stub, hook IN).
  2. Rilevamento dei siti di fetch (i movzx byte [reg] eseguiti battono i pattern statici — i riscontri solo-statici hanno misurato lo 0% di esecuzione su target hardened).
  3. Mining dei cryptor per sito dal codice (worklist con branch-following).
  4. Decodifica raw^key con il registro chiave architetturale (sweep liberi overfittano — vincolare alla chiave minata).
  5. Lift degli handler raggiunti via Remill, opt -O3, emissione di card/dataflow, ricompilazione con llc (ld -r prova la componibilità).

Licenza

MIT (vedi LICENSE) con note sulle dipendenze (in particolare Unicorn GPL-2.0). Solo per uso di ricerca/educativo, su binari di cui si è proprietari o che si è autorizzati ad analizzare.

Scarica lo strumento