web-dev-qa-db-fra.com

APK injection, recompiler le manifeste Android

Ce que j'aimerais accomplir

Décompilez AndroidManifest.xml empaqueté sous apk sous forme binaire en fichier XML normal, modifiez-le et recompilez-le en fichier binaire acceptable pour apk. Fondamentalement, j'ai besoin d'un pilote pour les fichiers AXML

Fond court

Je travaille sur un projet d'injection APK . Mon objectif est 

  1. Démonter le binaire Dalvik
  2. Lire AndroidManifest xml et y apporter des modifications, comme modifier l'activité principale et ajouter des autorisations
  3. reconstruire et signer le fichier apk 

J'utilise apktool pour assembler et désassembler l'apk. Cependant, l'outil apk ne fonctionne qu'avec l'option --no-res; si apk est désassemblé avec les ressources, il ne peut pas être reconstruit. Voici un problème de github décrivant ce bogue

Le problème

Depuis que je désassemble le apktool d --no-res app-debug.apk sans indicateur de res, le manifeste Android généré se présente sous forme binaire. Je peux désassembler le manifeste à l'aide de apktool mais je ne peux pas l'assumer en retour. 

Ce que je veux pouvoir faire

Je dois soit:

  • Trouvez un moyen de désassembler le manifeste, puis réassemblez-le sous forme binaire.
  • Trouvez un moyen d'utiliser apktool avec des ressources

Ce que j'ai essayé jusqu'à présent

Avertissement

Bien que stackoverflow soit une communauté de partage de connaissances, et ne juge pas à quoi il sert, je vois beaucoup de gens s'en prendre à d'autres dans des questions similaires avec des accusations d'activités illégales. 

Ce que je fais est absolument légal et ne sera utilisé pour exploiter personne.

22
Ben

Le seul moyen fiable que j'ai trouvé de reconditionner l'application avec un manifeste en texte clair est de le reconditionner à l'aide de aapt directement.

aapt package -f -M ./AndroidManifest.xml -S res1/ -S res2/ ... -I Android.jar -F MyProject.apk.unaligned

Pour créer l'apk, puis:

aapt add -f MyProject.apk.unaligned classes.dex

Pour ajouter des sources compilées au paquet. 

Ensuite, en utilisant jarsigner pour signer le package:

jarsigner -storepass <keystore password> -keystore <keystore filename> MyProject.apk.unaligned <key name>
0
Ben

L’installation peut donner une erreur d’analyse à la condition suivante, voyez s’il vous a rencontré - 

  • Le nom du paquet est modifié après la signature: utilisez le nom exact en tant que Le paquet signé est (ajustez le nom dans Manifest)
  • Le package ..__ est compilé sur un niveau d'API supérieur: corrigez le niveau d'API dans le fichier manifeste
  • Le package est exécuté à partir de la carte SD: Exécutez (installez) le fichier apk - à partir de la mémoire du téléphone OR, à l’aide de la commande adb, pour l’installer.

Vous pouvez signer manuellement votre apk comme donné ici .

6