WInAFL 安装 (2023.7有效)

环境

Win11

AMD RyZen-5600H

DynamoRIO-Windows-9.93.19557

VS2022-命令行工具

先下载DynamoRIO文件,注意最好下载最新版,省事的话直接下载编译后的版本

Releases · DynamoRIO/dynamorio · GitHubDynamic Instrumentation Tool Platform. Contribute to DynamoRIO/dynamorio development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/DynamoRIO/dynamorio/releases

下载后,注意其中cmake文件夹路径,因为接下来的WinAFL编译需要用到

如果自己编译则输入

cmake -G"Visual Studio 17 2022" -A Win32 ..
cmake --build . --config RelWithDebInfo

下载WinAFL,

https://github.com/googleprojectzero/winafl

然后开始编译。注意

编译winafl的位数、用到的DynamoRIO的位数和Fuzz目标程序的位数需要保持统一。

在winafl目录中创建文件夹build64并进入目录,然后根据VS的版本 进行编译,其中需要用到DynamoRIO的cmake文件夹路径。

D:\WinAFL\winafl\build64>cmake -G"Visual Studio 17 2022" -A x64 .. -DDynamoRIO_DIR="D:\dynamorio\DynamoRIO-Windows-9.93.19557\DynamoRIO-Windows-9.93.19557\cmake"

D:\WinAFL\winafl\build64>cmake --build . --config Release 

编译好后,验证是否能正常Fuzz。

winafl自带一些测试程序可以帮助我们进行验证。

这里我们选择test_gdiplus.exe程序,其正常运行需要提供一张图片作为输入。

进入编译好的winafl的release文件夹中,然后输入以下命令对目标程序进行插桩

 D:\WinAFL\winafl\build64\bin\Release> D:\dynamorio\DynamoRIO-Windows-9.93.19557\DynamoRIO-Windows-9.93.19557\bin64\drrun.exe  -c  winafl.dll  -debug -target_module   test_gdiplus.exe   -target_offset 0x10b0  -fuzz_iterations 5 -nargs 2   -- test_gdiplus.exe   D:\Thunder\BHO\image\waiting\003.bmp

这里踩了个坑:

一定要加debug参数,而且一定要加在 -c winafl.dll后面,不要加在前面。

除此之外,要在winafl目录里打开shell并输入此命令,如果换到DynamoRIO中drrun.exe所在目录下运行命令,那么也会插桩失败。

正常的插桩结果应该是,输入命令后,在当前命令执行目录下生成

afl.test_gdiplus.exe.xxxxxxx.proc.log格式文件,打开后有这样的字段

 常见的错误结果是

 出现错误的可能原因有很多,需要自己逐个排查。

假设已经可以正常插桩,那么就运行以下命令

.\afl-fuzz.exe  -debug  -i  ./test_gdiplus_input -o ./test_gdiplus_output -D D:\dynamorio\DynamoRIO-Windows-9.93.19557\DynamoRIO-Windows-9.93.19557\bin64\ -t 20000  -- -coverage_module  test_gdiplus.dll   -coverage_module WindowsCodecs.dll -fuzz_iterations 10 -target_module test_gdiplus.exe -target_offset 0x10e0 -nargs 2  -- test_gdiplus.exe @@

注意以下几点:

1.在powershell中不支持@@,会被识别为非法字符

2.命令格式是

afl-fuzz.exe    Winafl 选项  --   插桩选项  -- 目标程序

其中,WinAFL选项必须有 -i  指定输入,-o 指定输出  -D 指定 DynamoRIO路径,-t 指定超时时间

插桩选项 应包括 -coverage_module  一般是DLL ,可以多个  -fuzz_iterations 次数  -target_module 目标程序 -target_offset 偏移  -nargs 参数个数

注意,第一次对目标程序进行Fuzz时需要加上debug方便如果出错进行错误的排查,确认无误后记得取消debug参数,否则会极大影响运行效率。

中间踩了一个坑,-target_module test_gdiplus.exe 写成了 -target_module .\test_gdiplus.exe,结果一直超时报错。所以根据官方文档,如果目标是一个路径,也应该用双引号包住。

详细请参考

https://github.com/googleprojectzero/winafl/blob/master/readme_dr.md

最终运行结果如下:

对于目标程序所要解析的文件,用 -f 参数即可。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
安装Anaconda 2023.7的步骤如下: 1. 首先,你需要下载Anaconda 2023.7的安装包。你可以在官方网站上找到这个安装包,并根据你的操作系统选择正确的版本进行下载。 2. 下载完成后,你需要运行安装包。在Windows系统中,双击安装包,按照向导进行安装。在Linux系统中,你需要授予安装包执行权限,可以使用命令"chmod x Anaconda3-2023.07-2-Linux-x86_64.sh"来授予执行权限。然后,你可以运行安装包,按照向导进行安装。 3. 在安装过程中,你可以选择安装目录。如果你想使用默认的安装目录(例如C:\anaconda3),那么你可以直接点击下一步。如果你想选择其他目录,可以手动输入目录路径。 4. 完成安装后,你可以在安装目录中找到Anaconda的文件夹。在Windows系统中,你可以在开始菜单中找到它。在Linux系统中,你可以使用命令"which conda"来确认安装是否成功。 5. 为了方便使用Anaconda,你需要将Anaconda相关的路径添加到系统的Path环境变量中。在Windows系统中,你可以按照以下步骤添加环境变量: - 打开控制面板,找到系统和安全,然后点击系统。 - 点击高级系统设置,在弹出的窗口中点击环境变量。 - 在系统变量中找到Path,点击编辑。 - 将Anaconda的安装目录(例如C:\anaconda3)以及以下路径添加到Path中:C:\anaconda3\Scripts、C:\anaconda3\Library\mingw-w64\bin、C:\anaconda3\Library\usr\bin、C:\anaconda3\Library\bin。 - 点击确定保存修改。 6. 现在,你已经成功安装了Anaconda 2023.7,并将其添加到系统的Path环境变量中。你可以打开命令提示符或终端窗口,输入"conda"来验证安装是否成功。 请注意,这里提供的是一般的安装步骤,具体的步骤可能会因为操作系统的不同而有所差异。因此,建议你在安装过程中参考官方的安装指南。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [anaconda 2023.7 安装、配置、开机启动和基本操作 (windows+linux 详细)](https://blog.csdn.net/ziqibit/article/details/129941561)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值