# 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) рдПрдХ **рдбрд╛рд░реНрдХ-рд╡реЗрдм** рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рд░реНрдЪ рдЗрдВрдЬрди рд╣реИ рдЬреЛ **рдореБрдлреНрдд** рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрдВрдкрдиреА рдпрд╛ рдЙрд╕рдХреЗ рдЧреНрд░рд╛рд╣рдХ **рд╕рдВрдкрд░реНрдХрд┐рдд** рд╣реБрдП рд╣реИрдВ **рдЪреЛрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд▓рд╡реЗрдпрд░** рджреНрд╡рд╛рд░рд╛ред
WhiteIntel рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рдЬрд╛рдирдХрд╛рд░реА-рдЪреЛрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд▓рд╡реЗрдпрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЦрд╛рддрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдФрд░ рд░реИрдирд╕рдорд╡реЗрдпрд░ рд╣рдорд▓реЛрдВ рд╕реЗ рд▓рдбрд╝рдирд╛ рд╣реИред
рдЖрдк рдЙрдирдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЗрдВрдЬрди рдХреЛ **рдореБрдлреНрдд** рдореЗрдВ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ:
{% embed url="https://whiteintel.io" %}
***
**рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:** [**https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)
рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдкреНрд░рджрд░реНрд╢рди-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ C рдпрд╛ C++ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рд▓рд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рддрд╛ рднреА рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдиреНрд╣реЗрдВ DEX рдмрд╛рдЗрдЯрдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд▓рдЯрдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрднрд╛рдЧ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреМрд╢рд▓ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛рдПрдБ рд╕рд┐рдЦрд╛рдиреЗ рдкрд░ред рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП ARM рдФрд░ x86 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
### Key Points:
* **рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдореЗрдВ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп:**
* рдкреНрд░рджрд░реНрд╢рди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
* C рдпрд╛ C++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреА рд╣реИред
* `.so` (рд╢реЗрдпрд░ рдХреА рдЧрдИ рд╡рд╕реНрддреБ) рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рдорд╛рди рд╣реИред
* рдорд╛рд▓рд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдХреЛрдб рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВред
* **рдЬрд╛рд╡рд╛ рдиреЗрдЯрд┐рд╡ рдЗрдВрдЯрд░рдлреЗрд╕ (JNI) рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб NDK:**
* JNI рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдореВрд▓ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
* NDK рдореВрд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред
* JNI рдФрд░ NDK рдЬрд╛рд╡рд╛ (рдпрд╛ рдХреЛрдЯрд▓рд┐рди) рдХреЛрдб рдХреЛ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
* **рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди:**
* рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ `System.loadLibrary` рдпрд╛ `System.load` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
* рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЛрдбрд┐рдВрдЧ рдкрд░ JNI\_OnLoad рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред
* рдЬрд╛рд╡рд╛-рдШреЛрд╖рд┐рдд рдореВрд▓ рд╡рд┐рдзрд┐рдпрд╛рдБ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред
* **рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛:**
* **рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ:** рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдирд╛рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
* **рд╕реНрдЯреЗрдЯрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ:** рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП `RegisterNatives` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХрд╛рд░реНрдп рдирд╛рдордХрд░рдг рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
* **рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЙрдкрдХрд░рдг рдФрд░ рддрдХрдиреАрдХреЗрдВ:**
* Ghidra рдФрд░ IDA Pro рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
* `JNIEnv` JNI рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
* рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдФрд░ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдпрд╛рдо рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
### Resources:
* **ARM рдЕрд╕реЗрдВрдмрд▓реА рд╕реАрдЦрдирд╛:**
* рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдЧрд╣рд░реА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ред
* Azeria Labs рд╕реЗ [ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/) рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред
* **JNI рдФрд░ NDK рджрд╕реНрддрд╛рд╡реЗрдЬрд╝:**
* [Oracle рдХрд╛ JNI рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
* [рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ JNI рдЯрд┐рдкреНрд╕](https://developer.android.com/training/articles/perf-jni)
* [NDK рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛](https://developer.android.com/ndk/guides/)
* **рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ:**
* [JEB рдбрд┐рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
### [WhiteIntel](https://whiteintel.io)
[**WhiteIntel**](https://whiteintel.io) рдПрдХ **рдбрд╛рд░реНрдХ-рд╡реЗрдм** рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рд░реНрдЪ рдЗрдВрдЬрди рд╣реИ рдЬреЛ **рдореБрдлреНрдд** рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрдВрдкрдиреА рдпрд╛ рдЙрд╕рдХреЗ рдЧреНрд░рд╛рд╣рдХ **рд╕рдВрдкрд░реНрдХрд┐рдд** рд╣реБрдП рд╣реИрдВ **рдЪреЛрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд▓рд╡реЗрдпрд░** рджреНрд╡рд╛рд░рд╛ред
WhiteIntel рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рдЬрд╛рдирдХрд╛рд░реА-рдЪреЛрд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд▓рд╡реЗрдпрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЦрд╛рддрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдФрд░ рд░реИрдирд╕рдорд╡реЗрдпрд░ рд╣рдорд▓реЛрдВ рд╕реЗ рд▓рдбрд╝рдирд╛ рд╣реИред
рдЖрдк рдЙрдирдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЗрдВрдЬрди рдХреЛ **рдореБрдлреНрдд** рдореЗрдВ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ:
{% 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 %}