Android Reverse Engineering Basics

Learn the fundamentals of reversing Android applications.

1. Static Analysis

Static analysis is the process of inspecting an application without executing it. This helps identify application logic, hardcoded secrets, API endpoints and security mechanisms.

jadx app.apk

apktool d app.apk

ghidra

IDA Pro

Hopper

2. Dynamic Analysis

Dynamic analysis involves executing the application while observing its runtime behaviour.

  • Frida
  • Objection
  • LLDB
  • Android Studio Debugger

3. Binary Analysis

Native libraries usually contain the application's sensitive logic and security controls.

libnative.so

libflutter.so

libcrypto.so

libssl.so

Analyze binaries using:

  • Ghidra
  • IDA Pro
  • Hopper
  • radare2

4. Android Reverse Engineering

Android applications can be reverse engineered by extracting the APK and inspecting Java, Kotlin and native code.

adb shell pm path com.example.app

adb pull

jadx

apktool

5. iOS Reverse Engineering

iOS applications require decrypting the IPA before static analysis.

frida-ios-dump

bagbak

otool

jtool2

6. Runtime Instrumentation

Runtime instrumentation allows you to intercept methods, bypass security controls and inspect sensitive data.

frida -U -f com.example.app

objection explore

frida-trace

7. Common Protections

  • Root Detection
  • Jailbreak Detection
  • SSL Pinning
  • Anti-Debugging
  • Anti-Tampering
  • Code Obfuscation
  • Runtime Integrity Checks

8. Common File Formats

  • APK
  • AAB
  • DEX
  • ELF
  • Mach-O
  • IPA
  • PE

9. Recommended Tools

jadx

apktool

Ghidra

IDA Pro

Hopper

Frida

Objection

radare2

JEB

MobSF

10. Conclusion

Reverse engineering is an essential skill for mobile application security testing. Combining static analysis, dynamic analysis and runtime instrumentation provides a comprehensive understanding of application behaviour and security controls.