hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md

73 lines
5.4 KiB
Markdown
Raw Normal View History

# Reversión de Bibliotecas Nativas
2023-06-05 18:33:24 +00:00
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
2023-06-05 18:33:24 +00:00
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2023-06-05 18:33:24 +00:00
</details>
**Para obtener más información, consulta: [https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)**
2023-06-05 18:33:24 +00:00
Las aplicaciones de Android pueden utilizar bibliotecas nativas, generalmente 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 ingeniería inversa que el bytecode DEX. La sección enfatiza habilidades de ingeniería inversa adaptadas a Android, en lugar de enseñar lenguajes ensambladores. Se proporcionan versiones ARM y x86 de las bibliotecas para compatibilidad.
2023-06-05 18:33:24 +00:00
### 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 desafiante.
- 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.
2023-06-05 18:33:24 +00:00
- **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íficas de Android para escribir código nativo.
- JNI y NDK conectan el código Java (o Kotlin) con las bibliotecas nativas.
2023-06-05 18:33:24 +00:00
- **Carga y Ejecución de Bibliotecas:**
- Las bibliotecas se cargan en memoria utilizando `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, permitiendo la ejecución.
2023-06-05 18:33:24 +00:00
- **Vinculación de Métodos de Java a Funciones Nativas:**
- **Vinculación Dinámica:** Los nombres de funciones en las bibliotecas nativas coinciden con un patrón específico, lo que permite la vinculación automática.
- **Vinculación Estática:** Utiliza `RegisterNatives` para la vinculación, proporcionando flexibilidad en la nomenclatura y estructura de las funciones.
2023-06-05 18:33:24 +00:00
- **Herramientas y Técnicas de Ingeniería Inversa:**
- Herramientas como Ghidra e IDA Pro ayudan a analizar bibliotecas nativas.
- `JNIEnv` es crucial para comprender las funciones JNI e interacciones.
- Se proporcionan ejercicios para practicar la carga de bibliotecas, la vinculación de métodos e identificar funciones nativas.
2023-06-05 18:33:24 +00:00
### Recursos:
- **Aprendizaje de Ensamblador ARM:**
- Recomendado 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.
2023-06-05 18:33:24 +00:00
- **Documentación de JNI y NDK:**
- [Especificación de 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/)
2023-06-05 18:33:24 +00:00
- **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)
2023-06-05 18:33:24 +00:00
<details>
2023-06-05 18:33:24 +00:00
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>