re-emulation
Installation
SKILL.md
模拟执行(Unicorn / Qiling)
何时使用 / 何时不用
- 用:目标无法在本机运行(架构/OS 不匹配、无硬件、依赖缺失);脱壳辅助(把壳内解密例程摘出来模拟执行拿明文);反调试绕过(模拟器无调试器标记,见坑 2 的例外);单函数/单代码段隔离执行验证
- 用:不需要完整 OS 语义(无进程/线程/网络栈依赖)的确定性任务
- 不用:需要完整 OS 环境(多线程、网络栈、完整 API 语义)→ 用 QEMU 全系统([[re-fw-emulate]])或沙箱实跑([[re-sandbox]])
- 不用:只需动态调试([[re-gdb]] / [[re-x64dbg]] / [[re-windbg]])
- 不用:目标在本机就能跑——沙箱内直接跑更真实([[re-analyze/platform-tips]] 最高原则),模拟留给出不来环境的场景
工具准备
模拟执行属动态执行,默认沙箱 + 网络隔离([[re-analyze/platform-tips]] 最高原则);本技能三件套均为 pip 包,Linux/macOS/Windows 通用,WSL 内可直接用([[re-analyze/platform-tips]] WSL 分支)。
unicorn
- 安装:
pip install unicorn(Python 3) - 验证:
python3 -c "import unicorn; print(unicorn.__version__)" - 版本: 2.x 为当前线(2.1.4 于 2025-09);2.x 钩子回调签名与 1.x 一致(
(uc, address, size, user_data)),pip 默认装 2.x;1.x→2.x 差异见 [[gotchas]]