Je suis un étudiant intéressé par la sécurité Android. Jessayais de modifier un fichier APK en utilisant baksmali et smali. Cependant, je ne peux pas exécuter lapplication reconditionnée sur mon mobile. Lorsque je clique sur licône, il dit « Malheureusement, le test sest arrêté » et existe. (Même licône de lapplication a été modifiée, maintenant je vois licône Android par défaut au lieu de lancienne véritable icône colorée de lapplication)
Quelle pourrait en être la raison? En fait, je nai même pas modifié le code du fichier apk. Je viens de décompresser apk pour obtenir le fichier dex, puis je lai converti en smali en utilisant baksmali.jar
, puis je suis revenu à dex en utilisant smali.jar
. Enfin compressé et signé.
Ce que jai fait en détail:
-
Décompressez le fichier apk
$ Unzip test.apk
-
Convertir 1classes.dex1 en smali
$ baksmali -x classes.dex -o smaliClasses
-
A reconverti les classes en
classes.dex
(remplacé lancienclasses.dex
, en fait je nai pas ajouté de nouveau code au fichier smali . Je voulais savoir si cela fonctionne en premier).$ smali smaliClasses -o classes.dex
-
Compressez tous les fichiers dans
test.zip
$ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc
-
Renommer
test.zip
entest.apk
$ mv test.zip test.apk
Je pense que je dois à nouveau signer lAPK, veuillez me corriger si je me trompe ici.
Modifié
:
-
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
-
Jai essayé dinstaller le nouvel APK reconditionné. Utilisation du shell adb. Le shell Adb a montré quil était installé avec succès. Cependant, je ne suis pas en mesure dexécuter lapplication reconditionnée sur mobile. Lapplication plante lorsque je clique dessus. Il dit « Malheureusement, le test sest arrêté ».
Pourquoi lapplication reconditionnée ne fonctionne-t-elle pas? Je ne comprends pas ce qui me manque ici?
Modifié :
Jai essayé de reconditionner la même application en utilisant apktool. Jai extrait les fichiers smali en lutilisant et reconditionné. Mais pourquoi le reconditionnement ne fonctionne pas avec baksmali, smali, zip et signapk. La fermeture éclair est-elle le vrai problème dans cette procédure? Je vois que la taille de lapplication est considérablement réduite lorsque je la compresser et la renommer en .apk par rapport au fichier apk dorigine: |
Commentaires
Réponse
Jutilise apktool
à cette fin, et une courte petite paire de scripts shell pour décompiler et recompiler les APK:
-
decompile-apk
#!/bin/bash -e if ! [ "$1" ]; then echo "usage: $0 <file.apk>" exit -1 fi fn=${1%.apk} target_apk=$fn.apk apktool d -f "$target_apk" -o smali echo "Done."
-
compile-apk
#!/bin/bash -e if ! [ "$1" ]; then echo "usage: $0 <original.apk>" exit -1 fi fn=${1%.apk} rm -f $fn.unaligned.apk $fn.smali.apk rm -rf smali/build apktool b -f smali/ -o $fn.unaligned.apk jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android $fn.unaligned.apk androiddebugkey zipalign -v 4 $fn.unaligned.apk $fn.smali.apk rm -rf smali/build
Lutilisation de apktool
présente lavantage de pouvoir afficher et modifier toutes les ressources également comme fichier manifeste décodé.
Commentaires
- Cest la seule méthode qui fonctionne pour moi. Jai ‘ essayé des dizaines, aucun na fonctionné. Merci beaucoup.
Réponse
Après avoir joué avec smali / baksmali, je lai fait fonctionner. Je pense que vous n’avez pas utilisé l’indicateur récursif lors de la compression de . Le dossier res était vide, ce qui a provoqué le crash. Aussi, je lance zipalign après avoir signé lapk.
Étapes:
- Décompressez
$ unzip test.apk
- Baksmali
$ baksmali classes.dex -o smaliClasses
- Smali
$ smali smaliClasses -o classes.dex
- Zip -r
$ zip -r test.apk AndroidManifest.xml classes.dex res/ resources.arsc
- Jarsign
$ java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
- Zipalign
$ zipalign -v 4 test-patched.apk final-apk.apk
- Profit 🙂
Réponse
Je ne peux « pas commenter en raison de réputation, je vais donc le publier ici.
Puisque le travail est fait correctement avec lutilisation dapktool, il me semble que quelque chose ne va pas avec le processus zip.
Après en reconditionnant lapplication, pouvez-vous vérifier que le contenu du nouvel APK est identique (en ce qui concerne les noms de fichiers et la structure) avec le contenu de loriginal?
EDIT: aussi, puisque le fichier est un fichier .dex, je ne pense pas que vous ayez besoin de loption -x dans baksmali.
EDIT2: Lors du reconditionnement, vous navez pas besoin dinclure le répertoire META-INF dans le fichier zip. sera créé lors de la signature de t le fichier.
Réponse
Lutilisation de loption deodex « -x » nest pas nécessaire car vous « neffectuez pas de baksmali sur un odex. Exécutez simplement baksmali sur le fichier dex. Vous pouvez également utiliser apktool pour tout décompresser / emballer, ce qui, à mon avis, est plus facile.
Réponse
-
Pourquoi la taille du fichier a-t-elle été réduite?
Parce que
apktool
la optimisé lors de la recompilation. -
Pourquoi il a planté?
Causes possibles du plantage:
-
Vous ne pouvez pas exécuter toutes les étapes dans le bon ordre.
-
Lapplication peut avoir un Contrôle CRC pour la taille du fichier.
-
Outil Entièrement automatisé avec interface graphique .. Il est mis à jour avec le cadre Android récent, donc aucune erreur de décompilation des ressources et meilleure manipulation.
https://www.dropbox.com/s/02ifm4veotiuik1/apkstudio-2.0.3b-windows-Updates-Framework.rar?dl=0
Et ce petit papier qui inclut des conseils sur linversion des applications Android et toutes les informations de base concernant la modification / la gestion dapk.
Réponse
Si vous êtes intéressé par les applications Anroid RE, vous trouverez de meilleurs outils à utiliser régulièrement.
Eh bien, lun des outils est Android Cracker Kit (que jai développé), il vous donne tout ce dont vous avez besoin: Android Cracker Kit (ACK):
Commentaires
- Lien rompu. veuillez le réparer.
- voilà: forum.exetools.com/showthread.php?t=16538
- @raypixar: le lien nétait pas rompu, juste lent.
Réponse
Jutilise APK Editor Pro pour modifier Fichiers APK directement depuis mon appareil Android!
https://play.google.com/store/apps/details?id=com.gmail.heagoo.apkeditor.pro
Commentaires
- Excellent conseil. Lapk généré ne sinstalle pas correctement avec le script de (dé) compilation ci-dessus (pourquoi?) Mais le remplacement de classes.dex la fait.
Réponse
Étape 4. Vous avez oublié de le faire de manière récursive. Il ne copiera pas les fichiers dans / res lorsque vous le compresserez. Ajoutez loption -r.
zip -r test.zip AndroidManifest.xml classes.dex res META-INF resources.arsc
Étape 6. Vous navez pas besoin de le signer encore une fois depuis que vous lavez réemballé avec le répertoire META-INF sur votre apk déjà. Les informations de signature se trouvent dans META-INF.
baksmali -x option
) exprès? Il semblerait que puisque vous exécutez cette option, sans fournir un » bootclasspath » vous ‘ va obtenir un étrange code smali qui ne pourra peut-être pas être reconverti en fichier dex. En outre, supprimez simplement le dossier META-INF avant de compresser et essayez de fairezip -r unsigned.apk *
dans le répertoire avec tout le contenu. Si le problème persiste, essayez de publier la sortie de logcat