1*08b48e0bSAndroid Build Coastguard Worker#!/bin/bash 2*08b48e0bSAndroid Build Coastguard Worker 3*08b48e0bSAndroid Build Coastguard Worker# if you want a specific performance file (e.g. to compare features to another) 4*08b48e0bSAndroid Build Coastguard Worker# you can set the AFL_PERFORMANCE_FILE environment variable: 5*08b48e0bSAndroid Build Coastguard WorkerFILE=$AFL_PERFORMANCE_FILE 6*08b48e0bSAndroid Build Coastguard Worker# otherwise we use ~/.afl_performance 7*08b48e0bSAndroid Build Coastguard Workertest -z "$FILE" && FILE=.afl_performance 8*08b48e0bSAndroid Build Coastguard Worker 9*08b48e0bSAndroid Build Coastguard Workertest -e $FILE || { 10*08b48e0bSAndroid Build Coastguard Worker echo Warning: This script measure the performance of AFL++ and saves the result for future comparisons into $FILE 11*08b48e0bSAndroid Build Coastguard Worker echo Press ENTER to continue or CONTROL-C to abort 12*08b48e0bSAndroid Build Coastguard Worker read IN 13*08b48e0bSAndroid Build Coastguard Worker} 14*08b48e0bSAndroid Build Coastguard Worker 15*08b48e0bSAndroid Build Coastguard Workertest -e ./test-performance.sh || { echo Error: this script must be run from the directory in which it lies. ; exit 1 ; } 16*08b48e0bSAndroid Build Coastguard Worker 17*08b48e0bSAndroid Build Coastguard Workerexport AFL_QUIET=1 18*08b48e0bSAndroid Build Coastguard Workerexport AFL_PATH=`pwd`/.. 19*08b48e0bSAndroid Build Coastguard Worker 20*08b48e0bSAndroid Build Coastguard Workerunset AFL_EXIT_WHEN_DONE 21*08b48e0bSAndroid Build Coastguard Workerunset AFL_EXIT_ON_TIME 22*08b48e0bSAndroid Build Coastguard Workerunset AFL_SKIP_CPUFREQ 23*08b48e0bSAndroid Build Coastguard Workerunset AFL_DEBUG 24*08b48e0bSAndroid Build Coastguard Workerunset AFL_HARDEN 25*08b48e0bSAndroid Build Coastguard Workerunset AFL_USE_ASAN 26*08b48e0bSAndroid Build Coastguard Workerunset AFL_USE_MSAN 27*08b48e0bSAndroid Build Coastguard Workerunset AFL_CC 28*08b48e0bSAndroid Build Coastguard Workerunset AFL_PRELOAD 29*08b48e0bSAndroid Build Coastguard Workerunset AFL_GCC_INSTRUMENT_FILE 30*08b48e0bSAndroid Build Coastguard Workerunset AFL_LLVM_INSTRUMENT_FILE 31*08b48e0bSAndroid Build Coastguard Workerunset AFL_LLVM_INSTRIM 32*08b48e0bSAndroid Build Coastguard Workerunset AFL_LLVM_LAF_SPLIT_SWITCHES 33*08b48e0bSAndroid Build Coastguard Workerunset AFL_LLVM_LAF_TRANSFORM_COMPARES 34*08b48e0bSAndroid Build Coastguard Workerunset AFL_LLVM_LAF_SPLIT_COMPARES 35*08b48e0bSAndroid Build Coastguard Worker 36*08b48e0bSAndroid Build Coastguard Worker# on OpenBSD we need to work with llvm from /usr/local/bin 37*08b48e0bSAndroid Build Coastguard Workertest -e /usr/local/bin/opt && { 38*08b48e0bSAndroid Build Coastguard Worker export PATH=/usr/local/bin:${PATH} 39*08b48e0bSAndroid Build Coastguard Worker} 40*08b48e0bSAndroid Build Coastguard Worker# on MacOS X we prefer afl-clang over afl-gcc, because 41*08b48e0bSAndroid Build Coastguard Worker# afl-gcc does not work there 42*08b48e0bSAndroid Build Coastguard Workertest `uname -s` = 'Darwin' -o `uname -s` = 'FreeBSD' && { 43*08b48e0bSAndroid Build Coastguard Worker AFL_GCC=afl-clang 44*08b48e0bSAndroid Build Coastguard Worker CC=clang 45*08b48e0bSAndroid Build Coastguard Worker} || { 46*08b48e0bSAndroid Build Coastguard Worker AFL_GCC=afl-gcc 47*08b48e0bSAndroid Build Coastguard Worker CC=gcc 48*08b48e0bSAndroid Build Coastguard Worker} 49*08b48e0bSAndroid Build Coastguard Worker 50*08b48e0bSAndroid Build Coastguard WorkerECHO="printf %b\\n" 51*08b48e0bSAndroid Build Coastguard Worker$ECHO \\101 2>&1 | grep -qE '^A' || { 52*08b48e0bSAndroid Build Coastguard Worker ECHO= 53*08b48e0bSAndroid Build Coastguard Worker test -e /bin/printf && { 54*08b48e0bSAndroid Build Coastguard Worker ECHO="/bin/printf %b\\n" 55*08b48e0bSAndroid Build Coastguard Worker $ECHO '\\101' 2>&1 | grep -qE '^A' || ECHO= 56*08b48e0bSAndroid Build Coastguard Worker } 57*08b48e0bSAndroid Build Coastguard Worker} 58*08b48e0bSAndroid Build Coastguard Workertest -z "$ECHO" && { printf Error: printf command does not support octal character codes ; exit 1 ; } 59*08b48e0bSAndroid Build Coastguard Worker 60*08b48e0bSAndroid Build Coastguard WorkerGREY="\\033[1;90m" 61*08b48e0bSAndroid Build Coastguard WorkerBLUE="\\033[1;94m" 62*08b48e0bSAndroid Build Coastguard WorkerGREEN="\\033[0;32m" 63*08b48e0bSAndroid Build Coastguard WorkerRED="\\033[0;31m" 64*08b48e0bSAndroid Build Coastguard WorkerYELLOW="\\033[1;93m" 65*08b48e0bSAndroid Build Coastguard WorkerRESET="\\033[0m" 66*08b48e0bSAndroid Build Coastguard Worker 67*08b48e0bSAndroid Build Coastguard WorkerMEM_LIMIT=500 68*08b48e0bSAndroid Build Coastguard Worker 69*08b48e0bSAndroid Build Coastguard Workertouch $FILE || { echo Error: can not write to $FILE ; exit 1 ; } 70*08b48e0bSAndroid Build Coastguard Worker 71*08b48e0bSAndroid Build Coastguard Workerecho Warning: this script is setting performance parameters with afl-system-config 72*08b48e0bSAndroid Build Coastguard Workersleep 1 73*08b48e0bSAndroid Build Coastguard Workerafl-system-config > /dev/null 2>&1 74*08b48e0bSAndroid Build Coastguard Workerecho Performance settings applied. 75*08b48e0bSAndroid Build Coastguard Workerecho 76*08b48e0bSAndroid Build Coastguard Worker 77*08b48e0bSAndroid Build Coastguard Worker$ECHO "${RESET}${GREY}[*] starting AFL++ performance test framework ..." 78*08b48e0bSAndroid Build Coastguard Worker 79*08b48e0bSAndroid Build Coastguard Worker$ECHO "$BLUE[*] Testing: ${AFL_GCC}" 80*08b48e0bSAndroid Build Coastguard WorkerGCC=x 81*08b48e0bSAndroid Build Coastguard Workertest -e ../${AFL_GCC} -a -e ../afl-fuzz && { 82*08b48e0bSAndroid Build Coastguard Worker ../${AFL_GCC} -o test-instr.plain ../test-instr.c > /dev/null 2>&1 83*08b48e0bSAndroid Build Coastguard Worker test -e test-instr.plain && { 84*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREEN[+] ${AFL_GCC} compilation succeeded" 85*08b48e0bSAndroid Build Coastguard Worker mkdir -p in 86*08b48e0bSAndroid Build Coastguard Worker echo 0 > in/in 87*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREY[*] running afl-fuzz for ${AFL_GCC} for 30 seconds" 88*08b48e0bSAndroid Build Coastguard Worker { 89*08b48e0bSAndroid Build Coastguard Worker ../afl-fuzz -V 30 -s 123 -m ${MEM_LIMIT} -i in -o out-gcc -- ./test-instr.plain 90*08b48e0bSAndroid Build Coastguard Worker } >>errors 2>&1 91*08b48e0bSAndroid Build Coastguard Worker test -n "$( ls out-gcc/default/queue/id:000002* 2> /dev/null )" && { 92*08b48e0bSAndroid Build Coastguard Worker GCC=`grep execs_done out-gcc/default/fuzzer_stats | awk '{print$3}'` 93*08b48e0bSAndroid Build Coastguard Worker } || { 94*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 95*08b48e0bSAndroid Build Coastguard Worker cat errors 96*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 97*08b48e0bSAndroid Build Coastguard Worker $ECHO "$RED[!] afl-fuzz is not working correctly with ${AFL_GCC}" 98*08b48e0bSAndroid Build Coastguard Worker } 99*08b48e0bSAndroid Build Coastguard Worker rm -rf in out-gcc errors test-instr.plain 100*08b48e0bSAndroid Build Coastguard Worker } || $ECHO "$RED[!] ${AFL_GCC} instrumentation failed" 101*08b48e0bSAndroid Build Coastguard Worker} || $ECHO "$YELLOW[-] afl is not compiled, cannot test" 102*08b48e0bSAndroid Build Coastguard Worker 103*08b48e0bSAndroid Build Coastguard Worker$ECHO "$BLUE[*] Testing: llvm_mode" 104*08b48e0bSAndroid Build Coastguard WorkerLLVM=x 105*08b48e0bSAndroid Build Coastguard Workertest -e ../afl-clang-fast -a -e ../afl-fuzz && { 106*08b48e0bSAndroid Build Coastguard Worker ../afl-clang-fast -o test-instr.llvm ../test-instr.c > /dev/null 2>&1 107*08b48e0bSAndroid Build Coastguard Worker test -e test-instr.llvm && { 108*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREEN[+] llvm_mode compilation succeeded" 109*08b48e0bSAndroid Build Coastguard Worker mkdir -p in 110*08b48e0bSAndroid Build Coastguard Worker echo 0 > in/in 111*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREY[*] running afl-fuzz for llvm_mode for 30 seconds" 112*08b48e0bSAndroid Build Coastguard Worker { 113*08b48e0bSAndroid Build Coastguard Worker ../afl-fuzz -V 30 -s 123 -m ${MEM_LIMIT} -i in -o out-llvm -- ./test-instr.llvm 114*08b48e0bSAndroid Build Coastguard Worker } >>errors 2>&1 115*08b48e0bSAndroid Build Coastguard Worker test -n "$( ls out-llvm/default/queue/id:000002* 2> /dev/null )" && { 116*08b48e0bSAndroid Build Coastguard Worker LLVM=`grep execs_done out-llvm/default/fuzzer_stats | awk '{print$3}'` 117*08b48e0bSAndroid Build Coastguard Worker } || { 118*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 119*08b48e0bSAndroid Build Coastguard Worker cat errors 120*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 121*08b48e0bSAndroid Build Coastguard Worker $ECHO "$RED[!] afl-fuzz is not working correctly with llvm_mode" 122*08b48e0bSAndroid Build Coastguard Worker } 123*08b48e0bSAndroid Build Coastguard Worker rm -rf in out-llvm errors test-instr.llvm 124*08b48e0bSAndroid Build Coastguard Worker } || $ECHO "$RED[!] llvm_mode instrumentation failed" 125*08b48e0bSAndroid Build Coastguard Worker} || $ECHO "$YELLOW[-] llvm_mode is not compiled, cannot test" 126*08b48e0bSAndroid Build Coastguard Worker 127*08b48e0bSAndroid Build Coastguard Worker$ECHO "$BLUE[*] Testing: gcc_plugin" 128*08b48e0bSAndroid Build Coastguard WorkerGCCP=x 129*08b48e0bSAndroid Build Coastguard Workertest -e ../afl-gcc-fast -a -e ../afl-fuzz && { 130*08b48e0bSAndroid Build Coastguard Worker ../afl-gcc-fast -o test-instr.gccp ../test-instr.c > /dev/null 2>&1 131*08b48e0bSAndroid Build Coastguard Worker test -e test-instr.gccp && { 132*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREEN[+] gcc_plugin compilation succeeded" 133*08b48e0bSAndroid Build Coastguard Worker mkdir -p in 134*08b48e0bSAndroid Build Coastguard Worker echo 0 > in/in 135*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREY[*] running afl-fuzz for gcc_plugin for 30 seconds" 136*08b48e0bSAndroid Build Coastguard Worker { 137*08b48e0bSAndroid Build Coastguard Worker ../afl-fuzz -V 30 -s 123 -m ${MEM_LIMIT} -i in -o out-gccp -- ./test-instr.gccp 138*08b48e0bSAndroid Build Coastguard Worker } >>errors 2>&1 139*08b48e0bSAndroid Build Coastguard Worker test -n "$( ls out-gccp/default/queue/id:000002* 2> /dev/null )" && { 140*08b48e0bSAndroid Build Coastguard Worker GCCP=`grep execs_done out-gccp/default/fuzzer_stats | awk '{print$3}'` 141*08b48e0bSAndroid Build Coastguard Worker } || { 142*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 143*08b48e0bSAndroid Build Coastguard Worker cat errors 144*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 145*08b48e0bSAndroid Build Coastguard Worker $ECHO "$RED[!] afl-fuzz is not working correctly with gcc_plugin" 146*08b48e0bSAndroid Build Coastguard Worker } 147*08b48e0bSAndroid Build Coastguard Worker rm -rf in out-gccp errors test-instr.gccp 148*08b48e0bSAndroid Build Coastguard Worker } || $ECHO "$RED[!] gcc_plugin instrumentation failed" 149*08b48e0bSAndroid Build Coastguard Worker} || $ECHO "$YELLOW[-] gcc_plugin is not compiled, cannot test" 150*08b48e0bSAndroid Build Coastguard Worker 151*08b48e0bSAndroid Build Coastguard Worker$ECHO "$BLUE[*] Testing: qemu_mode" 152*08b48e0bSAndroid Build Coastguard WorkerQEMU=x 153*08b48e0bSAndroid Build Coastguard Workertest -e ../afl-qemu-trace -a -e ../afl-fuzz && { 154*08b48e0bSAndroid Build Coastguard Worker $CC -o test-instr.qemu ../test-instr.c > /dev/null 2>&1 155*08b48e0bSAndroid Build Coastguard Worker test -e test-instr.qemu && { 156*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREEN[+] native compilation with cc succeeded" 157*08b48e0bSAndroid Build Coastguard Worker mkdir -p in 158*08b48e0bSAndroid Build Coastguard Worker echo 0 > in/in 159*08b48e0bSAndroid Build Coastguard Worker $ECHO "$GREY[*] running afl-fuzz for qemu_mode for 30 seconds" 160*08b48e0bSAndroid Build Coastguard Worker { 161*08b48e0bSAndroid Build Coastguard Worker ../afl-fuzz -Q -V 30 -s 123 -m ${MEM_LIMIT} -i in -o out-qemu -- ./test-instr.qemu 162*08b48e0bSAndroid Build Coastguard Worker } >>errors 2>&1 163*08b48e0bSAndroid Build Coastguard Worker test -n "$( ls out-qemu/default/queue/id:000002* 2> /dev/null )" && { 164*08b48e0bSAndroid Build Coastguard Worker QEMU=`grep execs_done out-qemu/default/fuzzer_stats | awk '{print$3}'` 165*08b48e0bSAndroid Build Coastguard Worker } || { 166*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 167*08b48e0bSAndroid Build Coastguard Worker echo ../afl-fuzz -Q -V 30 -s 123 -m ${MEM_LIMIT} -i in -o out-qemu -- ./test-instr.qemu 168*08b48e0bSAndroid Build Coastguard Worker cat errors 169*08b48e0bSAndroid Build Coastguard Worker echo CUT---------------------------------------------------------------- 170*08b48e0bSAndroid Build Coastguard Worker $ECHO "$RED[!] afl-fuzz is not working correctly with qemu_mode" 171*08b48e0bSAndroid Build Coastguard Worker } 172*08b48e0bSAndroid Build Coastguard Worker rm -rf in out-qemu errors test-instr.qemu 173*08b48e0bSAndroid Build Coastguard Worker } || $ECHO "$RED[!] qemu_mode instrumentation failed" 174*08b48e0bSAndroid Build Coastguard Worker} || $ECHO "$YELLOW[-] qemu_mode is not compiled, cannot test" 175*08b48e0bSAndroid Build Coastguard Worker 176*08b48e0bSAndroid Build Coastguard WorkerLOW_GCC= 177*08b48e0bSAndroid Build Coastguard WorkerHIGH_GCC= 178*08b48e0bSAndroid Build Coastguard WorkerLAST_GCC= 179*08b48e0bSAndroid Build Coastguard WorkerLOW_LLVM= 180*08b48e0bSAndroid Build Coastguard WorkerHIGH_LLVM= 181*08b48e0bSAndroid Build Coastguard WorkerLAST_LLVM= 182*08b48e0bSAndroid Build Coastguard WorkerLOW_GCCP= 183*08b48e0bSAndroid Build Coastguard WorkerHIGH_GCCP= 184*08b48e0bSAndroid Build Coastguard WorkerLAST_GCCP= 185*08b48e0bSAndroid Build Coastguard WorkerLOW_QEMU= 186*08b48e0bSAndroid Build Coastguard WorkerHIGH_QEMU= 187*08b48e0bSAndroid Build Coastguard WorkerLAST_QEMU= 188*08b48e0bSAndroid Build Coastguard Worker 189*08b48e0bSAndroid Build Coastguard Workertest -s $FILE && { 190*08b48e0bSAndroid Build Coastguard Worker while read LINE; do 191*08b48e0bSAndroid Build Coastguard Worker G=`echo $LINE | awk '{print$1}'` 192*08b48e0bSAndroid Build Coastguard Worker L=`echo $LINE | awk '{print$2}'` 193*08b48e0bSAndroid Build Coastguard Worker P=`echo $LINE | awk '{print$3}'` 194*08b48e0bSAndroid Build Coastguard Worker Q=`echo $LINE | awk '{print$4}'` 195*08b48e0bSAndroid Build Coastguard Worker test "$G" = x && G= 196*08b48e0bSAndroid Build Coastguard Worker test "$L" = x && L= 197*08b48e0bSAndroid Build Coastguard Worker test "$P" = x && P= 198*08b48e0bSAndroid Build Coastguard Worker test "$Q" = x && Q= 199*08b48e0bSAndroid Build Coastguard Worker test -n "$G" && LAST_GCC=$G 200*08b48e0bSAndroid Build Coastguard Worker test -n "$L" && LAST_LLVM=$L 201*08b48e0bSAndroid Build Coastguard Worker test -n "$P" && LAST_GCCP=$P 202*08b48e0bSAndroid Build Coastguard Worker test -n "$Q" && LAST_QEMU=$Q 203*08b48e0bSAndroid Build Coastguard Worker test -n "$G" -a -z "$LOW_GCC" && LOW_GCC=$G || { 204*08b48e0bSAndroid Build Coastguard Worker test -n "$G" -a "$G" -lt "$LOW_GCC" 2> /dev/null && LOW_GCC=$G 205*08b48e0bSAndroid Build Coastguard Worker } 206*08b48e0bSAndroid Build Coastguard Worker test -n "$L" -a -z "$LOW_LLVM" && LOW_LLVM=$L || { 207*08b48e0bSAndroid Build Coastguard Worker test -n "$L" -a "$L" -lt "$LOW_LLVM" 2> /dev/null && LOW_LLVM=$L 208*08b48e0bSAndroid Build Coastguard Worker } 209*08b48e0bSAndroid Build Coastguard Worker test -n "$P" -a -z "$LOW_GCCP" && LOW_GCCP=$P || { 210*08b48e0bSAndroid Build Coastguard Worker test -n "$P" -a "$P" -lt "$LOW_GCCP" 2> /dev/null && LOW_GCCP=$P 211*08b48e0bSAndroid Build Coastguard Worker } 212*08b48e0bSAndroid Build Coastguard Worker test -n "$Q" -a -z "$LOW_QEMU" && LOW_QEMU=$Q || { 213*08b48e0bSAndroid Build Coastguard Worker test -n "$Q" -a "$Q" -lt "$LOW_QEMU" 2> /dev/null && LOW_QEMU=$Q 214*08b48e0bSAndroid Build Coastguard Worker } 215*08b48e0bSAndroid Build Coastguard Worker test -n "$G" -a -z "$HIGH_GCC" && HIGH_GCC=$G || { 216*08b48e0bSAndroid Build Coastguard Worker test -n "$G" -a "$G" -gt "$HIGH_GCC" 2> /dev/null && HIGH_GCC=$G 217*08b48e0bSAndroid Build Coastguard Worker } 218*08b48e0bSAndroid Build Coastguard Worker test -n "$L" -a -z "$HIGH_LLVM" && HIGH_LLVM=$L || { 219*08b48e0bSAndroid Build Coastguard Worker test -n "$L" -a "$L" -gt "$HIGH_LLVM" 2> /dev/null && HIGH_LLVM=$L 220*08b48e0bSAndroid Build Coastguard Worker } 221*08b48e0bSAndroid Build Coastguard Worker test -n "$P" -a -z "$HIGH_GCCP" && HIGH_GCCP=$P || { 222*08b48e0bSAndroid Build Coastguard Worker test -n "$P" -a "$P" -gt "$HIGH_GCCP" 2> /dev/null && HIGH_GCCP=$P 223*08b48e0bSAndroid Build Coastguard Worker } 224*08b48e0bSAndroid Build Coastguard Worker test -n "$Q" -a -z "$HIGH_QEMU" && HIGH_QEMU=$Q || { 225*08b48e0bSAndroid Build Coastguard Worker test -n "$Q" -a "$Q" -gt "$HIGH_QEMU" 2> /dev/null && HIGH_QEMU=$Q 226*08b48e0bSAndroid Build Coastguard Worker } 227*08b48e0bSAndroid Build Coastguard Worker done < $FILE 228*08b48e0bSAndroid Build Coastguard Worker $ECHO "$YELLOW[!] Reading saved data from $FILE completed, please compare the results:" 229*08b48e0bSAndroid Build Coastguard Worker $ECHO "$BLUE[!] afl-cc: lowest=$LOW_GCC highest=$HIGH_GCC last=$LAST_GCC current=$GCC" 230*08b48e0bSAndroid Build Coastguard Worker $ECHO "$BLUE[!] llvm_mode: lowest=$LOW_LLVM highest=$HIGH_LLVM last=$LAST_LLVM current=$LLVM" 231*08b48e0bSAndroid Build Coastguard Worker $ECHO "$BLUE[!] gcc_plugin: lowest=$LOW_GCCP highest=$HIGH_GCCP last=$LAST_GCCP current=$GCCP" 232*08b48e0bSAndroid Build Coastguard Worker $ECHO "$BLUE[!] qemu_mode: lowest=$LOW_QEMU highest=$HIGH_QEMU last=$LAST_QEMU current=$QEMU" 233*08b48e0bSAndroid Build Coastguard Worker} || { 234*08b48e0bSAndroid Build Coastguard Worker $ECHO "$YELLOW[!] First run, just saving data" 235*08b48e0bSAndroid Build Coastguard Worker $ECHO "$BLUE[!] afl-gcc=$GCC llvm_mode=$LLVM gcc_plugin=$GCCP qemu_mode=$QEMU" 236*08b48e0bSAndroid Build Coastguard Worker} 237*08b48e0bSAndroid Build Coastguard Workerecho "$GCC $LLVM $GCCP $QEMU" >> $FILE 238*08b48e0bSAndroid Build Coastguard Worker$ECHO "$GREY[*] done." 239*08b48e0bSAndroid Build Coastguard Worker$ECHO "$RESET" 240