Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
vmp-devirt — 基于Trace辅助的VMProtect去虚拟化研究平台:各版本前端将处理程序提供给共享的Remill/LLVM后端,以提升处理程序、恢复数据流并生成原生对象。 | Kitploit
工具/GitHubGitHub/rasetsuu/vmp-devirt
静态分析动态分析 (沙盒)代码分析逆向工程调试器恶意软件分析实用工具与框架二进制分析论文与研究AI 辅助逆向二进制利用
541128320天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
rasetsuu/vmp-devirt

vmp-devirt

基于Trace辅助的VMProtect去虚拟化研究平台:各版本前端将处理程序提供给共享的Remill/LLVM后端,以提升处理程序、恢复数据流并生成原生对象。

查看仓库
分享

vmp-devirt

跟踪辅助的 VMProtect 反虚拟化研究:版本前端 (1.x 门控 / 2.x 表 / 3.x FDJ)馈入一个共享后端 (Remill 提升 → LLVM 优化 → 语义卡片 → 数据流 → 原生对象)。

已针对自建的 VMP 3.9.4 二进制文件在多种 保护模式下完成验证。VMP 3.8.x/3.10.x 兼容性为实验性且 依赖于样本。

范围与限制(请先阅读)

这是一个用于分析你拥有或获授权进行逆向工程的 VMProtect 保护二进制文件的研究平台——而非通用、 一键式的反虚拟化工具:

  • 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        legacy handler-type labels (oracle only, see module docs)
  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)。

环境

变量默认值含义
DATA_DIR./data所有工具产物
WATCH_FILE$DATA_DIR/watch.txt要监视的 fetch VA
CARDSopen_cards3.jsonRemill 卡片缓存文件
BIN_PATH目标二进制路径(工具默认:./target.exe 占位符)目标二进制
IAT_JSON—{api_name: iat_va} 导入桩映射
VMP_TEST_BIN / VMP_ORACLEtests/fixtures/…授权样本测试
REMILL_LIFTPATH 上的 remill-lift-22Remill lift 二进制
DEVIRT / FORCE_EDGE / REPO_ROOT./target/… / .脚本调用的二进制 + 仓库根目录
VMP_WORK_DIR系统临时目录lift 暂存目录
EFLAGS / IN_RET / DLL_MAIN—快照状态变体

方法(3.x,已验证的路径)

  1. 在 Unicorn 中从其入口点对二进制进行快照(节区 + 暂存区、零页 ret、导入桩、IN 钩子)。
  2. 通过执行而非操作码拼写来检测 fetch 点:观察哪个 reg 为已执行的字节加载提供输入,无论其助记符是什么。静态 movzx 模式仅作为回退种子——仅静态命中在加固目标上实测执行率为 0%。Fetch 形态覆盖:movzx ✓、movsx ✓(SMC 在运行中途在两者间切换;miner 两者都接受)、and 门控/co-byte fetch ✓ 通过实时捕获。实测偏差(3.9.4,devirt fetch 以 dispatch 为锚点的后向切片 vs 静态严格扫描):两者为不相交的群体——传感器发现了 8 个 fetch 形态的字节点,而模式+mov-imm32 门控从未提出(索引/缩放形式如 movzx edx,[r9+riz-1]),其中 1 个挖掘出已验证的链(Rol→Inc→Xor52→Ror,密钥 r10l);其余是 VM 上下文加载,miner 正确拒绝。其他形态(例如字符串操作):提供字节,获得一个 miner 用例——在 fetch 附近的操作码字节处提交 issue。模式锁定的 fetch 在此被记录为非方法。
  3. 从代码中按站点挖掘加密器(分支跟随工作列表)。
  4. 使用架构密钥寄存器解码 raw^key(自由扫描会过拟合——约束到挖掘出的密钥)。
  5. 通过 Remill 提升到达的处理程序,opt -O3,生成卡片/数据流,用 llc 重新编译(ld -r 证明可组合性)。

相关工作(借鉴了什么,有何不同)

  • VTIL(Can Bölük,BSD-3):表驱动的简化器规则作为线性子集移植到 synth(simplify_chain,代码中注明出处)。我们保留 Remill+LLVM 作为 lifter;不进行 IR 替换。
  • Pushan(无迹 VM 反混淆,在 3.5.0 上验证):我们的实时捕获架构回应了其静态区域所假设不存在的 SMC。借鉴:VPC 识别思路、S2/S3 风格的简化遍。
  • SATURN(Remill+LLVM+Souper 流水线):我们的后端遵循相同形态;将常量池和栈提亮思路移植为 devirt brighten(池在 3.9 上不触发——已记录)。
  • MBA-Blast(Liu 等,USENIX '21):Table-2 + Algorithm-1 移植为 backend/mba.rs(源自论文,无内置代码)。
  • Tigress(Collberg,亚利桑那):第二目标家族,非依赖项。学术/免费,我们的跨保护器对照组。

许可证

MIT(见 LICENSE)及依赖说明(特别是 Unicorn GPL-2.0)。仅限研究/教育用途,用于你拥有或可分析的二进制文件。

在 AI 辅助下构建(设计、代码、文档——人类指导,机器校验:docs/coverage.md 中的每个数字都可由其旁边的命令复现)。

下载工具