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
Hopper2. 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.soAnalyze 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
apktool5. iOS Reverse Engineering
iOS applications require decrypting the IPA before static analysis.
frida-ios-dump
bagbak
otool
jtool26. 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-trace7. 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
MobSF10. 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.