Bonjour,
Je suis en train de jouer avec le format APK d'Android, et actuellement je tente d'écrire une application Delphi capable réassembler les fichiers extraits d'une application Android.
je suis donc parti d'une application source "Hello World" que je compile à la main suivant ces étapes
1) aapt pour créer R.java
2) javac pour compiler les sources Java
3) dx pour créer classes.dex
4) aapt pour assembler le fichier APK
5) keytool pour obtenir un keystore
6) jarsigner pour signer l'APK
7) ZipAlign pour aligner l'APK
en dézippant l'APK final je retrouve ces fichiers:
je sais faire un fichier ZIP aligné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 META-INF/MANIFEST.MF META-INF/ANDROiDT.SF META-INF/ANDROIDT.RSA AndroidManifest.xml classes.dex res/drawable/mylogo.png resources.arsc
j'ai trouvé comme générer les deux premiers fichiers (lien)
avant de passer à la compilation du XML en binaire (et la construction du .dex et .arsc) je m'intéresse à la signature.
J'ai compris la structure du fichier RSA et du Keystore (grâce à ce lien), mais il me manque une information capitale : le calcule de la signature !
j'ai cru comprendre qu'il fallait faire un SHA256 du fichier ANDROIDT.SF et lui appliquer RSA ...c'est à dire calculer : X = (P^e mod n), mais si P est le hash et X la valeur recherchée, d'où proviennent e et n...du keystore j'imagine...mais je sèche un peu pour calculer ces foutus 128 octets manquants !
Comme le problème n'est pas vraiment lié à Delphi et/ou Android et que je ne veux pas une solution qui s'appuie sur une lib Java, du coup je pose la question ici à tout hasard
Merci
Partager