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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
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
ouSystem.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 :
- Apprendre l'Assemblage ARM :
- Suggéré pour une compréhension plus approfondie de l'architecture sous-jacente.
- ARM Assembly Basics d'Azeria Labs est recommandé.
- Documentation JNI & NDK :
- Spécification JNI d'Oracle
- Conseils JNI d'Android
- Commencer avec le NDK
- Débogage des Bibliothèques Natives :
- Déboguer les Bibliothèques Natives Android en Utilisant JEB Decompiler
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.