Reversing Native Libraries

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de 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 performances. Les créateurs de logiciels malveillants utilisent également ces bibliothèques, car elles sont plus difficiles à rétro-ingénierie que le bytecode DEX. La section met l'accent sur les compétences en rétro-ingénierie adaptées à Android, plutôt que sur l'enseignement des 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 performances.

  • É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.

  • Interface Native Java (JNI) & NDK Android :

  • 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 de 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 motif spécifique, permettant une liaison automatique.

  • Liaison statique : Utilise RegisterNatives pour la liaison, offrant une 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 JNI et les interactions.

  • Des exercices sont fournis pour pratiquer le chargement de bibliothèques, la liaison des méthodes et l'identification des fonctions natives.

Ressources :

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Dernière mise à jour