We may earn an affiliate commission when you visit our partners.
Course image
Paul Chin

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.

Read more

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.

Enroll now

What's inside

Learning objectives

  • 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 . . .
  • Show more
  • Show less

Syllabus

Introduction

How to install x64dbg and configure it. Also how to install Detect-It-Easy (DiE). We will use xdbg to write assembly programs.

Read more

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.

Description of the requirements for the calculator project and tips for solving it.

Designing the high level solution and converting to assembly code.

Implement the design solution into assembly code.

How to access and use functions that returns a value and also writing a simple demo.

An exercise on getting input from user, using strlen() function to get the length of the string and then display the result.

What are the Flags Register and how does the ZF flag work.

What is the SF (Sign Flag) and how it works.

How the CF Flag (Carry Flag) works.

What is the OF Flag and how it works.

Both CF and OF flags will change with every arithmetic operation. This lecture explains which one you should be looking at.

What are Jumps and also a practical on JZ jump.

Learn about JNZ (Jump Not Zero)

How to write a loop using the JZ conditional jump instruction

How to write an optimized loop using the JNZ instruction

Other conditional jumps, eg,  JS, JC, JO, JNS, JNC and JNO

Explanation of the CMP instructions and how it works

Writing assembly code to include CMP instructions to see how it works.

Are are unsigned and signed comparisons and what special instructions are being used for each.

Introduction to high level programming constructs and how to implement the if-else statement using assembly.

How to implement for loops in assembly.

How to implement the high level programming construct of the WHILE Loop using assembly.

How to use the high level programming construct called BREAK to prematurely exit a loop in assembly.

How to use the Graph View and Trace Animate. Also discuss Principles of Jumps.

How NEG works and a practical on it.

Learn about signed and unsigned extensions.

Hands on practical on using MOVZX and MOVSX for unsigned extension and signed extension.

How to do signed conversions using CBW and CWDE.

How to convert signed numbers using CWD and CDQ.

IMUL is the signed-aware version of the MUL instruction.

A hands-on practical on IDIV

Basic Boolean Algebra refresher

Using the NOT, AND, OR, XOR instructions in xdbg

Learn about using arithmetic shifting for multiplication and division

Learn about bit rotation instructions, i.e. ROL and ROR

Using AND and ROR to do an exercise on bitwise operations.

An explanation of what memory arrays are with simple examples

A walk-through on what memory arrays are and how to access them.

What are LEA instructions and how it is commonly used.

A simple example and walkthrough to get a quick glimpse of how it is used.

How to use an LEA with an ECX counter to calculate address of each array element

Using ECX counter and LEA in a loop to iterate through an array.

Introduction to Data Structures and its importance

A practical walkthrough on how to create a data struct in xdbg

Learn how to use the string instructions, eg, STOS, LODS, MOVS, REP etc...

What is the DF flag and how use it

Learn the family of LODS (Load String) instructions: LODSB, LODSW and LODSD

Let's do an exercise to put your knowledge of string operations to good use. Write a program that sums up the elements of an array.

Learn about the MOVSB, MOVSW and MOVSD instructions and how they work

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Builds a strong foundation in assembly language for those who have never worked with it
Taught by recognized instructor Paul Chin
Uses hands-on labs and interactive x64dbg debugger
Covers topics that are highly relevant to reverse engineering and modifying exe files
Progresses from assembly language basics to advanced x64dbg debugging techniques
May require prerequisite knowledge of basic computer science concepts

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Practical reverse engineering assembly with x64dbg

According to learners, this course is a highly practical and unique approach to Assembly Language Programming for Reverse Engineering, specifically for modifying existing programs. Students praise its hands-on methodology using x64dbg, stating it effectively fills the knowledge gap between theoretical assembly and real-world application. Many found the instructor's explanations clear and beneficial, especially for complex topics like code caves. While largely positive, some note the course can be challenging for absolute beginners due to its pace or assume some prior debugging familiarity. A few reviews also mention minor production quality issues or suggest some content could be updated, though the core value remains strong.
This course is highly focused on a niche topic, which may not appeal to all.
"The content is very specific and niche, which is exactly what I was looking for in a reverse engineering course."
"It's a niche course, and if you're not specifically interested in modifying EXEs with a debugger, it might not be for you."
"I found that it avoids general assembly theory and gets straight to reverse engineering applications, which is its strength."
The instructor effectively simplifies complex assembly and reverse engineering concepts.
"The instructor explains complex topics clearly and makes them understandable. Highly recommend this for learning."
"I found that the instructor breaks down difficult concepts into manageable chunks, making the learning process smoother."
"I appreciate the step-by-step guidance on using x64dbg for assembly, it was very helpful."
"The examples provided are well-chosen and illustrative, which aids greatly in understanding the material."
This course delivers on its promise of hands-on, practical assembly for reverse engineering.
"Finally, a practical approach to assembly for reverse engineering using x64dbg. The hands-on labs were excellent, and I'm very satisfied."
"It truly fills the gap between theoretical assembly and practical application in reverse engineering, which is hard to find elsewhere."
"The unique focus on modifying existing programs directly in a debugger is what sets this course apart for me."
"I really enjoyed the practical exercises and seeing immediate results. It built my confidence in working with binaries."
Some reviewers noted minor audio/visual quality issues in certain lectures.
"The production quality is a bit rough in some lectures. Sometimes, it was hard to hear or see clearly."
"I noticed that the instructor's accent and rapid speaking sometimes made it difficult to follow without constantly pausing."
"The course materials feel a little dated in some areas, and I encountered some minor issues with software versions during setup."
The course can be challenging for those with absolutely no prior background in programming.
"While advertised for beginners, I found it moves quite fast in parts, assuming more prior knowledge than 'zero'."
"As a complete beginner, I found it a bit challenging; a stronger foundation in programming or basic debugging would be beneficial."
"The pace might be too quick for absolute novices, so be prepared to rewatch sections and do external research."
"I recommend having at least a basic understanding of general programming concepts before diving into this course."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Assembly Language Programming for Reverse Engineering with these activities:
Organize course materials
Compile and review notes, assignments, quizzes, and exams from past courses or similar learning experiences to prepare for this course.
Show steps
  • Gather materials from previous courses or learning experiences.
  • Organize materials chronologically or by topic.
  • Review materials and identify areas for improvement or further study.
Create a custom assembly program
Develop a new project that combines Assembly Language and Reverse Engineering skills taught in this course.
Browse courses on Assembly Language
Show steps
  • Develop a project idea.
  • Plan out the implementation.
  • Write your assembly code
  • Test your program
Show all two activities

Career center

Learners who complete Assembly Language Programming for Reverse Engineering will develop knowledge and skills that may be useful to these careers:

Reading list

We've selected 50 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Assembly Language Programming for Reverse Engineering.
Considered a classic in the field, this book takes a quantitative approach to computer architecture, focusing on performance analysis and design trade-offs. It is suitable for advanced undergraduate and graduate students and valuable reference for researchers and practitioners. The latest edition includes updated content on recent architectural trends. It is essential for deepening one's understanding and must-read for serious students of computer architecture.
Provides a comprehensive guide to reverse engineering, covering topics such as disassembling, debugging, and vulnerability discovery.
Delves into the microarchitecture of modern processors, focusing on superscalar techniques for exploiting instruction-level parallelism. It is suitable for advanced undergraduate and graduate students interested in the intricacies of high-performance processor design. It provides detailed coverage of topics like pipelining, caches, and out-of-order execution, making it valuable for deepening understanding of contemporary architectures.
Is widely recommended for beginners in penetration testing and ethical hacking. It provides a solid foundation in core skills and techniques using a virtual lab environment with Kali Linux. The book covers essential stages of a penetration test, including information gathering, vulnerability finding, exploitation, and post-exploitation.
The second edition of this widely used textbook continues to introduce the fundamentals of computer organization and design using the RISC-V instruction set. It provides a solid foundation in the hardware/software interface. This edition includes updates and refinements, making it a relevant resource for undergraduate students and those new to the field.
Is highly relevant for those using x64dbg for malware analysis, as indicated by some of the course titles. It teaches practical techniques for dissecting malicious software, which often involves using debuggers like x64dbg for dynamic analysis. It widely recommended book for malware analysts.
This iteration focuses on red teaming and simulating advanced attacks in realistic environments. It introduces new strategies, exploits, and techniques for offensive hacking skills, including custom malware and persistence. is valuable for those looking to advance their practical offensive security capabilities.
Provides insights into advanced adversarial techniques and how they are used in real-time cyber conflicts. It covers topics relevant to red teaming and understanding the attacker's perspective. It's suitable for those looking to deepen their understanding of advanced offensive tactics and defensive countermeasures.
This guide provides detailed knowledge of the Metasploit framework, a crucial tool in penetration testing. It covers using Metasploit for various stages of an assessment, including exploitation and post-exploitation. It's a valuable reference for anyone utilizing or wanting to learn this powerful framework.
Continuing from Part 1, this book delves further into advanced Windows internal topics. It is an essential reference for understanding the low-level workings of the Windows operating system, which is directly applicable when performing in-depth analysis and debugging with x64dbg.
Teaches reverse engineering using IDA Pro, with a focus on practical techniques.
Provides a comprehensive overview of assembly language programming, covering both x86 and ARM architectures.
Provides a comprehensive guide to binary analysis with Python, covering topics such as reverse engineering, vulnerability discovery, and exploit development.
Provides a deep dive into low-level programming concepts, bridging the gap between C and assembly language on 64-bit Intel architectures. This understanding is highly beneficial for comprehending how programs execute and for effective debugging with tools like x64dbg.
Save
Provides a comprehensive look at planning and executing red team operations. It covers methodologies, tools, and techniques used in realistic attack simulations. It's a valuable resource for those involved in or aspiring to be part of a red team.
Includes a specific mention of x64dbg as a recommended debugger. It likely covers practical aspects of using debuggers for reverse engineering tasks, making it directly relevant to the topic and providing hands-on guidance for using x64dbg.
Provides a detailed introduction to computer architecture and programming from the ground up, with a focus on ARM assembly language.
Provides a comprehensive guide to binary analysis for malware detection, covering topics such as malware analysis, vulnerability discovery, and exploit development.
Provides an overview of modern computer architectures, including x86, ARM, and RISC-V, and discusses their application in various devices like smartphones and servers. It is suitable for readers looking for a broad understanding of current architectural trends and their relevance in different computing domains. It helps in understanding contemporary topics in computer architecture.
Covers the fundamental principles of computer architecture, including instruction set design, processor implementation, and memory hierarchy. It is designed for undergraduate students and provides a solid foundation in the core concepts of the field. It can be a good resource for gaining a broad understanding before diving into more advanced topics.
Provides a detailed examination of memory systems, a critical component of computer architecture. It covers caches, DRAM, and disk storage, discussing their design, operation, and performance. It is suitable for advanced undergraduate and graduate students specializing in computer architecture. This book is valuable for gaining a deep understanding of memory hierarchy design.
Comprehensive guide specifically for bug bounty hunting, focusing on finding and reporting web vulnerabilities. It covers various web hacking techniques and provides practical exercises. It's particularly useful for those interested in web application security and participating in bug bounty programs.
Explores computer architecture from a security perspective, covering hardware and software security solutions. It is relevant for students and professionals interested in secure system design. It discusses how architectural choices can impact security and introduces concepts like secure memory and CPU design. This book addresses a contemporary and increasingly important topic in the field.
Focuses on using Python for offensive security tasks, including network sniffing, malware creation, and web application attacks. It's a practical guide for developers and security professionals who want to leverage Python for offensive purposes. The second edition is updated for Python 3 and contemporary libraries.
Provides a foundational understanding of how computer systems work from a programmer's perspective, covering topics like data representation, assembly language, and the memory hierarchy. This knowledge is essential for anyone doing low-level reverse engineering and debugging with tools like x64dbg.
This unique book takes a hands-on approach, guiding readers to build a complete computer system, from gates to operating system. While it covers broader computer science concepts, the hardware and architecture layers provide a fundamental understanding of how computers work from the ground up. It is excellent for gaining a practical and intuitive understanding of computer architecture principles, suitable for high school to undergraduate levels.
This concise book serves as an introduction and reference to the RISC-V instruction set architecture. It is particularly relevant for understanding contemporary open architectures that are gaining popularity. It's suitable for students and professionals who want to quickly learn the details of RISC-V. is valuable for staying current with modern ISA trends.
The second part of the Windows 10 System Programming series continues to explore advanced topics in Windows system programming. This is valuable for gaining a deeper understanding of the operating system features and behaviors that are encountered during advanced debugging and reverse engineering with x64dbg.
Save
This text comprehensively covers the MIPS architecture assembly language with a focus on the modern MIPS instruction set.
Provides a detailed look at the design and analysis of interconnection networks, which are crucial components in parallel and high-performance computing systems. It is suitable for graduate students and researchers specializing in this area. It covers network topology, routing, flow control, and performance analysis. This book valuable resource for those focusing on the communication infrastructure within computer architectures.
Focuses on modern x86 assembly language programming, including 64-bit aspects relevant to x64dbg. It valuable resource for solidifying the understanding of the assembly instructions encountered when debugging and analyzing programs.
A strong understanding of x86 and x64 assembly language prerequisite for effective reverse engineering and debugging with x64dbg. provides a comprehensive introduction to assembly language programming on these architectures, which is essential for interpreting the code viewed in a debugger.
For those interested in the more advanced aspects of malware analysis and software protection, this book provides detailed knowledge of Windows kernel-mode programming and rootkit techniques. This is highly relevant for understanding sophisticated threats that may require advanced debugging with tools like x64dbg.
Similar to Black Hat Python, this book focuses on using Python for penetration testing. It provides practical examples and scripts for various offensive tasks. It's a valuable resource for those who prefer a task-oriented approach to learning Python for penetration testing.
Social engineering key component of offensive security. This book, written by a renowned former hacker, explores the art of manipulating people to gain access to information or systems. It provides valuable insights into the human element of security breaches.
Offers a collection of Python recipes for various security tasks, including network analysis, programming with Scapy, and web scraping. It provides practical code examples that can be adapted for offensive security tools and scripts.
Classic in the field of exploit development and shellcoding. It provides a deep dive into how to find and exploit security vulnerabilities at a low level. While some techniques might be dated, the fundamental concepts of shellcoding remain relevant.
Memory analysis key aspect of dynamic malware analysis and reverse engineering, often performed in conjunction with debugging. provides comprehensive coverage of memory forensics techniques across different operating systems, offering valuable context for interpreting memory dumps and debugger output from x64dbg.
Is highly relevant for those using x64dbg in the context of malware analysis and understanding how antivirus software works. It provides insights into the techniques used by security software, which can be helpful when analyzing protected or malicious code.
A deep understanding of operating systems is vital for exploit development and low-level offensive techniques. This classic textbook provides a solid theoretical foundation for understanding how operating systems work. It covers essential concepts that are relevant to identifying and exploiting vulnerabilities at the OS level.
Offers a systematic approach to debugging, providing numerous strategies and techniques applicable across different tools and platforms. While not specific to x64dbg, the debugging methodologies presented are highly relevant for improving efficiency and effectiveness when using any debugger.
Similar to the IDA Pro Book, this resource focuses on another prominent reverse engineering tool, Ghidra. It provides valuable insights into static and dynamic analysis techniques that complement the use of a debugger like x64dbg. Understanding multiple tools can provide a broader perspective on reverse engineering.
This beginner-friendly book provides a clear and structured introduction to assembly language programming and is suitable for self-study.
Provides an accessible and illustrated introduction to how microprocessors work. It uses analogies and diagrams to explain complex concepts, making it suitable for readers with a less technical background or those looking for an intuitive understanding. While it may not have the depth of a textbook, it's a good starting point for grasping the basic principles of computer architecture.
Understanding cryptography is fundamental to understanding many security concepts, both offensive and defensive. provides a practical introduction to modern encryption. While not strictly an offensive security book, it provides essential background knowledge for analyzing secure systems and identifying weaknesses.
While covering different debuggers, this book focuses on the fundamental principles and techniques of debugging. The concepts of setting breakpoints, stepping through code, and examining memory are universally applicable to x64dbg and are crucial skills to develop.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Assembly Language Programming for Reverse Engineering.
Malware Analysis and Introduction to Assembly Language
Most relevant
Introduction to Computing Systems
Most relevant
64-Bit Assembly & Shellcoding for Ethical Hackers
Most relevant
Windows Malware Analysis for Hedgehogs - Beginner Training
Most relevant
x64 Assembly Language and Reverse Engineering Practicals
Most relevant
Rhino 3D ( any version ) Beginner Level to Advanced Level
Most relevant
Reverse Engineering 3: x64dbg Graphical Static Analysis
Most relevant
x64dbg Script Programming For Reverse Engineering
Most relevant
Assembly Language Foundation Course for Ethical Hackers
Most relevant

Udemy Buyer Protection & Guarantee

Verified partner policies & purchase protections

Global Marketplace Leader
Free Trial & Audit

Free Lecture Previews

Free preview video lectures available for all courses; optional 7-day free trial on Personal Plan subscriptions (cancel before trial ends to avoid conversion).

Return & Refund Policy

30-Day Money-Back Guarantee

30-day money-back guarantee on all eligible individual course purchases (provided course content has not been substantially consumed or downloaded). Subscription fees are non-refundable once billed.

Buyer Protections

Verified Academic & Industry Partner

Lifetime access to purchased individual courses and future updates, verifiable certificate of completion, and direct student Q&A forums.

Key Purchase Protections
30-day 100% money-back guarantee on course purchases
Lifetime access on web, mobile, and offline
Certificate of completion included with purchase
Direct instructor Q&A and active student community
OpenCourser Verified Partner Policy details last reviewed: 2026-10-22
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser