Analysons le firmware GEN 9 d’Archos

Voici un petit topo de LETAMA concernant ses recherches sur le firmware !

Ce n’est pas pour les enfants de Madame MICHU, mais cela pourrais intéresser des développeurs/bidouilleurs
de génie !

Voici un petit topo sur l’analyse du firmware:

J’ai utilisé les clefs AES/MPK (http://forum.xda-developers.com/showthread.php?t=1349184 ) dans les
aos-tools pour extraire le dernier firmware archos (3.2.69).

L’extract me donne ça:

Dans raw:
-rw-rw-r– 1 tama tama   66584 2011-11-16 15:56 7_MMCF
-rw-rw-r– 1 tama tama   75592 2011-11-16 15:56 6_MMCF
-rw-rw-r– 1 tama tama       8 2011-11-16 15:56 4_EXT0
-rw-rw-r– 1 tama tama 3053576 2011-11-16 15:56 9_MMCF
-rw-rw-r– 1 tama tama 2275928 2011-11-16 15:56 10_MMCF
-rw-rw-r– 1 tama tama     264 2011-11-16 15:56 13_EXT2

Dans root/data:
androidmerged.squashfs.secure

androidmerged.squashfs.secure est l’habituel squashfs qui se trouve dans /mnt/system. Il s’agit d’un fichier squashfs standard précédé de 256 octets
de header contenant le checksum de vérification.
Pour rooter proprement la
gen9, j’ai juste fait un unsquashfs, ajouté le package superuser, refait un squashfs avec mksquashfs et ré-ajouté le header. L’astuce consiste à:

1) modifier l’initrd pour faire sauter le test du checksum sur le squashfs
2) ajouter à l’initrd un petit mécanisme pour faire une copie de mon
squashfs.secure modifié vers /mnt/system.

Facile ? Bien plus que sur la gen8: sur la gen8 et précédentes, boot0 vérifie le checksum d’avboot et avboot vérifie le checksum du kernel+initrd.gz.
Donc
pour pouvoir modifier l’initrd, Il faut patcher les deux bootloaders pour que le test de checksum ne se fasse pas.
Une erreur sur le patch ou n’en
patcher qu’un seul et la tablette ne boote pas.
Ici, rien de tout ça pour la
gen9, donc peu de risque de se retrouver avec une brique.

Bref, poursuivons. Dans raw, on trouve:

7_MMC: fichier avboot, le deuxième bootloader de nos tablettes.
6_MMC: rawmmc, il s’agit de ce qu’on appelle le boot0, le premier bootloader
qui se contente de charger avboot.
9_MMC: fichier init du rawfs, qui est le kernel+initrd.lzma pour démarrer
Android
10_MMC: fichier recovery du rawfs, kernel+lzma du recovery mode.

Les fichiers init et recovery sont simplement une concatenation du zImage et de l’initrd précédé par un header contenant
un checksum de vérification +
les tailles des zImage/Initrd (structure flash_header des aos-tools).

Voila, donc ce firmware mets bien à jour les deux bootloaders.

PS: j’ai bien pris 2 aspirines …. suite à cette lecture  !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.