不知为什么,每次尝试去编译开源项目都要踩n个坑,应该还是太菜了吧......编译成功后把方法记下来,以后回顾的时候方便看
1.在windows系统上安装
cmake 3.18.0-rc2
Qt 5.13.0
vs2019
perl
git
everything
(这些软件的其他版本我没试过)
2.下载dynamorio项目源码,进入dynamorio文件夹并创建build_Win32和build_x64文件夹,打开cmake-gui
git clone https://github.com/DynamoRIO/dynamorio.git
cd dynamorio
mkdir build_Win32
mkdir build_x64
cmake-gui
3.编译DynamoRIO为32位
(1)打开cmake-gui,设置源码目录和build目录,之后点击Configure;
(2)选择生成器和生成平台,点击Finish,就开始build了;
(3)出现了错误,根据错误信息定位到make/cpp2asm_support.cmake第243行;
具体原因是没有指定CMAKE_ASM_COMPILER;
那就用everything搜索ml.exe,随便找一个就行了;
我用的是"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x86\ml.exe"
之后填写到cmake-gui中去,点击Configure继续配置;
(4)又出错了,这次是CMakeLists.txt的第678行;
原因是没有指定CMAKE_MC_COMPILER;
同样地,用everything随便找一个mc.exe就行了;
我用的是"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\mc.exe";
之后填写到cmake-gui中去,点击Configure继续配置;
(5)又出问题了,这次是没有指定uuid.lib;
同样地,用everything随便找一个uuid.lib;
我用的是"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x86\Uuid.Lib";
之后填写到cmake-gui中去,点击Configure继续配置;
(6)又出问题了,这次是没有指定lib.exe;
同样地,用everything随便找一个lib.exe;
我用的是"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x86\lib.exe";
之后填写到cmake-gui中去,点击Configure继续配置;
(7)终于Configuring Done了,之后点击Generate,也就Generating Done了,可以关闭cmake-gui了
(8)进入build_Win32目录,用vs打开解决方案DynamoRIO.sln,共有120个项目;
(9)打开项目drgui的项目属性,将“警告视为错误”改为“否”;
修改“附加包含目录”,关于Qt的目录设置成msvc2017下的包含目录,点击“确定”;
添加“附加库目录”,点击“确定”;
修改“附加依赖项”,点击“确定”;
点击“确定”退出drgui属性页;
(10)这时点击生成解决方案,就能一次性全部编译成功了,生成在bin32目录下;
4.编译DynamoRIO为64位
由于会遇到和上面编译32位一模一样的错误,有些内容我就不详细说了(累死),有些内容我就不说明了;
(1)打开cmake-gui,设置源码目录和build目录,之后点击Configure;
(2)选择生成器和生成平台,点击Finish,就开始build了;
(3)缺少ml64.exe,我用的是"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64\ml64.exe";
之后填写到cmake-gui中去,点击Configure继续配置;
(4)缺少mc.exe,我用的是"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\mc.exe";
之后填写到cmake-gui中去,点击Configure继续配置;
(5)缺少uulib.lib,我用的是"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\Uuid.Lib";
之后填写到cmake-gui中去,点击Configure继续配置;
(6)缺少lib.exe,我用的是"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64\lib.exe";
之后填写到cmake-gui中去,点击Configure继续配置;
(7)终于Configuring Done了,之后点击Generate,也就Generating Done了,可以关闭cmake-gui了;
(8)进入build_x64目录,用vs打开解决方案DynamoRIO.sln,共有119个项目;
(9)打开项目drgui的项目属性,将“警告视为错误”改为“否”;
修改“附加包含目录”,关于Qt的目录设置成msvc2017_64下的包含目录,点击“确定”;
添加“附加库目录”,点击“确定”;
修改“附加依赖项”,点击“确定”;
点击“确定”退出drgui属性页;
(10)这时点击生成解决方案,就能一次性全部编译成功了,生成在bin64目录下;
5.返回dynamorio文件夹所在目录,下载winafl项目源码,创建build_Win32和build_x64文件夹,直接用cmake生成vs项目并编译
(1)打开git,获取winafl源码并更新
git clone https://github.com/googleprojectzero/winafl.git
cd winafl
git submodule update --init --recursive
(2)在winafl目录下打开cmd(使用git运行cmake会失败),生成vs项目并编译
mkdir build_Win32
mkdir build_x64
A、编译winafl为32位:
cd build_Win32
cmake -G"Visual Studio 16 2019" .. -A Win32 -DDynamoRIO_DIR=D:\__workspace__\fuzz\dynamorio\build_Win32\cmake -DINTELPT=1 -DUSE_COLOR=1
cmake --build . --config Release
B、编译winafl为64位:
cd build_x64
cmake -G"Visual Studio 16 2019" .. -A x64 -DDynamoRIO_DIR=D:\__workspace__\fuzz\dynamorio\build_x64\cmake -DINTELPT=1 -DUSE_COLOR=1
cmake --build . --config Release
(3)如果想要winafl在fuzz过程的界面显示彩色以及使用IntelPT的话,则打开winafl目录下的config.h文件,添加下面两个宏定义后重新编译
#define USE_COLOR
#define INTELPT
6.调试winafl(例如想调试afl-fuzz)
(1)先右击该项目后设为启动项目;
(2)然后打开项目属性,在Debug配置下修改“调试信息格式”为“用于“编辑并继续”的程序数据库 (/ZI)”,以及禁用优化选项;
(3)之后给程序下断点才能成功断下;
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界
最后于 2020-8-13 19:55
被昵称好麻烦编辑
,原因: