1 2if [ -z ${STANDALONE_TOOLCHAIN_PATH} ]; then 3 echo "please set the android-standalone-toolchain path in STANDALONE_TOOLCHAIN_PATH environmental variable" 4 echo "for example: " 5 echo " export STANDALONE_TOOLCHAIN_PATH=/home/android-standalone-toolchain-21/" 6 exit 7fi 8 9if [ -z ${QBDI_SDK_PATH} ]; then 10 echo "please set the qbdi sdk path in QBDI_SDK_PATH environmental variable" 11 echo "for example: " 12 echo " export QBDI_SDK_PATH=/home/QBDI-Android/" 13 exit 14fi 15 16 17 18if [ "$1" = "x86" ]; then 19 echo "build x86 qbdi" 20 compiler_prefix="${STANDALONE_TOOLCHAIN_PATH}/bin/" 21 if [ -z ${CC} ]; then 22 export CC=i686-linux-android-gcc 23 fi 24 if [ -z ${CXX} ]; then 25 export CXX=i686-linux-android-g++ 26 fi 27elif [ "$1" = "x86_64" ]; then 28 echo "build x86_64 qbdi" 29 compiler_prefix="${STANDALONE_TOOLCHAIN_PATH}/bin/" 30 if [ -z ${CC} ]; then 31 export CC=x86_64-linux-android-gcc 32 fi 33 if [ -z ${CXX} ]; then 34 export CXX=x86_64-linux-android-g++ 35 fi 36else 37 echo "usage: ./build.sh arch[x86, x86_64]" 38 exit 39fi 40 41 42CFLAGS="-I${QBDI_SDK_PATH}/usr/local/include/ -L${QBDI_SDK_PATH}/usr/local/lib/" 43 44echo "[+] Building the QBDI template" 45# build the qbdi template 46${compiler_prefix}${CXX} -o loader template.cpp -lQBDI -ldl -w -g ${CFLAGS} 47 48echo "[+] Building the demo library" 49# build the demo share library 50${compiler_prefix}${CC} -shared -o libdemo.so demo-so.c -w -g 51 52echo "[+] Building afl-fuzz for Android" 53# build afl-fuzz 54cd ../.. 55${compiler_prefix}${CC} -O3 -funroll-loops -Wall -D_FORTIFY_SOURCE=2 -g -Wno-pointer-sign -I include/ -DAFL_PATH=\"/usr/local/lib/afl\" -DBIN_PATH=\"/usr/local/bin\" -DDOC_PATH=\"/usr/local/share/doc/afl\" -Wno-unused-function src/afl-fuzz*.c src/afl-common.c src/afl-sharedmem.c src/afl-forkserver.c src/afl-performance.c -o utils/qbdi_mode/afl-fuzz -ldl -lm -w 56 57echo "[+] All done. Enjoy!" 58