01
内存的「暗面」:指针越界到底是个啥?
从一次线上事故讲起,理解指针越界的本质与危害。
概念事故分析
02
栈与堆的「边界线」
深入理解进程内存布局,栈帧结构与堆管理机制。
内存布局栈帧
03
越界的「第一现场」:数组越界读写
经典案例与调试技巧,快速定位数组越界。
数组调试
04
字符串的「陷阱」
字符串操作中的越界风险(strcpy、sprintf、gets等)。
字符串危险函数
05
野指针的「诞生」
未初始化指针、悬空指针与释放后使用(Use-After-Free)。
野指针UAF
06
堆内存的「黑洞」
堆溢出攻击原理与检测方法。
堆溢出攻击
07
栈溢出与「栈破坏」
栈缓冲区溢出原理及Stack Canary防护。
栈溢出Canary
08
整数「溢出」的连锁反应
整数溢出如何导致指针越界。
整数溢出连锁
09
类型「混淆」的代价
C/C++类型转换不当引发的内存越界。
类型混淆转换
10
调试工具「第一课」:GDB基础
设置断点、单步执行、查看内存。
GDB调试
11
AddressSanitizer(ASan)实战
快速定位堆栈越界与UAF。
ASan动态分析
12
Valgrind Memcheck
内存泄漏与越界访问的终极检测。
ValgrindMemcheck
13
静态分析工具
Cppcheck、Clang Static Analyzer在内存安全中的应用。
静态分析Cppcheck
14
Fuzzing测试入门
使用LibFuzzer/AFL发现内存越界漏洞。
FuzzingAFL
15
防御性编程「心法」
边界检查、安全函数替代(strncpy vs strcpy)。
防御编程安全函数
16
RAII与智能指针
C++中如何用RAII杜绝内存泄漏与悬空指针。
RAII智能指针
17
容器与迭代器失效
STL容器使用中的越界风险与调试。
STL迭代器
18
多线程下的「数据竞争」
线程安全与内存屏障。
多线程数据竞争
19
Linux内核中的内存安全
内核态指针越界与KASAN。
内核KASAN
20
Windows平台调试
WinDbg与Application Verifier。
WinDbgAppVerifier
21
嵌入式系统中的内存约束
裸机环境下的指针越界排查。
嵌入式裸机
22
Python中的内存安全
ctypes与C扩展的越界风险。
Pythonctypes
23
Rust语言的内存安全哲学
所有权、借用与生命周期。
Rust所有权
24
安全编码规范
MISRA C、CERT C编码标准中的内存规则。
MISRACERT C
25
漏洞利用基础
从越界读到任意代码执行(原理演示)。
漏洞利用演示
26
缓解技术
ASLR、DEP/NX、CFG与Shadow Stack。
ASLRDEP
27
日志与监控
运行时内存错误检测与告警系统设计。
监控告警
28
代码审查「清单」
内存安全相关的Code Review要点。
Code Review清单
29
实战演练:复现一个CVE漏洞
如Heartbleed并修复。
CVEHeartbleed
30
课程总结与未来展望
内存安全技术趋势(CHERI、内存安全语言)。
趋势CHERI