Skip to main content

devirtualization-vmp

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

Quellinformationen

Repository
xiamiya/mHook
Letzte Quellaktivität
6. August 2026 um 10:08
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
95
Forks
23

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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 保护原理、安全评估。不协助破解他人付费/侵权牟利。
Auf GitHub ansehen