Android App Hacking: Threat Modeling and Reverse Engineering Basics
· 23:10 · Watch on YouTube ↗
Summary
Fabian outlines a beginner workflow for Android app security testing: assess the attacker’s position and reachable surface, learn app-development concepts, then compare a self-built app with its decompiled APK using Android Studio and Jadx.
Key points
- Start by defining the attacker’s position and what the attacker can reach; consider whether the security boundary is reasonable for that threat model.
- Assess app inputs and inter-app communication to understand how another app might trigger components or pass data.
- Learn Android development concepts—including activities, broadcast receivers, and services—to better understand how apps are built and where logic may be exposed.
- The presenter recommends building a simple app, compiling it, and comparing its source with the decompiled APK to learn reverse engineering.
- Review the AndroidManifest for declared components and permissions that help reveal an app’s exposed surface; dynamically registered receivers and app-started servers are noted exceptions.
- The demonstration uses Android Studio for app development and Jadx to decompile DEX code into Java for inspection.
- Trace visible UI elements through layouts, resource IDs, and event handlers to understand the corresponding app logic.
Article Details
- Topics
- [02:19] Android threat modeling: attacker position, reachable surfaces, and reasonable security boundaries.
- [07:01] Understanding app inputs and inter-app communication to identify what an attacker may be able to reach.
- [08:08] Learning Android development concepts, including activities, broadcast receivers, and services.
- [10:33] Using a build-and-compare approach to learn Android reverse engineering.
- [11:18] Building a sample app in Android Studio and inspecting its compiled APK with Jadx.
- [14:50] Reviewing the AndroidManifest for exposed components and permissions.
- [16:42] Connecting layouts, resource IDs, and event handlers to app behavior in decompiled code.
