1. |
Some Assembly Required |
|
4 hours |
|
What does a processor look like, at the assembly level? In particular, how is ARM assembly treating CPU registers, coprocessors, special registers, and more?
- The logical view of a CPU
- Core Registers - ARM32's r0-r15, ARM64's X0-X31
- The Stack and Frame Pointers
- The CPSR and PSTATE registers
- ARM32 Processor modes and ARM64 Exception Levels
- State transitions - SMC, HVC and SMC
- ARM vs. x86
- Instruction groups and encoding principles
|
|
Basic vocabulary of ARMv7 32, Thumb, and ARMv8 architectures - Part I - using registers
- MOV and variants
- ADD and variants
- LDR and variants
Exercises include:
- Creating a small calculator in C and inline assembly
|
3. |
Go with the Flow |
|
1 hours |
|
Basic vocabulary of ARMv7 32, Thumb, and ARMv8 architectures - Part II - Flow control
- CMP, TST
- ARM32 conditional instructions
- Conditional branches
- Switch statements - sparse and dense
- Function calls
- VTable and register based calls
Exercises include:
- Decompiling a sample program
|
|
Float, Double, and Vector instructions
- Floating point registers
- Vector instructions
- Use in memory optimizations
|
Day 2 |
5. |
Systematic view |
|
2 hours |
|
Explanation of the system call ABI and calling conventions on several architectures, including
- Android 32/64-bit
- iOS 32-bit (legacy) and 64-bit
Exercises include:
- Disassembling libC and libSystem
- Implementing a raw syscall wrapper
|
6. |
All hands on deck |
|
4 hours |
|
Reversing a few case study binaries back to C source
Exercises include:
- Multiple binaries as case study samples
|
|
The module examines two specific exploitation techniques which rely on careful manipulation of assembly commands.
- Shellcodes
- Return Oriented Programming
- Jump Oriented Programming
|
Day 3 |
|
Architectural extensions of ARMv8.1-ARMv9
- ARMv8.1 Atomics & PAN
- ARMv8.2 UAO and Hypervisor extensions
- ARMv8.3 PAC (Pointer Authentication)
- ARMv8.5 MTE (Memory Tagging Extensins)
- ARMv9 extensions
Exercises include:
- Compilation into specific extension and analyzing resulting assembly
|
9. |
Advanced Topics |
|
8 hours |
|
Instructions only available in supervisor mode (SVC/EL1) or higher
- Special registers (TTBR, ESR, VBAR, and more)
- Exception handling in ARMv7 and ARMv8
- Memory paging - an introduction
- Trustzone - an introduction
|