WinAFL小白踩坑指引 你学会了吗
WinAFL,是Ivan Fratric基于lcumtuf的AFL创建的大型Fuzzing程序,由于AFL无法在windows下直接使用,Winafl弥补了这一空白,使用DynamoRIO来插桩&测量代码覆盖率,并使用Windows API进行内存和进程创建。 WinAFL 项目地址:https://github.com/ivanfratric/winafl 请注意:Windows 10 1809及更高版本的最新Windows版本要使用DynamoRIO 8.0.0以上版本 需要re-compiled ,这个过程为: (1) 下载安装DynamoRio源码,或者直接下载DynamoRio Windows版的二进制包(https://github.com/DynamoRIO/dynamorio/wiki/Downloads) (2) 打开Visual Studio命令提示工具,如果要安装成64位版本的则打开Visual Studio x64命令提示工具(一般在【开始—所有程序—Visual Stdio—Visual Studio Tools】中可找到)。因为在对64位程序进行fuzz时,需要有64-bit的winafl.dll,所以安装时要选择好版本 (3)在命令提示工具中进入WinAFL的目录下 (4) 在Visual Studio命令提示工具中输入如下命令进行WinAFL编译安装(需将-DDynamoRIO_DIR参数设置为你的DynamoRIO cmake文件所在位置) 32-bit build: mkdir build32 cd build32 cmake -G"Visual Studio 16 2019" -A Win32 .. -DDynamoRIO_DIR=..\path\to\DynamoRIO\cmake cmake --build . --config Release 64-bit build: mkdir build64 cd build64 cmake -G"Visual Studio 16 2019" -A x64 .. -DDynamoRIO_DIR=..\path\to\DynamoRIO\cmake cmake --build . --config Release 这里需要注意一下-G选择平台时VS16与之前版本默认目标平台架构是有些区别的: cmake -G "Visual Studio 16 2019" -A Win32 ;x32 cmake -G "Visual Studio 16 2019" -A x64 ;x64 默认目标平台名称(架构)为Win64 cmake -G "Visual Studio 15 2017" ;x32 默认目标平台名称(架构)为Win32 cmake -G "Visual Studio 15 2017 Win64" ;x64 winafl 命令行参数,主要分为三段,(afl执行参数–dynamoRIO执行参数–程序执行参数) afl执行参数主要包括 -i -o指定输入和输出文件夹 -D指定DynamoRIO根目录 -t每一次样本执行的超时时限 -ffuzz 程序读取的位置 -M \ -S分布式模式 -x可选的fuzz字典 dynamRIO执行参数主要包括 -coverage_module计算覆盖率的模块 -fuzz_iterations在重新启动目标进程之前,目标函数要运行的最大迭代次数。 -target_module包含目标函数的模块(一个可执行文件镜像)需要与该选项一起指定-target_method或-target_offset -target_method目标函数,需要export或者带符号 -target_offset目标偏移,相对于target_module的偏移,在method无法导出的时候使用 -nargs程序执行所需要的参数个数 -debug调试模式。不要尝试连接到服务器。输出包含已加载模块,打开的文件和覆盖率信息的日志文件 -logdir指定将日志文件写入哪个目录(仅与-debug一起使用) 程序执行参数就是要fuzz的程序的命令行 构建Fuzz最小案例库 现在我们从网上搜集一堆ABC看图支持的格式,包括tif、jpg、png、ico等,github上有许多Fuzz的案例库,这样的案例库中包含大量的文件,运行起来效率会很差。根据学长博客,AFL是存在语料库蒸馏(Corpus Distillation)工具的,afl-cmin和afl-tmin。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |