Skip to main content

devirtualization-vmp

去虚化 / VMP 虚拟化加固分析方法论(供安全研究/自有应用)。当 native 代码被 VMP 类虚拟机保护(真实指令被转成自定义字节码 + 解释器执行)导致完全看不到原始逻辑时,用于识别 VM 结构、分析 handler、还原字节码到 ARM/x86 汇编。涵盖 VM dispatcher/handler 识别、handler 语义提取、字节码还原流程。

Source facts

Repository
xiamiya/mHook
Last source activity
August 6, 2026 at 10:08
Detected SKILL.md language
Chinese
Stars
85
Forks
21

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
devirtualization-vmp
description
去虚化 / VMP 虚拟化加固分析方法论(供安全研究/自有应用)。当 native 代码被 VMP 类虚拟机保护(真实指令被转成自定义字节码 + 解释器执行)导致完全看不到原始逻辑时,用于识别 VM 结构、分析 handler、还原字节码到 ARM/x86 汇编。涵盖 VM dispatcher/handler 识别、handler 语义提取、字节码还原流程。
# 去虚化 · VMP 虚拟化加固分析 VMP 是最强的加固之一:把真实机器指令翻译成**自定义字节码**,运行时用一个**解释器(VM)**逐条解释执行。你在 IDA 里只看到 VM 循环,看不到原始逻辑。去虚化就是把它还原回来。 ## 一、VMP 的结构(先认清) ``` VM 入口 → 初始化 VM 上下文(虚拟寄存器/栈) ↓ 分发器 Dispatcher: 取下一条字节码 → 查 handler 表 → 跳对应 handler ↓ Handler[0]: 实现某个虚拟操作(如 vAdd/vLoad/vJmp) → 回到分发器 Handler[1]: ... ``` 关键三要素:**VM 上下文**(虚拟寄存器)、**分发器**(取指+派发)、**handler 表**(每条虚拟指令的实现)。 ## 二、去虚化流程 1. **定位 VM 入口和分发器**:找那个"取字节码→大跳转表/间接跳转→循环"的结构。 2. **dump 字节码**:找到 VM 执行的字节码数组(handler 表地址、字节码起始)。 3. **分析每个 handler 的语义**:逐个 handler 看它对虚拟寄存器/栈做什么,翻译成一句话("这个 handler = 把虚拟栈顶两个数相加")。 - 这步最费时,可配合 **符号执行(Miasm/Triton)** 自动提取 handler 语义。 4. **建立字节码→操作映射**:把每个字节码 opcode 对应到还原的操作。 5. **写转换脚本**:遍历字节码,按映射翻译回 ARM/x86 伪汇编或伪代码。 6. **优化输出**:消除 VM 开销(虚拟寄存器读写),得到接近原始的逻辑。 ## 三、工具与方法 - **手工 + IDA**:小函数、单个 VM,人工分析 handler - **Miasm/Triton 符号执行**:自动提取 handler 语义(见 static-symbolic-execution),VMP 去虚化的主力 - **已知 VMP 变种**:先搜有没有现成的去虚化脚本/工具(不同 VMP 实现差异大) - **动态辅助**:unicorn 模拟执行跟踪 VM 实际跑的字节码序列(见 rev-unicorn-debug) ## 四、现实预期(诚实说) - VMP 去虚化是**逆向天花板级**难度,商用 VMP(如 VMProtect 强度)**完整还原极难**,多数情况只能**还原关键片段**(如某个校验/算法函数)而非整个程序。 - 很多时候更划算的是**绕过而非还原**:hook VM 的输入输出边界,拿到明文结果(配合 frida/算法助手),不去啃 VM 内部。 - 先问自己:真的要还原 VM,还是只要那个结果?后者简单得多。 ## 五、玄星里 AI 的角色 - 帮你识别 VM 结构、规划去虚化步骤、写 handler 分析脚本和字节码转换脚本 - 分析工具(Miasm/Triton/IDA)跑在 PC,AI 指导 + 解读 - 建议优先评估"绕过 VM 边界"这条捷径 ## 边界 用于自有 App / 授权样本的加固研究、算法分析、学习 VM 保护原理、安全评估。不协助破解他人付费/侵权牟利。
View on GitHub