安装工具及环境
将cmake添加进path
VS2019中勾选



Dynamo RIO编译
在dynamorio中创建build32 build64两个文件 分别对应32位 64位
build32中
1 2
| ..\dynamorio\build32> cmake -G"Visual Studio 16 2019" -A Win32 .. ..\dynamorio\build32> cmake --build . --config RelWithDebInfo
|
build64中
1 2
| ..\dynamorio\build64> cmake -G"Visual Studio 16 2019" -A x64 .. ..\dynamorio\build64> cmake --build . --config RelWithDebInfo
|
WinAFL编译
在winafl中创建build32 build64两个文件
build32中
1 2
| ..\winafl\build32> cmake -G"Visual Studio 16 2019" -A Win32 .. -DDynamoRIO_DIR=your_dir\dynamorio\build32\cmake ..\winafl\build32> cmake --build . --config Release
|
build64中
1 2
| ..\winafl\build64> cmake -G"Visual Studio 16 2019" -A x64 .. -DDynamoRIO_DIR=your_dir\dynamorio\build64\cmake ..\winafl\build64> cmake --build . --config Release
|
测试
测试文件 test_gdiplus.exe
目录 ..\winafl\build64\bin\Release
准备一张图片 放在↑目录中 改为test.bmp
ida查看此文件的main函数偏移地址为0x10e0

在目录中生成log文件
1
| ..\winafl\build64\bin\Release> your_dir\dynamorio\build64\bin64\drrun.exe -c winafl.dll -debug -target_module test_gdiplus.exe -target_offset 0x10e0 -fuzz_iterations 5 -nargs 2 -- test_gdiplus.exe test.bmp
|

在此目录中创建in文件夹 将test.bmp拖至in中进行afl-fuzz测试
1
| ..\winafl\build64\bin\Release> .\afl-fuzz.exe -i in -o out -D your_dir\dynamorio\build64\bin64 -t 20000 -- -coverage_module gdiplus.dll -target_module test_gdiplus.exe -target_offset 0x10e0 -fuzz_iterations 20 -nargs 2 -- test_gdiplus.exe "@@"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -debug //debug模式 会生成log文件 -i //输入的测试文件用例 -o //输出结果的目录 -D //插桩工具Dynamorio命令文件夹 -t //每一次样本执行的超时时间 -- //分隔符 此处是插桩参数 -coverage_module //需要覆盖的模块(可有多个) -tarage_module //被测模块 -target_offset //相对于target_module的偏移量 在target_method无法导出时使用 -target_method //被测模块函数地址 -fuzz_iterations //迭代次数 -nargs //函数所需要参数个数 -- //分隔符 此处是被测程序参数 @@ //引用-i中测试用例
|

各模块详情:AFL/status_screen.txt at master · google/AFL · GitHub
参考
(26条消息) Fuzz学习笔记(一)—— WinAFL环境搭建与基本使用_lzyddf的博客-CSDN博客
模糊测试工具WinAFL使用指南 - FreeBuf网络安全行业门户
winafl编译与测试 | giantbranch’s blog
2021-02-24-模糊测试(WinAFL) - 简书 (jianshu.com)