Skip to main content

Advanced Vulnerability Research

Learn to read, write, and debug assembly code for the ARM EABI used by smart phones and mobile devices.
 
3-Day Course
Relevant Today
Android & Mobile Focus
Hands-On Debugging
 

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


• Students should have C programming experience.
• Prior experience with another assembly language is helpful, but not required.


What You Will Learn


Setup a complete toolchain for building ARM binaries and debugging applications on an Android device using GDB.
Understand ARM memory addressing, the stack and its conventions, and the details of calling conventions on ARM.
Learn about syscalls and how to switch between ARM and Thumb instruction set modes.
Use inline assembly in your code and understand the basics of the Neon coprocessor for advanced tasks.


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.