至于 winafl 是啥,上网找,有的是说法
这里只说明编译方法。
1:先去github,拿 winafl 代码
GITHUB 地址:https://github.com/googleprojectzero/winafl
git命令:git clone --recursive https://github.com/googleprojectzero/winafl
需要注意的是,一定要把相关的引用项目一起给下载下来
2:编译 winafl 的支持库 DynamoRIO。
具体编译方法,去看这里
https://www.cnblogs.com/suanguade/p/13388818.html
注意:这里其实不编译它也没问题,因为这个插桩库不是必须的,
但是如果要做fuzz,那么就必须,因为fuzz的关键模块 winafl.dll 是需要这个库的
3:打开cmake 配置项目
设置好目录之后,先configure
configure之后,在generate 之前,需要补一个环境变量,就是红框里面的。
路径里面必须要求带有如下文件:DynamoRIOConfig.cmake
之后就可以正常生成项目了。
4:可以用vs2017打开了,开始编译
一共就十来个项目,还算上测试项目,轻松编译完。
至此,就都编译完了。
最主要的工具有两个,
1:afl-fuzz.exe
2:winafl.dll
测试方法:
1:先使用IDA查询 test_gdiplus.exe 程序中main 函数的偏移
偏移是 0x1680
2:使用如下命令对 test_gdiplus.exe 做fuzz
afl-fuzz.exe -i in -o out -D D:vs2017dynamorio-masterdynamorio-masterProjectin32 -t 20000 -- -coverage_module gdiplus.dll -coverage_module WindowsCodecs.dll -fuzz_iterations 5000 -target_module test_gdiplus.exe -target_offset 0x1680 -nargs 2 -- test_gdiplus.exe @@
3:程序开始运行了,挺难看的,说明编译没问题
至于怎么用,随便去找找较成吧