Environnement de reverse Android

Quelques notes pour avoir un environnement de reverse de base pour Android.
Table des matières
Je dépose dans ce repo un kit.
Installation des drivers du téléphone
Par défaut Windows 10 n’installe pas les drivers pour faire du adb (du moins pour le Galaxy S9).
Si on reçoit le message :
# adb shell
error no devices/emulators found
Contrôler la présence des drivers (hdwwiz.cpl) :

Et au besoin télécharger ici (pour le constructeur Samsung)
Utiliser le fork de putty puttytray pour visualiser les logs adb.
Installation du wrapper
Ceci nous évitera d’avoir à taper java -jar …
Script original : https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
Source de wrapper.sh
#!/bin/bash
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=apktool.jar
libdir="$progdir"
if [ ! -r "$libdir/$jarfile" ]
then
echo `basename "$prog"`": can't find $jarfile"
exit 1
fi
javaOpts=""
javaOpts="-Xmx512M -Dfile.encoding=utf-8"
# Alternatively, this will extract any parameter "-Jxxx" from the command line
# add a command-line parameter such as "-JXmx256M" in your ant scripts, for
while expr "x$1" : 'x-J' >/dev/null; do
opt=`expr "$1" : '-J\(.*\)'`
javaOpts="${javaOpts} -${opt}"
shift
done
if [ "$OSTYPE" = "cygwin" ] ; then
jarpath=`cygpath -w "$libdir/$jarfile"`
else
jarpath="$libdir/$jarfile"
fi
PATH=$PATH:`pwd`;
export PATH;
exec java $javaOpts -jar "$jarpath" "$@"
On remplacera la valeur de la variable jarfile par nos différents binaires
jarfile=apktool.jar
Ajout des binaires
Apktool
wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
sudo cp wrapper.sh /usr/local/bin/apktool
sudo chmod +x /usr/local/bin/apktool
mv apktool_2.4.1.jar /usr/local/bin/apktool.jar
baksmali
wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.4.0.jar
sudo cp wrapper.sh /usr/local/bin/baksmali
sudo chmod +x /usr/local/bin/baksmali
mv baksmali-2.4.0.jar /usr/local/bin/baksmali.jar
smali
wget https://bitbucket.org/JesusFreke/smali/downloads/smali-2.4.0.jar
sudo cp wrapper.sh /usr/local/bin/smali
sudo chmod +x /usr/local/bin/smali
mv smali-2.4.0.jar /usr/local/bin/smali.jar
appt
sudo apt install aapt
apksigner
wget https://github.com/patrickfav/uber-apk-signer/releases/download/v1.1.0/uber-apk-signer-1.1.0.jar
sudo cp wrapper.sh /usr/local/bin/apksigner
sudo chmod +x /usr/local/bin/apksigner
sudo mv uber-apk-signer-1.1.0.jar /usr/local/bin/apksigner.jar
Génerer un keystore
echo y | keytool -genkeypair -dname "cn=Redteams, ou=reverse, c=FR" -alias business -keypass 'redteams.fr' -keystore store.jks -storepass 'redteams.fr' -validity 20000 -keysize 1024
Signer un apk
apksigner sign --ks store.jks --ksAlias business --ksKeyPass 'redteams.fr' --ksPass 'redteams.fr' -a myApk.apk
VDEX extractor
Compilation du binaire vdexExtractor
git clone https://github.com/anestisb/vdexExtractor.git
make.sh gcc
A noter que le sous-répertoire tools contient un script pour automatiser la “deodexation”.