Mô tả

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:


  1. modify existing code

  2. overwrite existing code

  3. modify memory segments to insert data

  4. create new functions

  5. exploit code caves

  6. add new functionality to existing programs

  7. 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!

Bạn sẽ học được gì

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 . . .

Yêu cầu

  • PC
  • Basic C programming knowledge would be helpful but not necessary
  • You will learn everything you need to know

Nội dung khoá học

26 sections

Introduction

2 lectures
Installing the tools
05:43
Binary and Hexadecimal Number Systems
09:50

Basic Skills

3 lectures
Introduction to xdbg debugger
17:47
Debugger Stepping Basics
04:52
How to hollow out an exe file
11:03

Registers

2 lectures
Introduction to CPU registers
09:43
The MOV Instruction
12:50

Basic Addition

3 lectures
Addition using full registers
11:40
Addition of partial registers
11:59
Subtraction
08:28

INC, DEC, MUL and DIV instructions

4 lectures
INC and DEC Instructions
11:06
MUL Instructions
14:37
DIV Instructions
15:10
DIV Exercises
14:48

Accessing main memory (RAM)

3 lectures
Register to memory and memory to register
13:35
MOV to memory and direct memory patching techniques
04:51
Memory Exercise
11:43

The Stack

3 lectures
Pushing register values to the stack
13:45
Popping stack values to registers
10:53
How to push Constants and Strings to the Stack
06:20

Function calls

4 lectures
Introduction to function calls
09:03
Function call with 2 parameters
11:20
Exercise: Function calls with 2 parameters
11:38
Exercise: Function calls with 3 parameters
08:41

Input and Output functions

3 lectures
Intro to input output in assembly
12:16
How to read in numbers and output it again
08:17
How to read in strings and output it back to user
09:27

Code Caves

4 lectures
Introduction to Code Caves
14:20
A simple code cave
06:43
Code Cave Hello
11:08
Exercise: Get Firstname, Lastname
25:12

Calculator Project

3 lectures
Project description
01:07
Designing the solution
07:25
Coding the calculator
24:01

Functions that returns a value

2 lectures
Introduction to functions that returns a value
06:20
Exercise on strlen() function
18:04

The Flags Register

5 lectures
Intro to the Flags Register and the ZF flag
06:16
The SF Flag
06:39
The CF Flag
07:00
The OF Flag
05:47
Which flag to look: OF or CF?
02:04

Jumps

5 lectures
Introduction to Jumps and JZ
07:33
JNZ jump
03:37
JZ Loops
06:07
JNZ Loops
04:12
Other conditional jumps
01:42

CMP instructions

3 lectures
Introduction to compare instructions
05:52
Practical on the CMP instructions
06:36
Comparing unsigned and signed numbers
07:18

Structured Programming

5 lectures
Introduction to Structured Programming and If-Else Statements
10:44
For Loops
08:22
While Loops
07:35
Break out of Loops
07:51
Graph view, Trace Animate and Principles of Jumps
09:49

Signed Operations

7 lectures
NEG instruction
03:14
Signed and Unsigned Extensions
05:53
Practical on signed and unsigned extensions
08:54
Converting Bytes and Words Using CBW and CWDE
05:44
Converting Bytes and Words Using CWD and CDQ
04:58
IMUL and IDIV
07:40
Example of IDIV
05:40

Bitwise Operations

5 lectures
Introduction to Boolean Algebra
06:14
Bitwise Instructions
13:32
Arithmetic Shifting
07:01
Rotate Instructions
04:16
Exercise on bitwise operations
13:52

Memory Arrays

6 lectures
Introduction to memory arrays
11:43
A practical on memory arrays
08:30
Introduction to the LEA instruction
11:21
A simple LEA implementation
15:10
LEA with counter
08:57
LEA with loop
09:31

Data Structures

2 lectures
Intro to Data Structures
05:24
Hands on practical on data structs
06:53

String Instructions

8 lectures
Introduction to String Instructions
09:24
The Direction Flag (DF flag)
08:05
LODS Instructions
09:45
Exercise: LODS Adder
06:37
The MOVS Instructions
10:06
The REP Instruction
03:34
The SCAS Instructions
07:39
The CMPS Instructions
05:45

Creating Your Own Functions

9 lectures
Introduction to CALL and RET
09:59
The importance of saving Register States
08:13
Nested function calls
07:50
Calling Conventions: using registers to pass params to functions
05:49
Passing parameters via the Heap (Global Data)
04:19
Passing parameters via the Stack
10:45
Cleaning the Stack
08:19
Stack Frames
07:46
Stack Frame Practical
13:29

The Call Stack

2 lectures
Introduction to the Call Stack
13:04
Practical on Traversing the Call Stack
12:30

Windows API

5 lectures
Introduction to WinAPI
08:41
ReadFile and WriteFile - Theory
09:26
ReadFile and WriteFile - Practicals
10:51
Theory on the CreateFile win32 API
05:52
Practical on the CreateFile win32 API
11:47

External Functions

2 lectures
Understanding External Functions
03:44
Practical on External Functions
05:06

Resources for further study

2 lectures
Bonus Lecture
02:39
UPDATE: Continue your journey with x64 (64-bit) assembly
00:14

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.