android-afl (American Fuzzy Lop for Anadroid)编译安装
2017-04-20 17:46
726 查看
一、android-afl网址:
android-afl是对linux测试工具afl的扩展,修改点只是将编译脚本改为了android 的mk文件。
github地址:https://github.com/ele7enxxh/android-afl
有关AFL的使用等问题还是得参考linux的AFL
linux的AFL github地址:https://github.com/rc0r/afl-fuzz
二、安装
前提条件:
需要Android source code(e.g. 6.0.1) ,lvm-3.8 and clang-3.8。
android 源码比较好说了,下载后全编译就可以了。
重点说下llvm,clang:
(参考的http://apt.llvm.org/)
最新版本为3.9:我是ubuntu 12.03系统,所以做了如下操作:
在源中加入llvm clang的源:
打开文件后,添加下面的内容到文件中,保存退出。
更新源:
安装clang3.9:
验证:
SPREADTRUM\jieying.li@tj05002pcu:~$ clang-3.9 --version
clang version 3.9.1-svn288847-1~exp1 (branches/release_39) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin
SPREADTRUM\jieying.li@tj05002pcu:~$clang++-3.9 --version
实际中,同时有将
deb http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main
deb-src http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main
加入源,但是安装3.8会提示包依赖问题,所以只能安装了3.9.
二、下载、编译android-afl
1.下载
cd 到android源码的目录下面,
git clone https://github.com/ele7enxxh/android-afl
2..先解决工具clang llvm版本的问题
在/android-afl文件夹下,打开android.mk文件,搜索“3.8”,将其改成“3.9”。这可以解决以下错误提示:
/bin/bash: llvm-config-3.8: command not found
/bin/bash: llvm-config-3.8: command not found
/bin/bash: clang++-3.8: command not found
这是因为android-af的android.mk文件中定义了使用clang llvm的3.8版本,就只认识clang-3.8这样的二进制文件,而上面使用的是3.9,所以,就报错了。将使其改为3.9就OK了.
3.编译
cd android-afl
mm -B
若一切顺利,最后出现
#### make completed successfully (10 seconds) ####
不过我这里又遇到问题:
target Symbolic: afl-llvm-rt (out/target/product/spwhale2_fpga/symbols/system/lib64/afl-llvm-rt.so)
Export includes file: android-afl/Android.mk -- out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES/afl-llvm-rt_intermediates/export_includes
target Strip: afl-llvm-rt (out/target/product/spwhale2_fpga/obj/lib/afl-llvm-rt.so)
Install: out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so
cp: cannot stat `out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o': No such file or directory
make: *** [out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so] Error 1
make: *** Deleting file `out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so'
问题的原因是:要找到out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o文件,但是实际上没有这个目录和文件。
解决:
我打开这个目录,发现out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES下面确实没有后面的子目录和文件。
于是在android源码文件夹下面搜索“afl-llvm-rt.o.o”,结果找到了,不过目录是"out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES"。
将该目录下的文件夹拷贝到out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES下面,再次编译。success了。
问题分析:
是android.mk文件中这一行出错的:
LOCAL_POST_INSTALL_CMD := $(hide) cp -f $(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o $(HELPER_PATH)/afl-llvm-rt.o;
不过怎么将这个拷贝的源目录改为out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES,我就不知道了。
编译完成后,在out/target/product/spwhale2_fpga/system/bin目录下生成如下二进制文件:
afl-analyze
afl-fuzz
afl-gotcup
afl-showmap
afl-tmin
将它们push到手机/system/bin目录下面。就可以运行了。
我push到手机后总提示“not executable: 64-bit ELF file”,最后确定是手机没用对。在什么代码下编译的,最好放入什么手机中运行。
android-afl是对linux测试工具afl的扩展,修改点只是将编译脚本改为了android 的mk文件。
github地址:https://github.com/ele7enxxh/android-afl
有关AFL的使用等问题还是得参考linux的AFL
linux的AFL github地址:https://github.com/rc0r/afl-fuzz
二、安装
前提条件:
需要Android source code(e.g. 6.0.1) ,lvm-3.8 and clang-3.8。
android 源码比较好说了,下载后全编译就可以了。
重点说下llvm,clang:
(参考的http://apt.llvm.org/)
最新版本为3.9:我是ubuntu 12.03系统,所以做了如下操作:
在源中加入llvm clang的源:
sudo vi /etc/apt/sources.list
打开文件后,添加下面的内容到文件中,保存退出。
deb http://apt.llvm.org/precise/ llvm-toolchain-precise main deb-src http://apt.llvm.org/precise/ llvm-toolchain-precise main # 3.9 deb http://apt.llvm.org/precise/ llvm-toolchain-precise-3.9 main deb-src http://apt.llvm.org/precise/ llvm-toolchain-precise-3.9 main # 4.0 deb http://apt.llvm.org/precise/ llvm-toolchain-precise-4.0 main deb-src http://apt.llvm.org/precise/ llvm-toolchain-precise-4.0 main # Common deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main
更新源:
sudo apt-get update
安装clang3.9:
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - apt-get install clang-3.9 lldb-3.9 llvm-3.9
验证:
SPREADTRUM\jieying.li@tj05002pcu:~$ clang-3.9 --version
clang version 3.9.1-svn288847-1~exp1 (branches/release_39) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin
SPREADTRUM\jieying.li@tj05002pcu:~$clang++-3.9 --version
clang version 3.9.1-svn288847-1~exp1 (branches/release_39) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin
实际中,同时有将
deb http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main
deb-src http://apt.llvm.org/precise/ llvm-toolchain-precise-3.8 main
加入源,但是安装3.8会提示包依赖问题,所以只能安装了3.9.
二、下载、编译android-afl
1.下载
cd 到android源码的目录下面,
git clone https://github.com/ele7enxxh/android-afl
2..先解决工具clang llvm版本的问题
在/android-afl文件夹下,打开android.mk文件,搜索“3.8”,将其改成“3.9”。这可以解决以下错误提示:
/bin/bash: llvm-config-3.8: command not found
/bin/bash: llvm-config-3.8: command not found
/bin/bash: clang++-3.8: command not found
这是因为android-af的android.mk文件中定义了使用clang llvm的3.8版本,就只认识clang-3.8这样的二进制文件,而上面使用的是3.9,所以,就报错了。将使其改为3.9就OK了.
3.编译
cd android-afl
mm -B
若一切顺利,最后出现
#### make completed successfully (10 seconds) ####
不过我这里又遇到问题:
target Symbolic: afl-llvm-rt (out/target/product/spwhale2_fpga/symbols/system/lib64/afl-llvm-rt.so)
Export includes file: android-afl/Android.mk -- out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES/afl-llvm-rt_intermediates/export_includes
target Strip: afl-llvm-rt (out/target/product/spwhale2_fpga/obj/lib/afl-llvm-rt.so)
Install: out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so
cp: cannot stat `out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o': No such file or directory
make: *** [out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so] Error 1
make: *** Deleting file `out/target/product/spwhale2_fpga/system/lib64/afl-llvm-rt.so'
问题的原因是:要找到out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o文件,但是实际上没有这个目录和文件。
解决:
我打开这个目录,发现out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES下面确实没有后面的子目录和文件。
于是在android源码文件夹下面搜索“afl-llvm-rt.o.o”,结果找到了,不过目录是"out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES"。
将该目录下的文件夹拷贝到out/target/product/spwhale2_fpga/obj_arm/SHARED_LIBRARIES下面,再次编译。success了。
问题分析:
是android.mk文件中这一行出错的:
LOCAL_POST_INSTALL_CMD := $(hide) cp -f $(TARGET_OUT_INTERMEDIATES)/SHARED_LIBRARIES/afl-llvm-rt_intermediates/llvm_mode/afl-llvm-rt.o.o $(HELPER_PATH)/afl-llvm-rt.o;
不过怎么将这个拷贝的源目录改为out/target/product/spwhale2_fpga/obj/SHARED_LIBRARIES,我就不知道了。
编译完成后,在out/target/product/spwhale2_fpga/system/bin目录下生成如下二进制文件:
afl-analyze
afl-fuzz
afl-gotcup
afl-showmap
afl-tmin
将它们push到手机/system/bin目录下面。就可以运行了。
我push到手机后总提示“not executable: 64-bit ELF file”,最后确定是手机没用对。在什么代码下编译的,最好放入什么手机中运行。
相关文章推荐
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(待续)
- (OK) 移植,编译,安装 LineageOS-14.1-kiwi (Android-7.1.1,运行在Huawei honor 5x) for VirtualBox - 90% 成功
- vlc_for_android 编译安装(未完成)
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(三)——技术白皮书(technical whitepaper)
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(一)——使用初体验
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(待续)
- AFL(American Fuzzy Lop)使用(三)
- (OK) 移植,编译,安装 LineageOS-14.1-kiwi (Android-7.1.1,运行在Huawei honor 5x) for VirtualBox - 100% 成功
- valgrind for android 编译安装
- (OK) 编译,安装 Android-x86_64-nougat (LineageOS 14.1, Android-7.1.1) for VirtualBox - 90% 成功
- AFL(American Fuzzy Lop)使用(一)
- AFL(American Fuzzy Lop)使用(二)
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(四)——直接对二进制进行fuzzing
- (OK) 编译,安装 Android-x86_64-Nougat (LineageOS 14.1, Android-7.1.1) for VirtualBox - 100% 成功
- (OK) 移植,编译,安装 LineageOS-14.1-kiwi (Android-7.1.1,运行在Huawei honor 5x) for VirtualBox - 95% 成功
- American Fuzzy Lop(AFL)介绍
- VLC 编译安装 [for android, linux, windows]
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(二)——详细使用说明(README.txt)
- 在Mac上安装编译OpenCV (for Cpp / Java / Android / Python)
- android反编译工具Apktool安装与使用