# 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 %}
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io) to wyszukiwarka zasilana **dark-web**, kt贸ra oferuje **darmowe** funkcjonalno艣ci do sprawdzenia, czy firma lub jej klienci zostali **skompromentowani** przez **z艂o艣liwe oprogramowanie kradn膮ce**.
G艂贸wnym celem WhiteIntel jest zwalczanie przej臋膰 kont i atak贸w ransomware wynikaj膮cych z z艂o艣liwego oprogramowania kradn膮cego informacje.
Mo偶esz sprawdzi膰 ich stron臋 internetow膮 i wypr贸bowa膰 ich silnik za **darmo** pod adresem:
{% embed url="https://whiteintel.io" %}
***
**Aby uzyska膰 wi臋cej informacji, sprawd藕:** [**https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)
Aplikacje na Androida 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偶 korzystaj膮 z 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.
### Kluczowe punkty:
* **Biblioteki natywne w aplikacjach Android:**
* 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` (obiekt wsp贸艂dzielony), podobnie jak binaria w systemie Linux.
* Tw贸rcy z艂o艣liwego oprogramowania preferuj膮 kod natywny, aby utrudni膰 analiz臋.
* **Java Native Interface (JNI) i 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.
* **艁adowanie i wykonywanie bibliotek:**
* 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.
* **艁膮czenie metod Java z funkcjami natywnymi:**
* **Linkowanie dynamiczne:** Nazwy funkcji w bibliotekach natywnych pasuj膮 do okre艣lonego wzoru, co umo偶liwia automatyczne linkowanie.
* **Linkowanie statyczne:** U偶ywa `RegisterNatives` do linkowania, co zapewnia elastyczno艣膰 w nazewnictwie funkcji i strukturze.
* **Narz臋dzia i techniki in偶ynierii odwrotnej:**
* Narz臋dzia takie jak Ghidra i IDA Pro pomagaj膮 w analizie bibliotek natywnych.
* `JNIEnv` jest kluczowe dla zrozumienia funkcji JNI i interakcji.
* Dostarczono 膰wiczenia do praktyki 艂adowania bibliotek, 艂膮czenia metod i identyfikowania funkcji natywnych.
### Zasoby:
* **Nauka asemblera ARM:**
* Sugerowane dla g艂臋bszego zrozumienia podstawowej architektury.
* [Podstawy asemblera ARM](https://azeria-labs.com/writing-arm-assembly-part-1/) z Azeria Labs jest zalecane.
* **Dokumentacja JNI i NDK:**
* [Specyfikacja JNI Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
* [Porady JNI Androida](https://developer.android.com/training/articles/perf-jni)
* [Rozpocz臋cie pracy z NDK](https://developer.android.com/ndk/guides/)
* **Debugowanie bibliotek natywnych:**
* [Debugowanie bibliotek natywnych Androida za pomoc膮 dekompilatora JEB](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io) to wyszukiwarka zasilana **dark-web**, kt贸ra oferuje **darmowe** funkcjonalno艣ci do sprawdzenia, czy firma lub jej klienci zostali **skompromentowani** przez **z艂o艣liwe oprogramowanie kradn膮ce**.
G艂贸wnym celem WhiteIntel jest zwalczanie przej臋膰 kont i atak贸w ransomware wynikaj膮cych z z艂o艣liwego oprogramowania kradn膮cego informacje.
Mo偶esz sprawdzi膰 ich stron臋 internetow膮 i wypr贸bowa膰 ich silnik za **darmo** pod adresem:
{% embed url="https://whiteintel.io" %}
{% 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 %}