首页
论坛
课程
招聘
[求助]AFL的qemu-mode编译安装问题
2019-11-5 21:22 3668

[求助]AFL的qemu-mode编译安装问题

2019-11-5 21:22
3668
小弟最近在玩AFL ,在做黑盒测试的时候安装afl-qemu-trace时报错。请大哥指教。

在执行./build_qemu_support.sh时,报这个错。
util/memfd.c:40:12: error: static declaration of ‘memfd_create’ follows non-static declaration

小弟查了一圈,试了两个方法。
1.修改两个配置文件
./qemu-2.10.0/util/memfd.c
-#ifdef CONFIG_MEMFD
-#include <sys/memfd.h>
-#elif defined CONFIG_LINUX
+#if defined CONFIG_LINUX && !defined CONFIG_MEMFD
./qemu-2.10.0/configure
-#include <sys/memfd.h>
+#include <sys/mman.h>

2.把qemu_mode里面的函数memfd_create改名问memfd_create_tmp

这两种修改后, 执行./build_qemu_support.sh 后,出现如下信息。
[+] Successfully created '../afl-qemu-trace'.
[*] Testing the build...
[-] Error: afl-qemu-trace instrumentation doesn't seem to work!

看样子还是没有执行成功。

又查了一圈,似乎是memfd_create和glibc中的同名函数冲突了。需要针对QEMU进行patch。地址
具体要怎么操作呢?求大哥指教。

看雪学院推出的专业资质证书《看雪安卓应用安全能力认证 v1.0》(中级和高级)!

收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 6322
活跃值: 活跃值 (3336)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
pureGavin 活跃值 2 2019-11-6 08:47
2
0
之前我在使用honggfuzz的hfuzz-clang的时候一直报错,后来才发现是clang没装,所以你看看你装qemu了么
最后于 2019-11-6 08:47 被pureGavin编辑 ,原因:
雪    币: 179
活跃值: 活跃值 (142)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
吴俊 活跃值 2019-11-6 09:12
3
0
pureGavin 之前我在使用honggfuzz的hfuzz-clang的时候一直报错,后来才发现是clang没装,所以你看看你装qemu了么
装了qemu就好了。。。谢谢大哥
雪    币: 1194
活跃值: 活跃值 (19)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Triangleowl 活跃值 2019-11-6 09:31
4
0
请问你装的哪个版本的qemu?
雪    币: 6322
活跃值: 活跃值 (3336)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
pureGavin 活跃值 2 2019-11-6 11:26
5
0
SL时 请问你装的哪个版本的qemu?
最好是直接apt-get安装(如果是Ubuntu的话),因为apt里面的都是经过测试的稳定版本,不过在安装之前记得update一下
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_xiynnglv 活跃值 2020-3-21 20:29
6
0
请问一下 我修改了那两处之后 再执行./build_qemu_support.sh 报了一样的错 而且我再回去看时发现我改的地方都被自动还原了 能问一下是为什么嘛
雪    币: 280
活跃值: 活跃值 (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ErosJohn 活跃值 2020-4-3 21:05
7
0
mb_xiynnglv 请问一下 我修改了那两处之后 再执行./build_qemu_support.sh 报了一样的错 而且我再回去看时发现我改的地方都被自动还原了 能问一下是为什么嘛[em_51]
解压的时候覆盖掉了,你把build_qemu_support.sh里面相关语句注释掉就行。
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_Genius_953 活跃值 2020-8-7 03:05
8
0
请问在编译qemu时出现了
/afl-2.52b/qemu_mode/qemu-2.10.0/linux-user/syscall.c:261:16: error: static declaration of ‘gettid’ follows non-static declaration
  261 | _syscall0(int, gettid)
      |                ^~~~~~
这样的问题怎么办啊
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
MstMoonshine 活跃值 2020-11-8 11:38
9
0

/afl-2.52b/qemu_mode/qemu-2.10.0/linux-user/syscall.c:261:16: error: static declaration of ‘gettid’ follows non-static declaration


我昨天也遇到了gettid的问题。我根据qemu的这个patch编写了一个afl的patch(见附件)。如果你也是通过编译源码安装AFL的,把附件gettid.diff放到./qemu_mode/patches/目录下(确保文件名和下面脚本里添加的一致)。然后在qemu_mode/下的build_qemu_support.sh中patch那一段最后加上patch -p1 <../patches/gettid.diff || exit 1 :


echo "[*] Applying patches..."
patch -p1 <../patches/elfload.diff || exit 1
patch -p1 <../patches/cpu-exec.diff || exit 1
patch -p1 <../patches/syscall.diff || exit 1
patch -p1 <../patches/configure.diff || exit 1
patch -p1 <../patches/memfd.diff || exit 1
patch -p1 <../patches/gettid.diff || exit 1         #manually added
echo "[+] Patching done."

保存后再次运行shell脚本就可以成功了。


在qemu_mode/下脚本运行成功后,返回上层重新

make
sudo make install

之后就可以成功fuzz binary file了。

最后于 2020-11-8 11:41 被MstMoonshine编辑 ,原因:
上传的附件:
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_jzqhhkit 活跃值 2020-11-15 00:26
10
0
吴俊 装了qemu就好了。。。谢谢大哥[em_67]
请问您是怎么操作的?怎么安装的QEMU?
游客
登录 | 注册 方可回帖
返回