# Reversing Native Libraries
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
**Para m谩s informaci贸n, consulta:** [**https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)
Las aplicaciones de Android pueden usar bibliotecas nativas, t铆picamente escritas en C o C++, para tareas cr铆ticas de rendimiento. Los creadores de malware tambi茅n utilizan estas bibliotecas, ya que son m谩s dif铆ciles de descompilar que el bytecode DEX. La secci贸n enfatiza las habilidades de ingenier铆a inversa adaptadas a Android, en lugar de ense帽ar lenguajes de ensamblaje. Se proporcionan versiones ARM y x86 de las bibliotecas para compatibilidad.
### Puntos Clave:
* **Bibliotecas Nativas en Aplicaciones de Android:**
* Utilizadas para tareas intensivas en rendimiento.
* Escritas en C o C++, lo que hace que la ingenier铆a inversa sea un desaf铆o.
* Se encuentran en formato `.so` (objeto compartido), similar a los binarios de Linux.
* Los creadores de malware prefieren el c贸digo nativo para dificultar el an谩lisis.
* **Interfaz Nativa de Java (JNI) y NDK de Android:**
* JNI permite que los m茅todos de Java se implementen en c贸digo nativo.
* NDK es un conjunto de herramientas espec铆fico de Android para escribir c贸digo nativo.
* JNI y NDK conectan el c贸digo de Java (o Kotlin) con bibliotecas nativas.
* **Carga y Ejecuci贸n de Bibliotecas:**
* Las bibliotecas se cargan en memoria usando `System.loadLibrary` o `System.load`.
* JNI\_OnLoad se ejecuta al cargar la biblioteca.
* Los m茅todos nativos declarados en Java se vinculan a funciones nativas, habilitando la ejecuci贸n.
* **Vinculaci贸n de M茅todos de Java a Funciones Nativas:**
* **Vinculaci贸n Din谩mica:** Los nombres de las funciones en las bibliotecas nativas coinciden con un patr贸n espec铆fico, permitiendo la vinculaci贸n autom谩tica.
* **Vinculaci贸n Est谩tica:** Utiliza `RegisterNatives` para la vinculaci贸n, proporcionando flexibilidad en la nomenclatura y estructura de funciones.
* **Herramientas y T茅cnicas de Ingenier铆a Inversa:**
* Herramientas como Ghidra e IDA Pro ayudan a analizar bibliotecas nativas.
* `JNIEnv` es crucial para entender las funciones e interacciones de JNI.
* Se proporcionan ejercicios para practicar la carga de bibliotecas, la vinculaci贸n de m茅todos y la identificaci贸n de funciones nativas.
### Recursos:
* **Aprendiendo Ensamblador ARM:**
* Sugerido para una comprensi贸n m谩s profunda de la arquitectura subyacente.
* [Conceptos B谩sicos de Ensamblador ARM](https://azeria-labs.com/writing-arm-assembly-part-1/) de Azeria Labs es recomendado.
* **Documentaci贸n de JNI y NDK:**
* [Especificaci贸n JNI de Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
* [Consejos de JNI de Android](https://developer.android.com/training/articles/perf-jni)
* [Introducci贸n al NDK](https://developer.android.com/ndk/guides/)
* **Depuraci贸n de Bibliotecas Nativas:**
* [Depurar Bibliotecas Nativas de Android Usando JEB Decompiler](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}