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) :

alt text

Device Manager

Et au besoin télécharger ici (pour le constructeur Samsung)

Utiliser le fork de putty puttytray pour visualiser les logs adb.

alt text

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

Related