加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 服务器 > 安全 > 正文

WinAFL小白踩坑指引 你学会了吗

发布时间:2023-07-29 12:12:48 所属栏目:安全 来源:
导读:WinAFL,是Ivan Fratric基于lcumtuf的AFL创建的大型Fuzzing程序,由于AFL无法在windows下直接使用,Winafl弥补了这一空白,使用DynamoRIO来插桩&测量代码覆盖率,并使用Windows API进行内存和进程创建。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。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!