首页
社区
课程
招聘
未解决 [求助]AFL的qemu-mode编译安装问题
发表于: 2019-11-5 21:22 9946

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

2019-11-5 21:22
9946
小弟最近在玩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。地址
具体要怎么操作呢?求大哥指教。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 13908
活跃值: (17077)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
之前我在使用honggfuzz的hfuzz-clang的时候一直报错,后来才发现是clang没装,所以你看看你装qemu了么
最后于 2019-11-6 08:47 被pureGavin编辑 ,原因:
2019-11-6 08:47
0
雪    币: 188
活跃值: (581)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
pureGavin 之前我在使用honggfuzz的hfuzz-clang的时候一直报错,后来才发现是clang没装,所以你看看你装qemu了么
装了qemu就好了。。。谢谢大哥
2019-11-6 09:12
0
雪    币: 1196
活跃值: (73)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
请问你装的哪个版本的qemu?
2019-11-6 09:31
0
雪    币: 13908
活跃值: (17077)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
5
SL时 请问你装的哪个版本的qemu?
最好是直接apt-get安装(如果是Ubuntu的话),因为apt里面的都是经过测试的稳定版本,不过在安装之前记得update一下
2019-11-6 11:26
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
请问一下 我修改了那两处之后 再执行./build_qemu_support.sh 报了一样的错 而且我再回去看时发现我改的地方都被自动还原了 能问一下是为什么嘛
2020-3-21 20:29
0
雪    币: 280
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mb_xiynnglv 请问一下 我修改了那两处之后 再执行./build_qemu_support.sh 报了一样的错 而且我再回去看时发现我改的地方都被自动还原了 能问一下是为什么嘛[em_51]
解压的时候覆盖掉了,你把build_qemu_support.sh里面相关语句注释掉就行。
2020-4-3 21:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
请问在编译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)
      |                ^~~~~~
这样的问题怎么办啊
2020-8-7 03:05
0
雪    币: 4
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9

/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编辑 ,原因:
上传的附件:
2020-11-8 11:38
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
吴俊 装了qemu就好了。。。谢谢大哥[em_67]
请问您是怎么操作的?怎么安装的QEMU?
2020-11-15 00:26
0
雪    币: 7249
活跃值: (6074)
能力值: ( LV8,RANK:147 )
在线值:
发帖
回帖
粉丝
11
如果遇到'SIOCGSTAMP' undeclared here 这种报错的,可以在syscall.diff文件里加上
@@ -34,6 +34,7 @@
 #include <sys/resource.h>
 #include <sys/swap.h>
 #include <linux/capability.h>
+#include <linux/sockios.h>
 #include <sched.h>
 #include <sys/timex.h>
 #include <sys/socket.h>
即可解决
2021-12-29 18:58
0
游客
登录 | 注册 方可回帖
返回
//