Reversing Native Libraries

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Pour plus d'informations, consultez : https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

Les applications Android peuvent utiliser des bibliothèques natives, généralement écrites en C ou C++, pour des tâches critiques en termes de performance. Les créateurs de logiciels malveillants utilisent également ces bibliothèques, car elles sont plus difficiles à rétroconcevoir que le bytecode DEX. La section met l'accent sur les compétences en rétro-ingénierie adaptées à Android, plutôt que d'enseigner les langages d'assemblage. Des versions ARM et x86 des bibliothèques sont fournies pour la compatibilité.

Points Clés :

  • Bibliothèques Natives dans les Applications Android :
  • Utilisées pour des tâches intensives en performance.
  • Écrites en C ou C++, rendant la rétro-ingénierie difficile.
  • Trouvées au format .so (objet partagé), similaire aux binaires Linux.
  • Les créateurs de logiciels malveillants préfèrent le code natif pour rendre l'analyse plus difficile.
  • Java Native Interface (JNI) & Android NDK :
  • JNI permet d'implémenter des méthodes Java en code natif.
  • NDK est un ensemble d'outils spécifique à Android pour écrire du code natif.
  • JNI et NDK relient le code Java (ou Kotlin) aux bibliothèques natives.
  • Chargement et Exécution des Bibliothèques :
  • Les bibliothèques sont chargées en mémoire à l'aide de System.loadLibrary ou System.load.
  • JNI_OnLoad est exécuté lors du chargement de la bibliothèque.
  • Les méthodes natives déclarées en Java se lient aux fonctions natives, permettant l'exécution.
  • Liaison des Méthodes Java aux Fonctions Natives :
  • Liaison Dynamique : Les noms de fonctions dans les bibliothèques natives correspondent à un modèle spécifique, permettant une liaison automatique.
  • Liaison Statique : Utilise RegisterNatives pour la liaison, offrant flexibilité dans le nommage et la structure des fonctions.
  • Outils et Techniques de Rétro-Ingénierie :
  • Des outils comme Ghidra et IDA Pro aident à analyser les bibliothèques natives.
  • JNIEnv est crucial pour comprendre les fonctions et interactions JNI.
  • Des exercices sont fournis pour pratiquer le chargement de bibliothèques, la liaison de méthodes et l'identification de fonctions natives.

Ressources :

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks