Fuzzing入门笔记(一)
💡
原文中文,约10200字,阅读约需25分钟。
📝
内容提要
本文介绍了Fuzzing中的code coverage统计方法,包括Python中的coverage统计和外部程序的coverage统计。同时介绍了基础Fuzzing的coverage统计和branch coverage的概念。
🎯
关键要点
- Fuzzing通过自动生成随机输入来测试程序的稳定性,发现bug和安全漏洞。
- Fuzzing可以分为三种类型:Whitebox、Greybox和Blackbox,分别对应不同的程序知识和测试方式。
- 根据测试数据的产生方式,Fuzzing可以分为Generation-based和Mutation-based。
- 动态符号执行(concolic execution)和基于覆盖率的Fuzzing(如AFL)是现代Fuzzing的重要技术。
- TFB提供了assert断言、Timer模块和timeout机制来辅助Fuzzing测试。
- Fuzzing的基础架构包括Runner类和Fuzzer类,分别负责运行程序和生成测试数据。
- Python中的coverage统计对于Fuzzing至关重要,可以通过插桩技术实现。
- 基础Fuzzing的coverage可以通过记录执行过程中的覆盖情况来分析。
- 对于C语言程序,可以通过编译时插桩和gcov工具进行coverage统计。
- Branch coverage通过记录连续执行的语句来分析程序的执行流程,帮助识别哪些分支被执行。
➡️