Advanced Vulnerability Research
Learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices.Course Description
In the Introduction to ARM Assembly course, students will learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices. Topics include registers, the ARM and Thumb instruction sets, literal pools, the stack, ARM calling conventions, cross compilation, remote debugging with GDB, and GNU inline assembly. Workstations, Android devices, and all required technical documentation will be provided.
Prerequisites
• Prior experience with another assembly language is helpful, but not required.
What You Will Learn
Daily Agenda
Day 1: Toolchain Setup and Basic Instructions
Setup a toolchain for building ARM binaries, learn basic adb commands, and configure gdb for debugging on an Android device. Covers basic instructions like mov, add, multiply, and shift.
Day 2: Memory, the Stack, and Calling Conventions
Learn about memory addressing, layout, and the push/pop instructions. This day covers the stack, its conventions, and the standards for calling conventions on the ARM architecture.
Day 3: Syscalls, Modes, and Inline Assembly
Learn about syscalls, changing modes between ARM and Thumb, using inline assembly in your code, and an introduction to the Neon coprocessor, followed by the final exam.