WinAFL 源码分析:运行与挂起调试

需积分: 0 0 下载量 43 浏览量 更新于2024-06-30 收藏 798KB DOCX 举报
"这篇资源是关于AFL (American Fuzzy Lop) 源码阅读的初步介绍,特别是如何运行Winafl,并且提到了如何修改`runtarget`函数来处理超时问题。作者通过一个简单的C语言程序示例展示了AFL的基本用法,并解释了`run_target`函数在AFL中的作用。" 在源码阅读中,"afl源码阅读1"主要涉及到AFL模糊测试工具的使用,尤其是针对Windows环境的Winafl。Winafl是AFL的一个移植版本,用于在Windows平台上进行模糊测试。模糊测试是一种黑盒测试技术,通过生成大量随机输入来发现软件中的漏洞和不稳定行为。 描述中的命令行`winaflcd C:\winafl-master\build32\Debugafl-fuzz.exe -i C:\Fuzzing\mywps\in`是启动Winafl并指定输入文件目录的过程。`-i`参数后面跟随的是输入文件所在的目录,Winafl将从这个目录中选取文件作为测试用例。 在源码修改部分,`runtarget`函数原本会因为子进程超时而返回`FAULT_TMOUT`,但通过将`if(child_timed_out) return FAULT_TMOUT;`改为`if(child_timed_out) return FAULT_NONE;`,可以避免因超时而导致的挂起。这意味着如果目标程序运行时间过长,AFL不会立即终止它,而是允许其继续执行,这可能有助于发现更深层次的问题。 示例代码是一个简单的C语言程序,用于读取命令行参数指定的文件内容并进行检查。程序会验证读取到的数据的第一个字符是否分别为'a'、'b'、'c'、'd'和'e',若不匹配则打印错误消息。这可以作为一个基础的模糊测试目标,当使用AFL进行模糊测试时,它能帮助理解如何处理不同类型的输入。 Winafl的`run_target`函数是核心部分,它负责执行目标应用程序并监控超时情况。函数内部通常会设置一个看门狗定时器来检测目标程序是否挂起,如果超时,看门狗会触发并返回相应的状态信息。`run_target`会更新`trace_bits[]`数组,这个数组在AFL中用于记录程序执行的不同路径,这对于模糊测试中找到不同分支至关重要。 这个资源提供了AFL模糊测试框架的初步了解,特别是如何在Windows环境下使用Winafl,并通过实例展示了如何对目标程序进行基本的设置和交互。对于想要学习AFL或模糊测试的人来说,这是一个很好的起点。
2022-08-08 上传