
This course will familiarize students with all aspects of writing Assembly code on the ARM platforms. By the end of this course students will be able to understand and write Assembly programs on the ARM platform. This includes being able to understand programs that were created by a high level language compiler. This course is fundamental for anyone wishing to do reverse engineering on the ARM platforms. The BeagleBone family of boards is used in this course.
A non-exhaustive list of topics to be covered includes:
- ARM overview
- History
- Families
- RISC not CISC
- Configurable endianness
- Features
- Lots of registers
- Fixed width instructions
- Load and store architecture
- 8 privilege modes (rings)
- Conditional execution (reduces branching)
- Barrel shifter (allows combining operations)
- Thumb vs. ARM mode
- ARM mode has 32-bit wide instructions
- Thumb mode has 16-bit wide instructions
- Thumb-2 mode has both 16 and 32 bit wide instructions
- Conditional execution in Thumb mode requires IT command
- Data types
- Byte (8-bit)
- Half word (16-bit)
- Word (32-bit)
- Double word (64-bit)
- Registers
- 16 general purpose 32-bit registers (R0…R15)
- R13 used as stack pointer (SP)
- R14 used as link register (LR) for function return address
- R15 used as program counter (PC) like IP but 2 instructions ahead
- Current program status register (CPSR)
- Coprocessors
- 16 defined by ARM architecture
- Varying functions
- Math
- Graphics
- Each coprocessor has 16 registers
- Access is only via:
- MCR (write)
- MRC (read)
- Instructions
- Load/store
- Push/pop
- Doing math
- Defining and calling functions
- Branching
- Conditional instructions
- Miscelaneous and next steps
Security Education
OffSec
iNE
Antisyphon
EC-Council
Applied Network Defense
Kaspersky
Sektor7
CompTIA
TCM Security
BlackHat
13Cubed
Dark Vortex
Enciphers
Forty North
Cyber warfare Labs
Maltrak
Scorpio Software
Security Onion
Zero Point Security
SentinelOne
Altered Security
SpecterOps
Pentester Academy
CQURE
PluralSight
StationX
Cybr
موسسههای دیگر