📚 栈溢出诊断
30章 · 从原理到实战
🧑🎓 风格 · 活泼严谨
01
栈溢出原理
栈帧
缓冲区
触发条件
02
栈溢出危害
系统崩溃
数据损坏
代码执行
03
常见场景
递归过深
字符串拷贝
alloca
04
诊断工具
GDB
Valgrind
ASan
Core Dump
05
GDB诊断实战
backtrace
栈帧
崩溃点
06
Valgrind实战
Memcheck
越界
泄漏
07
AddressSanitizer
编译选项
栈溢出
报告解读
08
Core Dump分析
ulimit
gdb分析
堆栈信息
09
递归导致栈溢出
尾递归
转迭代
限制
10
大局部变量
静态分配
堆分配
全局变量
11
字符串拷贝溢出
strcpy
strncpy
snprintf
12
alloca风险
原理
替代
异常安全
13
变长数组(VLA)
C99
风险
替代
14
多线程栈溢出
线程栈大小
pthread_attr
监控
15
嵌入式栈溢出
硬件检测
看门狗
RTOS
16
预防策略
编码规范
静态分析
代码审查
17
栈保护技术
Stack Canary
GCC
/GS
18
栈溢出与安全漏洞
ROP
Shellcode
ASLR
19
Windows诊断
VS调试器
WinDbg
Dr. Memory
20
Linux诊断
GDB
Valgrind
SystemTap
21
macOS诊断
Xcode
Instruments
CrashReporter
22
栈溢出日志分析
错误解读
堆栈跟踪
聚合
23
复现与修复
最小用例
二分法
回归测试
24
案例分析1 · Web服务器
漏洞原理
攻击
修复
25
案例分析2 · 数据库
递归查询
参数配置
监控
26
案例分析3 · 游戏引擎
物理递归
内存池
性能平衡
27
案例分析4 · 驱动
IOCTL
内核栈
安全编码
28
栈溢出与性能
栈缓存
切换成本
优化
29
测试方法
模糊测试
压力测试
覆盖率
30
总结与最佳实践
诊断流程
工具链
团队规范