mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
72 lines
5 KiB
Markdown
72 lines
5 KiB
Markdown
# Reversing Native Libraries
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
|
|
**For further information check:** [**https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)
|
|
|
|
Aplikacje Android mogą korzystać z bibliotek natywnych, zazwyczaj napisanych w C lub C++, do zadań wymagających dużej wydajności. Twórcy złośliwego oprogramowania również używają tych bibliotek, ponieważ są trudniejsze do inżynierii odwrotnej niż kod bajtowy DEX. Sekcja ta podkreśla umiejętności inżynierii odwrotnej dostosowane do Androida, zamiast uczyć języków asemblera. Wersje bibliotek dla ARM i x86 są dostarczane dla zapewnienia kompatybilności.
|
|
|
|
### Key Points:
|
|
|
|
* **Native Libraries in Android Apps:**
|
|
* Używane do zadań wymagających dużej wydajności.
|
|
* Napisane w C lub C++, co utrudnia inżynierię odwrotną.
|
|
* Znajdują się w formacie `.so` (shared object), podobnym do binariów Linuxa.
|
|
* Twórcy złośliwego oprogramowania preferują kod natywny, aby utrudnić analizę.
|
|
* **Java Native Interface (JNI) & Android NDK:**
|
|
* JNI pozwala na implementację metod Java w kodzie natywnym.
|
|
* NDK to zestaw narzędzi specyficznych dla Androida do pisania kodu natywnego.
|
|
* JNI i NDK łączą kod Java (lub Kotlin) z bibliotekami natywnymi.
|
|
* **Library Loading & Execution:**
|
|
* Biblioteki są ładowane do pamięci za pomocą `System.loadLibrary` lub `System.load`.
|
|
* JNI\_OnLoad jest wykonywane po załadowaniu biblioteki.
|
|
* Metody natywne zadeklarowane w Javie łączą się z funkcjami natywnymi, umożliwiając wykonanie.
|
|
* **Linking Java Methods to Native Functions:**
|
|
* **Dynamic Linking:** Nazwy funkcji w bibliotekach natywnych pasują do określonego wzoru, co umożliwia automatyczne łączenie.
|
|
* **Static Linking:** Używa `RegisterNatives` do łączenia, co zapewnia elastyczność w nazewnictwie funkcji i strukturze.
|
|
* **Reverse Engineering Tools and Techniques:**
|
|
* Narzędzia takie jak Ghidra i IDA Pro pomagają w analizie bibliotek natywnych.
|
|
* `JNIEnv` jest kluczowe dla zrozumienia funkcji JNI i interakcji.
|
|
* Zapewnione są ćwiczenia do praktyki ładowania bibliotek, łączenia metod i identyfikowania funkcji natywnych.
|
|
|
|
### Resources:
|
|
|
|
* **Learning ARM Assembly:**
|
|
* Sugerowane dla głębszego zrozumienia podstawowej architektury.
|
|
* [ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/) z Azeria Labs jest zalecane.
|
|
* **JNI & NDK Documentation:**
|
|
* [Oracle's JNI Specification](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
|
|
* [Android's JNI Tips](https://developer.android.com/training/articles/perf-jni)
|
|
* [Getting Started with the NDK](https://developer.android.com/ndk/guides/)
|
|
* **Debugging Native Libraries:**
|
|
* [Debug Android Native Libraries Using JEB Decompiler](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
|
|
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|