Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
vmp-devirt — VMProtectのdevirtualization研究を支援するトレースベースのプラットフォーム:バージョン別フロントエンドが共有のRemill/LLVMバックエンドにハンドラを渡し、データフローを復元してネイティブオブジェクトを出力します。 | Kitploit
ツール/GitHubGitHub/rasetsuu/vmp-devirt
静的分析動的分析 (サンドボックス)コード分析リバースエンジニアリングデバッガマルウェア分析ユーティリティとフレームワークバイナリ解析論文と研究AI支援リバースエンジニアリングバイナリエクスプロイト
111日前未レビュー
GitHub
rasetsuu/vmp-devirt

vmp-devirt

VMProtectのdevirtualization研究を支援するトレースベースのプラットフォーム:バージョン別フロントエンドが共有のRemill/LLVMバックエンドにハンドラを渡し、データフローを復元してネイティブオブジェクトを出力します。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

vmp-devirt

トレース支援によるVMProtect devirtualization研究:バージョン別フロントエンド (1.xゲート / 2.xテーブル / 3.x FDJ)が単一の共有バックエンド (Remill lift → LLVM opt → セマンティックカード → データフロー → ネイティブオブジェクト)に供給する。

複数の保護モードにわたる自作VMP 3.9.4バイナリに対して検証済み。 VMP 3.8.x/3.10.xの互換性は実験的であり、サンプル依存である。

適用範囲と制限(最初にお読みください)

これはあなたが所有する、またはリバースエンジニアリングを許諾されているVMProtect保護バイナリを解析するための研究プラットフォームであり、万能のプッシュボタン式devirtualizerではない:

  • VMP 3.7+は実行を必要とする:フェッチストリーム、キー、ハンドラターゲットは 計装されたUnicornスナップショットから取得され、静的解析からではない。
  • カバレッジはトレースに束縛される:実行されたパスのみが復元される。 マルチステート実行+分岐マージで拡張できるが、複雑なターゲットに対する プログラム全体のCFG復元は依然として手動である。
  • アンチエミュレーション(タイミングゲート、I/Oトラップ、環境チェック)には ターゲットごとのスタブが必要 — ハーネスは仕組みを提供し、値はあなたが提供する。
  • VMP 1.x/2.xフロントエンドはヒューリスティックスキャナであり、その古い静的 ウォーカーはクロスチェック用オラクルとして保持されており、主要パスではない。

レイアウト

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)

ビルド

# 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.

Dockerfileは完全な環境を再現する。CIはcargo build/test --releaseを実行する (デフォルト機能、LLVMリンクなし、商用フィクスチャなし;サンプルゲート付き テストはスキップ、tests/smoke.rsは常に実行)。オプションの--features llvm リンクチェックは非ブロッキングのCIジョブとして実行される(LLVM 22が必要)。

環境

VarDefaultMeaning
DATA_DIR./dataall tool artifacts
WATCH_FILE$DATA_DIR/watch.txtfetch VAs to watch
CARDSopen_cards3.jsonRemill card cache file
BIN_PATHtarget binary path (tools default: ./target.exe placeholder)target binary
IAT_JSON—{api_name: iat_va} import stub map
VMP_TEST_BIN / VMP_ORACLEtests/fixtures/…licensed-sample tests
REMILL_LIFTremill-lift-22 on PATHRemill lift binary
DEVIRT / FORCE_EDGE / REPO_ROOT./target/… / .script-called binaries + repo root
VMP_WORK_DIRsystem templift scratch
EFLAGS / IN_RET / DLL_MAIN—snapshot state variants

手法(3.x、実証済みのパス)

  1. Unicorn内のエントリからバイナリをスナップショットする(セクション+スクラッチ、 ゼロページret、インポートスタブ、INフック)。
  2. フェッチサイトを検出する(実行されたmovzx byte [reg]が静的パターンを 上回る — 静的のみのヒットは堅牢化されたターゲットで実行率0%と測定された)。
  3. コードからサイトごとのクリプタをマイニングする(分岐追従ワークリスト)。
  4. アーキテクチャ上のキーレジスタでraw^keyをデコードする(自由なスイープは 過学習する — マイニングされたキーに制約する)。
  5. 到達したハンドラをRemill経由でリフトし、opt -O3を実行し、カード/データフローを 出力し、llcで再コンパイルする(ld -rが合成可能性を証明する)。

ライセンス

MIT(LICENSEを参照)、依存関係の注記付き(特にUnicorn GPL-2.0)。 研究/教育目的のみ、あなたが所有するか解析可能なバイナリに対してのみ。

ツールをダウンロード