第 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. 完成后沉淀:写报告 + 更新案例库
动手练习
- 精读 seed-002 和 seed-014 原文,写出每一步用的工具和方法论。
- 自己完成一个小逆向任务,按仓库的 field-journal 模板写复盘(
skills/field-journal/_template.md)。 - 建立你自己的案例库:每个任务一个文件,记录目标/步骤/踩坑/复用价值。
深入阅读
- 仓库:
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(操作先例)