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

7.5 KiB

Reversing Native Libraries

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

For further information check: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдкреНрд░рджрд░реНрд╢рди-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ C рдпрд╛ C++ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдиреИрдЯрд┐рд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрд▓рд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рддрд╛ рднреА рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдиреНрд╣реЗрдВ DEX рдмрд╛рдЗрдЯрдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрднрд╛рдЧ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреМрд╢рд▓ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рд┐рдЦрд╛рдиреЗ рдкрд░ред рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП ARM рдФрд░ x86 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВред

Key Points:

  • Native Libraries in Android Apps:
  • рдкреНрд░рджрд░реНрд╢рди-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • C рдпрд╛ C++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреА рд╣реИред
  • .so (рд╢реЗрдпрд░ рдХреА рдЧрдИ рд╡рд╕реНрддреБ) рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рдорд╛рди рд╣реИред
  • рдореИрд▓рд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреИрдЯрд┐рд╡ рдХреЛрдб рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВред
  • Java Native Interface (JNI) & Android NDK:
  • JNI рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдиреИрдЯрд┐рд╡ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • NDK рдиреИрдЯрд┐рд╡ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред
  • JNI рдФрд░ NDK рдЬрд╛рд╡рд╛ (рдпрд╛ рдХреЛрдЯрд▓рд┐рди) рдХреЛрдб рдХреЛ рдиреИрдЯрд┐рд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  • Library Loading & Execution:
  • рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЛ System.loadLibrary рдпрд╛ System.load рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ JNI_OnLoad рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред
  • рдЬрд╛рд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдиреИрдЯрд┐рд╡ рд╡рд┐рдзрд┐рдпрд╛рдБ рдиреИрдЯрд┐рд╡ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред
  • Linking Java Methods to Native Functions:
  • Dynamic Linking: рдиреИрдЯрд┐рд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
  • Static Linking: рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП RegisterNatives рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • Reverse Engineering Tools and Techniques:
  • Ghidra рдФрд░ IDA Pro рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдиреИрдЯрд┐рд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
  • JNIEnv JNI рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
  • рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдФрд░ рдиреИрдЯрд┐рд╡ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдпрд╛рдо рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

Resources:

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}