usually bracket in assembly language
Indirect memory access is a bottleneck for modern CPUs
Like pointer, interpreted as address
inc rax ; increment rax register inc [rax] ; increment value in rax address
- Base: starting address of reference
- Index: offset from base address
- Scale: Constant multiplier of index
- Displacement: Constant base
mov edx, [rdx+rcx*4]
Attacks via indirect jumps and function calls
- Return addresses in stack are not the only code pointers that can be corrupted.
- Indirect jumps and indirect function calls also jump to the code that code pointers point to