The course covers the following modules, with hands-on exercises and guided demos:
Introduction to Android Architecture (5-6 hours)
- Overview of Android features and comparison with Linux.
- Filesystem layout, runtime environment, and frameworks.
- Dalvik and ART architecture, from Android 1.5 through Android 13.0.
- User-mode and kernel-mode differences.
- Kernel modifications and recompilation.
Hardware Abstraction Layer (HAL) (1 hour)
- HAL overview and abstraction of basic devices (camera, sensors, GPS, etc.).
- Project Treble and HAL modifications.
Partitions & Filesystems (2 hours)
- Android partition layout, UFS vs. eMMC, vendor-specific partitions.
- Tour of standard Android filesystems (/system, /vendor, /data).
Booting (6 hours)
- System startup and initialisation, from bootloader to kernel and user-mode processes.
- Techniques for unlocking bootloaders and rooting devices.
Native Services (2 hours)
- Examination of Android services initiated by init (adbd, servicemanager, healthd, etc.).
Android IPC Mechanisms (2 hours)
- Detailed breakdown of Binder IPC and alternative communication mechanisms.
- Exercises: Debugging and tracing Binder IPC.
The Input Architecture (2 hours)
- Understanding Android’s input stack: Kernel input model, EventHub, InputReader, and InputDispatcher.
- Exercises: Monitoring and capturing input events.
Dalvik Virtual Machine (2 hours)
- Dalvik VM architecture, DEX file format, and reverse engineering techniques.
- Exercises: Reverse engineering Dalvik APK’s classes.dex to Java source.
Android Runtime (ART) (1 hour)
- ART evolution and its memory management, profiling, and JIT compilation.
- Exercises: Reversing ART.
Android Kernel Modifications (1 hour)
- Overview of Android-specific kernel tweaks: ASHmem, PMem, low memory killer, wakelocks, RAM console, etc.
- Exercises: Kernel-level debugging and tracing.
Android Security (4 hours)
- Analysis of Android’s security mechanisms, including SELinux, digital signatures, AVB, and buffer overflow protection.
- Android exploitation techniques and common security failures.
Connectivity (Optional) (2 hours)
- Overview of Android’s network stack, Bluetooth, RILd, and VPN mechanisms.