逆向工程实战手册 第 20 章

第 20 章 实战案例复盘(Field Journal)

这是本仓库最独特的资产:23 个真实/种子案例的完整复盘。每个案例记录"目标 → 思路 → 步骤 → 踩坑 → 复用价值"。看案例是学习逆向最快的方式——相当于别人把解题过程掰开给你看。

📍 知识点地图 | 主题:实战案例复盘 | 前置:全书 | 后续:— | 核心概念:案例库、复盘模板、复用价值

20.1 案例库总览(按场景分类)

APK / Android 逆向

案例 核心知识点
seed-008_apk-okhttp-ssl-pin-bypass OkHttp 证书校验 Hook、SSL Pinning 绕过
2026-05-15_cellular-pro-mumu-ksad-fragment-fix 模拟器环境问题、SDK 广告 fragment 修复

二进制 / 固件 / CTF

案例 核心知识点
seed-001_elf-packed-loader ELF 加壳加载器、内存 dump 脱壳
seed-002_go-malware-stripped Go 恶意软件符号恢复(GoReSym)
seed-010_ctf-pwn-rop-x64 x64 ROP、ret2libc
seed-011_pcap-protocol-reverse PCAP 协议逆向、会话重建
seed-014_unity-il2cpp-reverse Unity IL2CPP(全局元数据表)
seed-015_iot-firmware-uart 固件提取、UART 接口
2026-05-15_lumine-go-reverse Go 商业程序逆向(符号恢复实战)
2026-07-05_dsl-vm-captcha-reverse DSL 自定义 VM 逆向(JS 虚拟机)

Web / API / 渗透

案例 核心知识点
seed-003_web-api-auth-bypass API 认证绕过
seed-004_js-sign-webpack webpack 打包 JS 签名定位
seed-006_ssrf-cloud-metadata SSRF → 云元数据
seed-017_xxe-oob-exfil XXE 带外数据外带
2026-05-16_pentest-personalblog-fun-mass-assignment 批量赋值漏洞
2026-05-17_pentest-vue-spa-actuator-leak Vue SPA + Actuator 泄露
2026-05-25_pentest-cf-access-sibling-subdomain-cookie-poisoning 子域 Cookie 投毒
2026-05-26_pentest-newapi-rate-limit-bypass 限速绕过
2026-06-29_burp-mcp-full-test-and-fix Burp MCP 全链路测试

企业内网 / 云安全

案例 核心知识点
seed-005_ad-certipy-esc1 AD CS ESC1 证书攻击
seed-007_ntlm-relay-coercer NTLM relay + Coercer
seed-013_kerberoasting-spn Kerberoasting
seed-016_k8s-container-escape K8s 容器逃逸

iOS / 其他

案例 核心知识点
seed-009_ios-jailbreak-detect-bypass iOS 越狱检测绕过
seed-012_log4shell-jndi-rce Log4Shell JNDI RCE

20.2 案例精读一:Go 恶意软件符号恢复(seed-002)

目标:一个 stripped 的 Go 恶意软件。

难点:Go 二进制 strip 后普通工具看不到函数名。

解法

1. 识别 Go(strings 里有 go1.xx / runtime 特征)
2. 用 GoReSym 从 pclntab 恢复全部符号
3. Ghidra 导入恢复结果
4. 从 main.main 开始看行为链

复用价值:所有 Go 样本(无论商业还是恶意)都适用这套"符号恢复三连"。

20.3 案例精读二:Unity IL2CPP(seed-014)

目标:Unity 游戏逆向。

难点:IL2CPP 把 C# 转成 C++ 原生代码,无 IL 元数据。

解法

1. 找到 global-metadata.dat(IL2CPP 元数据文件)
2. 用 Il2CppDumper 恢复类/方法/字符串
3. 结合 IDA/Ghidra 分析游戏逻辑
4. 找验证/内购逻辑 → 修改或直接读懂

复用价值:主流 Unity 手游的通用套路。

20.4 案例精读三:DSL 自定义 VM 验证码(2026-07-05)

目标:一个用 JS 写的自定义指令集 VM(风控验证码)。

难点:IIFE + 单字母变量 + switch-case 解释器 + opcode 控制流,完全不是标准 JS。

解法

1. 识别 VM 结构(解释器循环 + opcode 分派)
2. 提取 opcode 表 → 还原指令集语义
3. 用符号执行/模拟执行跑 VM
4. 逆出校验逻辑 → 本地复现

复用价值:现在很多风控/验证码用自定义 JS VM,这是处理范式。

20.5 案例精读四:NTLM relay + Coercer(seed-007)

目标:内网认证强制 + 中继。

解法

1. Coercer 触发目标机器向攻击机认证(MS-RPC 强制)
2. Responder/ntlmrelayx 接收并中继认证
3. 中继到支持 NTLM 的服务(SMB/LDAP)
4. 完成横向移动/提权

20.6 从案例中提炼的通用方法论

1. 每个案例都有"第一个动作"——永远从最省力的开始(strings/日志/公开信息)
2. 识别技术栈(Go/Unity/VM)→ 用对应专项工具,不要硬啃
3. 符号/元数据恢复永远是性价比最高的一步
4. 动态验证静态猜想(Hook/断点/仿真)
5. 踩坑记录 = 下一个案例的避坑指南
6. 完成后沉淀:写报告 + 更新案例库

动手练习

  1. 精读 seed-002 和 seed-014 原文,写出每一步用的工具和方法论。
  2. 自己完成一个小逆向任务,按仓库的 field-journal 模板写复盘(skills/field-journal/_template.md)。
  3. 建立你自己的案例库:每个任务一个文件,记录目标/步骤/踩坑/复用价值。

深入阅读

  • 仓库:skills/field-journal/_index.md(案例索引)
  • 仓库:skills/field-journal/_template.md(复盘模板)
  • 仓库:skills/field-journal/seed-*.md(17 个种子案例原文)
  • 仓库:skills/field-journal/2026-*.md(7 个真实项目复盘)
  • 仓库:skills/field-journal/precedent-auth.md / precedent-reverse.md(操作先例)