Assembly Language Programming For Reverse Engineering
Published 4/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 6.61 GB | Duration: 9h 11m
Published 4/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 6.61 GB | Duration: 9h 11m
Understand assembly code and modify exe files to add new functionality using x64dbg
What you'll learn
Assembly Language Basics
Reverse Engineering
xdbg debugging basics
Modifying programs
Injecting code into exe files
Hollowing out an exe file
CPU registers
Basic Addition
INC, DEC, MUL and DIV instructions
Accessing main memory (RAM)
The Stack
Function Calls
Input and Output Functions
Code Caves
Functions that returns a value
The Flags Register
Jumps
Compare Instructions
Structured Programming
Signed Operations
and more . . .
Requirements
PC
Basic C programming knowledge would be helpful but not necessary
You will learn everything you need to know
Description
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 codeoverwrite existing code modify memory segments to insert datacreate new functionsexploit code cavesadd new functionality to existing programsand 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!
Overview
Section 1: Introduction
Lecture 1 Installing the tools
Lecture 2 Binary and Hexadecimal Number Systems
Section 2: Basic Skills
Lecture 3 Introduction to xdbg debugger
Lecture 4 Debugger Stepping Basics
Lecture 5 How to hollow out an exe file
Section 3: Registers
Lecture 6 Introduction to CPU registers
Lecture 7 The MOV Instruction
Section 4: Basic Addition
Lecture 8 Addition using full registers
Lecture 9 Addition of partial registers
Lecture 10 Subtraction
Section 5: INC, DEC, MUL and DIV instructions
Lecture 11 INC and DEC Instructions
Lecture 12 MUL Instructions
Lecture 13 DIV Instructions
Lecture 14 DIV Exercises
Section 6: Accessing main memory (RAM)
Lecture 15 Register to memory and memory to register
Lecture 16 MOV to memory and direct memory patching techniques
Lecture 17 Memory Exercise
Section 7: The Stack
Lecture 18 Pushing register values to the stack
Lecture 19 Popping stack values to registers
Lecture 20 How to push Constants and Strings to the Stack
Section 8: Function calls
Lecture 21 Introduction to function calls
Lecture 22 Function call with 2 parameters
Lecture 23 Exercise: Function calls with 2 parameters
Lecture 24 Exercise: Function calls with 3 parameters
Section 9: Input and Output functions
Lecture 25 Intro to input output in assembly
Lecture 26 How to read in numbers and output it again
Lecture 27 How to read in strings and output it back to user
Section 10: Code Caves
Lecture 28 Introduction to Code Caves
Lecture 29 A simple code cave
Lecture 30 Code Cave Hello
Lecture 31 Exercise: Get Firstname, Lastname
Section 11: Calculator Project
Lecture 32 Project description
Lecture 33 Designing the solution
Lecture 34 Coding the calculator
Section 12: Functions that returns a value
Lecture 35 Introduction to functions that returns a value
Lecture 36 Exercise on strlen() function
Section 13: The Flags Register
Lecture 37 Intro to the Flags Register and the ZF flag
Lecture 38 The SF Flag
Lecture 39 The CF Flag
Lecture 40 The OF Flag
Lecture 41 Which flag to look: OF or CF?
Section 14: Jumps
Lecture 42 Introduction to Jumps and JZ
Lecture 43 JNZ jump
Lecture 44 JZ Loops
Lecture 45 JNZ Loops
Lecture 46 Other conditional jumps
Section 15: CMP instructions
Lecture 47 Introduction to compare instructions
Lecture 48 Practical on the CMP instructions
Lecture 49 Comparing unsigned and signed numbers
Section 16: Structured Programming
Lecture 50 Introduction to Structured Programming and If-Else Statements
Lecture 51 For Loops
Lecture 52 While Loops
Lecture 53 Break out of Loops
Lecture 54 Graph view, Trace Animate and Principles of Jumps
Section 17: Signed Operations
Lecture 55 NEG instruction
Lecture 56 Signed and Unsigned Extensions
Lecture 57 Practical on signed and unsigned extensions
Lecture 58 Converting Bytes and Words Using CBW and CWDE
Lecture 59 Converting Bytes and Words Using CWD and CDQ
Section 18: Resources for further study
Lecture 60 Bonus Lecture
Security researchers and students,Reverse Engineers,Anyone interested to learn Assembly Language from a software hacker's perspective