Assembly – Loops and Conditionals

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ Loops In Assembly there is a keyword command called “loops,” which iterates over a function/block, decrementing a counter each time and this repeats until the counter reaches 0. It is important to remember that the counter is stored in Continue Reading

Assembly – Data Segment

While going through Vivek Ramachandran’s course on 64bit Assembly Language on Linux, I came across a lecture of his where he introduces an ASM keyword called “ds.”  Here’s his example: The highlighted line in the gdb (GNU Debugger) screenshot above references this command: mov rsi, QWORD PTR ds:0x60017c This threw Continue Reading

Assembly – Moving Data

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ Common Data Moving Instructions MOV The mov keyword in Assembly allows for moving data within the Assembly protocol.  This command can be used to mov data: Between registers From Memory to a register and vice versa Data to register Continue Reading

Assembly – Writing Hello World

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ This is a simple hello world application, written in assembly.  When run, it will output to the screen the words “Hello World.”  Below, I will go through the phases of how I constructed it, based on the course material Continue Reading

Assembly – CPU Registers

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ Within the CPU are components used to retreive instructions, store data, flag events, etc.  These sections of the CPU can be conceptualized as: Control Unit: Used to retrieve and decode instructions or to store data in memory Execution Unit: Continue Reading

Assembly – objdump

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ A useful tool in Kali is objdump.  Objdump is a quick disassembler that can show the contents of object files. Below is a screenshot example of its use: objdump -D -M intel [filename] instructs the utility to Disassemble an object Continue Reading

Assembly – What is Assembly?

Course notes from Vivek Ramachandran’s online class “x86/64 Assembly and Shellcoding on Linux“ Assembly is a low level programming language that talks directly with the microprocessor.  Keep in mind that type of process you are working with is important for how assembly is written.  For the scope of the course Continue Reading