Skip to content
All modules
CoreModule 12 of 15120 minutes

Mobile applications

Take an APK apart: the manifest rules that define the attack surface, navigating DEX without decompiling it, and when to stop reading and hook.

By the end you can

  • Read an APK's structure from its zip listing and say what each part implies
  • Decode a binary AndroidManifest and identify every exported component
  • State the export rule correctly, including the intent-filter default
  • Follow a string to its load site and a method to its callers inside a DEX
  • Decide between static reading and runtime hooking, and justify the choice

1. Read

2. Use the tools

In the order they come up while solving. Each opens the workspace tab that runs it.

3. Try one now

Generated in your browser and checked in your browser. No account, nothing to download, and a fresh one whenever you want another.

4. Practise on the real thing

Real picoCTF challenges that use these techniques, easiest first. 25 match in total - see the full index.

Checkpoint

Given an APK, list every component reachable by another app on the device, and say for each one which rule made it reachable.

Teaching note

The export default is the thing everybody gets wrong: a component with an intent-filter and no android:exported attribute is exported. Teach it as a rule with two cases rather than as a single attribute, or half the class will report a challenge's entry point as private.