AFL模糊测试工具详解:环境变量与编译器配置
"本文将详细介绍AFL(fast iterative fuzzing framework)模糊测试工具,特别是它的核心函数find_as和edit_params的实现。AFL是一个广泛使用的开源模糊测试框架,用于发现软件中的漏洞和错误。它通过生成随机输入并监控程序执行路径来找出可能导致问题的输入。在AFL中,`afl-gcc`是编译器前端,用于插入特殊标记以支持模糊测试过程。" AFL模糊测试工具的核心之一是`find_as`函数,该函数的主要任务是定位`afl-as`的位置,这是AFL二进制插件的一部分,用于修改汇编代码以支持模糊测试。首先,`find_as`检查`AFL_PATH`环境变量,如果找到,它将尝试访问`afl_path/as`文件。如果这个文件可访问,那么`afl_path`会被设置为`as_path`。若`AFL_PATH`不存在,函数会检查命令行参数`argv0`,从它里面提取目录路径`dir`,并尝试找到`dir/afl-as`。如果这个路径有效,`dir`将被设置为`as_path`。如果这两种方法都无法找到`afl-as`,函数会抛出异常,因为没有找到必要的组件来执行模糊测试。 接下来,我们深入`edit_params`函数,该函数处理编译器参数,为模糊测试做准备。它首先分配足够的内存给`cc_params`,这是一组用于传递给编译器的参数。内存分配的大小是`(argc+128)*8`,足够容纳所有输入参数和额外的空间。函数接着检查`argv[0]`,根据路径分隔符`/`来确定程序名称`name`。这个名称随后与`afl-clang`、`afl-clang++`、`afl-g++`和`afl-gcc`进行比较,以确定正在使用的编译器前端。 - 如果`name`与`afl-clang`匹配,`clang_mode`被设置为1,并将环境变量`CLANG_ENV_VAR`设为1,表明AFL将以Clang模式运行。 - 对于`afl-clang++`,函数会查找`AFL_CXX`环境变量,如果存在,`cc_params[0]`将被设置为这个值,否则设为`clang++`。 - 如果以上都不匹配,但`name`与`afl-g++`相匹配,同样会检查`AFL_CXX`环境变量,设置`cc_params[0]`,若无则设为`g++`。 - 最后,如果与`afl-gcc`匹配,将检查`AFL_CC`环境变量,存在则设置`cc_params[0]`,否则设为`gcc`。 在处理`argv`参数时,`edit_params`会忽略特定的编译选项,如`-B/integrated-as`和`-pipe`,这些选项可能与AFL的内部工作方式冲突。同时,如果发现`-fsanitize=address`或`-fsanitize=memory`这样的地址和内存 sanitizer标志,`asan_s`标志将被设置,这有助于在模糊测试过程中同时进行内存错误检测。 总结来说,AFL通过`find_as`和`edit_params`等关键函数,巧妙地集成到现有的编译流程中,自动调整编译参数以支持模糊测试。这个过程涉及到对环境变量的检查、编译器前端的识别以及对编译选项的处理,确保AFL能够正确地插入模糊测试所需的代码,并与不同的编译器和库配合工作,以提高测试效率和覆盖率。通过这种方式,AFL能够有效地帮助开发者发现潜在的软件安全漏洞和性能问题。
![](https://csdnimg.cn/release/download_crawler_static/21402533/bgc.jpg)
![](https://csdnimg.cn/release/download_crawler_static/21402533/bgd.jpg)
![](https://csdnimg.cn/release/download_crawler_static/21402533/bge.jpg)
剩余66页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/b4269a560f304e4fad76f60f38215d81_hepburn_sunsir.jpg!1)
- 粉丝: 2
- 资源: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)