Voici la procédure permettant de rooter un HTC Desire sous Froyo (2.2.2) avec son bootloader débloqué grâce à l’exploit GingerBreak. La manipulation suivante permet de comprendre les étapes du root, et aussi d’avoir la maîtrise des outils car tout est fait à partir de code source.

Les outils nécessaires sont :
– le SDK et le NDK android
– l’exploit GingerBreak en version 2 disponible ici
les sources de l’application Superuser de Koush
– une carte SD insérée dans le téléphone

Le SDK est installé dans le répertoire /home/esver/android-sdks.
Le NDK est installé dans le répertoire /home/esver/android-ndk.

Mise en place des différents outils

mkdir GingerRoot
cd GingerRoot

Compilation de l’exploit GingerBreak V2

mkdir GingerBreak
cd GingerBreak
mkdir jni
copier dans le répertoire jni l’exploit GingerBreak v2 et le nommer GingerBreak.c
Créer un fichier Android.mk dans le répertoire jni et y coller

[php]LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := Ginger
LOCAL_SRC_FILES := GingerBreak.c

include $(BUILD_EXECUTABLE)
[/php]

Créer aussi un fichier Application.mk dans ce répertoire jni et y coller

[php]APP_ABI := armeabi
NDK_TOOLCHAIN_VERSION=4.7
APP_PIE = false
[/php]

Compiler l’application :
/home/esver/android-ndk-r8e/ndk-build
L’exécutable se trouve dans le répertoire libs/armeabi/

Compilation de l’application Superuser

Se placer dans le répertoire GingerRoot
Récupérer l’applicatif sur le depot GIT de Koush :
git clone git://github.com/koush/Superuser
git clone git://github.com/koush/Widgets

Créer un fichier local.properties dans le répertoire Superuser/Superuser contenant

[php]ndk.dir=/home/esver/android-ndk/
sdk.dir=/home/esver/android-sdks/[/php]

Copier ce fichier dans le répertoire Widgets/Widgets

Création d’un fichier clé s’il n’en existe pas déjà un avec la commande
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
et copier ce fichier dans /home/esver

Créer un fichier ant.properties dans le répertoire Superuser/Superuser contenant
key.store=/home/esver/my-release-key.keystore
key.alias=alias_name

Entrer dans le répertoire Superuser/Superuser pour compiler l’applicatif Superuser
cd Superuser/Superuser
Et lancer la compilation
ant release

L’executable su se trouver dans libs/armeabi/su et l’apk se trouve dans bin/Superuser-release.apk

Utilisation de l’exploit ainsi que de l’applicatif Superuser pour rooter le téléphone

Créer un répertoire stuff dans le répertoire GingerRoot et y copier le binaire su, l’apk ainsi que le binaire Ginger ainsi que le binaire adb (/home/esver/android-sdks/platform-tools/adb)
Connecter le téléphone en usb avec l’option développement par usb,
copier les fichiers dans le répertoire /data/local/tmp du téléphone :
./stuff/adb push stuff/Ginger /data/local/tmp/Ginger
./stuff/adb push stuff/su /data/local/tmp/su
./stuff/adb push stuff/Superuser-release.apk /data/local/tmp/Superuser-release.apk

Se connecter au shell sur le téléphone :
./stuff/adb shell

Une fois sur le tel aller dans le répertoire /data/local/tmp et lancer l’exploit Ginger :
cd /data/local/tmp
./Ginger

Normalement ça y est on est root (passage de $ à #), il faut maintenant remonter la partition system en écriture (la partition peut être différente suivant les téléphones, le voir avec la commande mount) :
mount -o rw,remount /dev/block/mtdblock3 /system

Copier les fichiers su et l’apk dans les répertoires /system/bin et /system/app et changer les droits sur les fichiers :
cat su > /system/xbin/su
chown 0:0 /system/xbin/su
chmod 6755 /system/xbin/su
ln -s /system/xbin/su /system/bin/su

cat Superuser-release.apk > /system/app/Superuser.apk
chmod 644 /system/app/Superuser.apk

Normalement tout est bon, redémarrer le téléphone, le mode root est accessible.