SLAE x86 Assembly and Shellcoding on Linux Notes
Notes taken while going through the Pentester Academy x86 Assembly and Shellcoding on Linux Course.
Not done with it yet. Publishing the assignments as I complete them on my Github.
Setup up Debian lab environment, what is assembly
Seeing CPU info on what we can do (architecture and stuff), and memory/cpu architecture basics
Exploring registers with GDB, should get more familiar with GDB
“set dissasembly flavor intel” within gdb
Modern normal computer use protected mode most of the time and that’s what I should concern myself with.
use assembler (NASM) and linker (LD) to link the assembly executable in ELF format
Wrote hello world in intel 32bit assembly, getting used to syntax and nuances to write shellcode later on.
syscalls or system calls to leverage operating system to avoid writing low level code that’s been already been written
int0x80 to invoke syscalls
Stepped through our hello world program with gdb to understand how registers were used throughout
learned about data types such as bits, bytes, words, dwords, etc. (more of a refresher but it was useful none the less)
when moving data with the MOV instruction you will be moving it between registers
memory to register (and vice versa)
immediate data to register
or immediate register to memory
LEA stands for load effective address or loading pointer values for example LEA eax, [label]. label being the label of the name in the data section
XCHG swaps values register to register, or also register to memory