
How to install x64dbg and configure it. Also how to install Detect-It-Easy (DiE). We will use xdbg to write assembly programs.
A quick revision on binary and hexadecimal number systems.
Introduction to xdbg debugger
Debugger Stepping Basics
How to hollow out an exe file for use as a basic template for writing assembly code.
Introduction to CPU registers
Explanation of the MOV instructions and also a practical on writing your first assembly instructions using the xdbg debugger.
Addition using full registers (DWORD).
Addition of partial registers: word and bytes
Learning the SUB instruction for subtracting values to and from registers.
Learn the INC (Incrementing by one) and the DEC (Decrementing by one) Instructions.
Learn how multiplication works using the MUL instruction
How to do DIV instructions.
DIV exercise 1 and DIV exercise 2.
How to copy values from register to memory and vice versa.
How to directly copy data to memory using the MOV instruction and also how to directly hardcode data into memory by patching the EXE's file.
An exercise to consolidate your understanding of how to access memory.
Learn what the stack is and how to push register values to the stack
Learn how to pop register values to registers and also how to backup register values and restore them.
How to push constants (integer values) to the stack and also how to push strings to the stack by pushing the memory address of the start of the string.
How function call works and example of 1-parameter function call.
How to call functions by pushing parameters from memory to stack for strings and also for numbers
Exercise for calling function with 2 parameters - a string with format specifiers and a number
An exercise using data segment to store strings and pushing them to stack as parameters for function call.
Basics of input output in assembly
How to read in numbers and output it again.
Using assembly to input strings and then to output it again.
What are code caves and why we need them.
How to write JMP instructions to enter the Code Cave region and then back to the address after the jump point.
How to use code cave to push parameters to stack and call functions.
How to use code caves to extend the program when you run out of memory. A simple exercise to show how this is done.
If you have been using debuggers to reverse engineer programs but wished you had more understanding of Assembly Language, then this course is for you. We will cover enough assembly language to allow you to understand how to modify exe files to insert your own code or, to modify existing exe files to do things which it was not intended to do.
Traditionally, assembly language programming is taught using an assemblers like NASM or FASM. But learning it that way will not give you the skills to understand reverse engineered programs. There is a missing link (knowledge gap) of how to apply your assembly knowledge to modify programs. This course fills that knowledge gap.
Instead of using an assembler, we will directly use the x64dbg debugger to learn assembly language. That is right, we will write our own assembly code inside the x64dbg debugger itself. You will learn Assembly Language from the ground up with zero knowledge as a complete beginner.
We will use techniques that allow you to:
modify existing code
overwrite existing code
modify memory segments to insert data
create new functions
exploit code caves
add new functionality to existing programs
and more...
This black art is not widely taught and there are no existing courses elsewhere that puts together coherently all the knowledge of assembly and reverse engineering. Mostly what you will find are separate courses on Assembly and Reverse Engineering. Many courses on Reverse Engineering don't cover the background assembly language from a software hacker's perspective. And almost all Assembly Language courses teach you how to write programs from scratch, instead of how to modify existing programs to add new functionality with your own code using a debugger like x64dbg.
The knowledge you gain will be your added advantage either as a security researcher, or, malware analyst, or student of software security. It will also benefit programmers who want to know how programs run internally and how to extend program functionality if you do not have the source code.
Go ahead and enroll now and I will see you inside!