🔧 固件逆向工程 漏洞定位全流程

📚 30章 · 从入门到实战
📁 点击卡片跳转对应章节 (01.html ~ 30.html) 风格 🎨 明快·圆润·暖色
01
什么是固件逆向 · 应用场景 · 法律与道德边界 · 课程整体框架
02
MCU与SoC架构 · 存储器映射 · 外设与寄存器 · 启动流程
03
从Flash芯片读取 · OTA包提取 · JTAG/SWD接口 · 加密与解密初步
04
Ubuntu虚拟机 · binutils/GDB/radare2/Ghidra/IDA · Python环境
05
ELF/PE/HEX/SREC/raw binary 格式详解与转换
06
Binwalk深度使用 · Squashfs/JFFS2/UBIFS/Cramfs提取 · 手动拼接修复
07
strings进阶 · 硬编码密码/密钥/API令牌 · 交叉引用分析
08
ARM/Thumb模式切换 · LDR/STR/B/BL · 栈帧与调用约定
09
MIPS指令格式 · 延迟槽 · ABI约定 · 固件中MIPS代码特点
10
静态反汇编原理 · Ghidra反编译引擎 · IDA F5 · 结果解读
11
Reset Handler · 向量表解析 · 启动流程 · BSS清零/数据段初始化
12
基地址识别 · 加载/虚拟地址映射 · Ghidra/IDA手动重定位
13
库函数识别(FirmXRay/FLIRT) · 自定义命名 · 未识别函数启发式分析
14
Xrefs使用 · 数据流追踪 · 污染传播 · 从输出回溯到输入
15
缓冲区溢出 · 格式化字符串 · 整数溢出 · 命令注入 · 逻辑漏洞 · 后门
16
危险函数识别(strcpy/sprintf/memcpy) · 栈缓冲区分析 · 触发条件
17
printf/sprintf格式化参数 · %n写操作检测 · 利用原理解析
18
system/popen/execl调用分析 · 输入到系统调用路径 · shell元字符过滤
19
整数截断 · 符号错误 · 循环边界 · 条件竞争 · 状态机异常
20
硬编码密码/密钥定位 · UART/JTAG暴露风险 · 未使用测试代码
21
QEMU用户态/系统态模拟 · GDB远程调试 · 半主机(Semihosting)
22
AFL/libFuzzer在固件应用 · 硬件在环Fuzzing · 模拟器内Fuzzing · 崩溃分析
23
Angr框架入门 · 路径探索 · 约束求解生成PoC · 漏洞验证案例
24
ROP链构造 · 栈迁移 · 堆溢出利用 · ARM/MIPS Gadget查找
25
从漏洞公告到PoC复现
26
从固件提取到漏洞定位
27
专有协议逆向与漏洞发现
28
漏洞描述 · 影响范围 · PoC · 修复建议 · CVE申请流程
29
安全启动 · 加密存储 · Canary · ASLR/PIE · 控制流完整性(CFI)
30
知识体系回顾 · 推荐书籍/工具 · 社区资源 · 职业发展路径