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

If you had always wanted to learn how software protection works and how to use x64dbg to unpack them,  then this is the course for you. This course is an introduction to Software Protection for anyone who wants to get started in this field. It is suitable for software developers who want to learn how to protect their software and also for reverse engineers who want to fix bugs where the source code is not available.

You will learn how to use x64dbg to unpack Crackmes protected with packing and anti-debugging.  A CrackMe is a small program designed to test a programmer's reverse engineering skills.

Read more

If you had always wanted to learn how software protection works and how to use x64dbg to unpack them,  then this is the course for you. This course is an introduction to Software Protection for anyone who wants to get started in this field. It is suitable for software developers who want to learn how to protect their software and also for reverse engineers who want to fix bugs where the source code is not available.

You will learn how to use x64dbg to unpack Crackmes protected with packing and anti-debugging.  A CrackMe is a small program designed to test a programmer's reverse engineering skills.

What you will learn

  • How to set hardware breakpoints and analyze the unpacking header stub

  • Dumping unpacked executable from memory

  • Fixing Import Address Tables (IAT) after dumping memory.

  • Modify program behaviour

  • Patching programs

  • Creating loaders for process patching

  • What if the program cannot be unpacked

  • 3 techniques to unpack multiple protections

Prerequisites:

Before taking this course, you should already be familiar with how to use x64dbg.

Money back guarantee:

This course is backed by a 30-day money back guarantee.  So, go ahead and enroll in this course now and start reverse engineering and debugging programs the fun and easy way.  

Enroll now

What's inside

Learning objectives

  • How to unpack programs
  • Bypass anti-debuggers
  • Patch programs
  • Dump memory to files
  • Use x64dbg debugger
  • Use scyllahide plugin
  • 3 ways to unpack layered protections
  • What if the program cannot be unpacked
  • Using loaders for process patching
  • And more....

Syllabus

Introduction

Introduction

Introduction to Software Protection

Introduction to Software Protection

Read more

Downloading CrackMe 11

Examining the packer protection

Unpacking

Patching the dumped file

Introduction to Loaders

Creating a Loader

Introduction to Anti-Debugging Protection

Downloading CrackMe 12

Patching Anti-Debugging API calls

Installing the Scylla Hide plugin for anti-anti-debugging

Using ScyllaHide to hide the debugger

Introduction to multiple software protection

3 ways to reverse engineer multiple protections

Technique #1:  Hiding debugger and using loader for process patching

Technique #2:  Hiding debugger, unpack then patch

Bonus Lecture

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Teaches unpacking, debugging, and patching, which are essential skills for reverse engineers analyzing software without source code
Explores software protection techniques, which is valuable for developers seeking to safeguard their applications against reverse engineering
Requires familiarity with x64dbg, so learners without prior experience using this debugger may need to acquire foundational knowledge first
Covers techniques for bypassing anti-debugging measures, which is useful for reverse engineers facing protected applications
Uses CrackMe challenges, which provide hands-on practice for honing reverse engineering and debugging abilities in a controlled environment
Employs ScyllaHide plugin, which may require learners to install additional software to fully engage with the anti-anti-debugging aspects

Save this course

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

Reviews summary

Software protection & unpacking with x64dbg

According to learners, this course is a highly effective introduction to the practical aspects of software protection and unpacking using x64dbg. Students consistently praise the instructor's clear and concise explanations, which help demystify complex topics. The reliance on real-world CrackMe examples and a hands-on approach is frequently cited as a major strength, enabling learners to immediately apply the techniques taught for tasks like bypassing anti-debugging measures and patching programs. While the course is focused specifically on unpacking methods and assumes a certain level of comfort with debuggers beyond basic x64dbg use, students find it a valuable resource for gaining practical skills in this specialized area.
Concentrates on unpacking methods.
"This course focuses intensely on unpacking techniques using x64dbg, as advertised."
"It's specifically about software protection bypassing, not general reverse engineering."
"Understand this course targets specific unpacking methods; it's not a broad RE overview."
Uses real examples for practice.
"Working with the actual CrackMe examples was incredibly valuable and practical."
"The hands-on approach using real-world scenarios made learning much more engaging."
"I liked being able to immediately try the techniques on the provided samples."
Instructor explains complex topics well.
"The instructor did a great job explaining the concepts and steps."
"His explanations are crystal clear and easy to follow, even for complicated topics."
"I really appreciated how well the instructor broke down the processes involved in unpacking."
Assumes comfort with debuggers.
"You really need more than just basic x64dbg familiarity to get the most out of it."
"Some parts were challenging; a solid background in debugging tools helps immensely."
"While it states x64dbg prerequisite, being comfortable with assembly/debugging concepts is key."

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 Reverse Engineering 4: Software Protection with these activities:
Review x64dbg Usage
Practice using x64dbg to become more comfortable with its interface and features before starting the course. This will make it easier to follow along with the unpacking and patching demonstrations.
Browse courses on x64dbg
Show steps
  • Download and install the latest version of x64dbg.
  • Load a simple executable into x64dbg.
  • Set breakpoints and step through the code.
  • Examine registers and memory.
Read 'Practical Reverse Engineering'
Study this book to gain a deeper understanding of reverse engineering concepts and techniques. This will provide a solid foundation for understanding software protection mechanisms.
Show steps
  • Obtain a copy of 'Practical Reverse Engineering'.
  • Read the chapters on x86/x64 architecture and debugging.
  • Focus on sections related to anti-debugging and obfuscation.
Unpack Simple CrackMes
Practice unpacking simple CrackMes using x64dbg to reinforce the techniques learned in the course. This will help you develop your skills in identifying and bypassing software protection.
Show steps
  • Download a collection of simple CrackMes.
  • Use x64dbg to analyze and unpack each CrackMe.
  • Document the steps taken for each CrackMe.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Contribute to ScyllaHide
Contribute to the ScyllaHide project by reporting bugs, writing documentation, or contributing code. This will help you improve your skills and contribute to the reverse engineering community.
Show steps
  • Explore the ScyllaHide project on GitHub.
  • Identify areas where you can contribute.
  • Submit bug reports, documentation updates, or code contributions.
Write a Blog Post on Unpacking Techniques
Write a blog post summarizing the different unpacking techniques covered in the course. This will help you solidify your understanding of the material and share your knowledge with others.
Show steps
  • Choose a specific unpacking technique to focus on.
  • Research the technique and gather relevant information.
  • Write a clear and concise explanation of the technique.
  • Include examples and screenshots to illustrate the process.
  • Publish the blog post on a relevant platform.
Develop a Simple Unpacker
Start a project to develop a simple unpacker for a specific type of software protection. This will provide hands-on experience and deepen your understanding of the underlying principles.
Show steps
  • Choose a specific software protection method to target.
  • Analyze the protection method and identify its weaknesses.
  • Develop an unpacker that bypasses the protection.
  • Test the unpacker on a variety of protected executables.
Read 'Reversing: Secrets of Reverse Engineering'
Study this book to expand your knowledge of reverse engineering and software protection. This will provide a deeper understanding of the concepts covered in the course.
Show steps
  • Obtain a copy of 'Reversing: Secrets of Reverse Engineering'.
  • Read the chapters on disassembly, debugging, and anti-reverse engineering techniques.
  • Focus on sections related to software protection and obfuscation.

Career center

Learners who complete Reverse Engineering 4: Software Protection will develop knowledge and skills that may be useful to these careers:
Software Protection Engineer
The role of a Software Protection Engineer involves implementing security measures to prevent reverse engineering and tampering of software. This course directly aligns with the responsibilities of a Software Protection Engineer, as it teaches how software protection works and how to use x64dbg to unpack programs. The course's emphasis on unpacking Crackmes protected with packing and anti-debugging directly translates to the skills needed to protect software from reverse engineering. The instruction on dumping memory to files, fixing Import Address Tables (IAT), and patching programs is also crucial for a Software Protection Engineer. You should consider how this course can help you.
Malware Analyst
A Malware Analyst examines malicious software to understand its behavior and purpose. This course provides valuable skills for malware analysis, as it teaches how to unpack programs, bypass anti-debuggers, and analyze packed executables. The ability to use x64dbg to unpack Crackmes and fix Import Address Tables (IAT) is essential for analyzing malware samples and understanding their functionality. The course's instruction on patching programs also helps malware analysts understand how malware can modify system behavior. If you want to learn how to reverse engineer malware, this course could be very helpful.
Application Security Engineer
An Application Security Engineer focuses on securing software applications throughout their development lifecycle. This course directly helps an application security engineer by teaching how software protection works. The course's emphasis on using x64dbg to unpack programs and fix Import Address Tables (IAT) gives you skills needed to protect software. Application security engineers need to ensure code isn't tampered with, which can be done by using the skills taught in this course.
Reverse Engineer
The role of a Reverse Engineer involves analyzing software to understand its functionality, often without access to the source code. This course helps build a foundation for reverse engineering, as it teaches how to unpack programs, bypass anti-debuggers, and patch programs. The course's emphasis on using x64dbg to unpack Crackmes protected with packing and anti-debugging directly translates to the skills needed to analyze and understand complex software systems. The instruction on dumping memory to files and fixing Import Address Tables (IAT) is also crucial for reverse engineers. If you are looking to get started in this field, this course may be useful.
Vulnerability Researcher
Vulnerability Researchers identify weaknesses in software systems that could be exploited by attackers. This course can assist vulnerability researchers by providing them with the skills to analyze software protection techniques and identify potential vulnerabilities. By learning how to unpack programs, bypass anti-debuggers, and patch programs, vulnerability researchers can gain a deeper understanding of how software is protected and how to find ways to circumvent these protections. The instruction on using x64dbg and analyzing packed executables directly applies to the process of identifying vulnerabilities in software. This course may be particularly useful for those focused on software security.
Security Analyst
A Security Analyst is responsible for protecting computer systems and networks from cyber threats. This course can aid security analysts by providing them with a deeper understanding of software protection techniques and how to bypass them. By learning how to unpack programs, bypass anti-debuggers, and patch programs, security analysts can better assess the security posture of software systems and identify potential vulnerabilities. Familiarity with tools like x64dbg and techniques for analyzing packed executables are essential for a Security Analyst involved in vulnerability research or malware analysis. This course is beneficial because it gives a look at some of the techniques used to target software.
Security Consultant
Security Consultant: As a Security Consultant, you will advise organizations on how to improve their security posture and protect against cyber threats. This course can assist Security Consultants by providing them with a deeper understanding of software protection techniques and how to assess the security posture of software systems. By learning how to unpack programs, bypass anti-debuggers, and patch programs, security consultants can better advise their clients on how to protect their software from reverse engineering and tampering. Consider how this course can help you.
Penetration Tester
A Penetration Tester simulates attacks on computer systems to identify security vulnerabilities. This course offers valuable skills for penetration testers, as it teaches how to unpack programs, bypass anti-debuggers, and patch programs. The ability to use x64dbg to unpack Crackmes and fix Import Address Tables (IAT) is essential for assessing the security of software systems. The course's instruction on patching programs also helps penetration testers understand how to exploit vulnerabilities and gain unauthorized access. Learning about packers, anti-debugging, and protection techniques can help a Penetration Tester.
Software Developer
A Software Developer designs, develops, and tests software applications. This course on software protection can be beneficial for software developers, as it teaches them how to protect their software from reverse engineering. The skills learned in this course, such as using x64dbg to unpack Crackmes and implementing anti-debugging techniques, directly translate to the ability to create more secure and resilient software. The instruction on unpacking programs and patching them also provides insights into potential vulnerabilities and how to address them. If you are wondering how you can add software protection, then this course may be helpful.
Digital Forensics Analyst
A Digital Forensics Analyst investigates cybercrimes and analyzes digital evidence. This course provides skills for analyzing malware and understanding software protection techniques used by criminals. By learning how to unpack programs, bypass anti-debuggers, and patch programs, digital forensics analysts can gain a deeper understanding of how malware works and how to extract valuable evidence from infected systems. If you are interested in this career path, this course may be very helpful.
Security Engineer
A Security Engineer designs, implements, and manages security systems to protect computer networks and data. This course can be useful for security engineers, as it provides them with a deeper understanding of software protection techniques and how to implement them. By learning how to unpack programs, bypass anti-debuggers, and patch programs, security engineers can better design and implement security measures to protect against reverse engineering and tampering. This course will help explore vulnerabilities caused by lack of software protection.
Firmware Engineer
Firmware Engineers develop and maintain the embedded software that controls hardware devices. This course may be useful for Firmware Engineers who need to protect their firmware from reverse engineering and tampering. The skills learned in this course, such as using x64dbg to unpack programs and patching them, can be applied to protect firmware from unauthorized access and modification. The instruction on unpacking programs and implementing anti-debugging techniques can also help Firmware Engineers understand potential vulnerabilities in their firmware. If you're considering a career in Firmware, consider this course.
Game Developer
Game Developers create video games for various platforms. This course may be useful for Game Developers who want to protect their games from piracy and cheating. Game developers will likely appreciate this course's content. The skills learned, such as using x64dbg to unpack programs and patching them, can be applied to prevent reverse engineering and unauthorized modification of game code. The instruction on unpacking programs and implementing anti-debugging techniques can also help Game Developers prevent cheating and protect their intellectual property. If you're developing games, this course might enhance your expertise.
Cryptographer
A Cryptographer designs and implements encryption algorithms and security protocols. While this course does not focus on cryptography directly, it can be useful for Cryptographers who need to understand how software protection techniques can be used to protect cryptographic keys and algorithms. By learning how to unpack programs, bypass anti-debuggers, and patch programs, cryptographers can gain a better understanding of how to protect their cryptographic implementations from reverse engineering and tampering. If you want to learn about protecting software, then this course may be useful.
Hardware Engineer
Hardware Engineers design, develop, and test physical components of computer systems. This course may be useful for Hardware Engineers who work with embedded systems or programmable logic devices, as it provides insights into software protection techniques that can be used to protect hardware designs from reverse engineering and tampering. While this course focuses on software protection, the underlying principles of reverse engineering and anti-debugging can be applied to hardware security as well. Hardware engineers may want to learn some software skills.

Reading list

We've selected two 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 Reverse Engineering 4: Software Protection.
Provides a comprehensive guide to reverse engineering, covering x86, x64, and ARM architectures, as well as Windows kernel internals. It delves into reversing tools and obfuscation techniques, which are highly relevant to software protection. It serves as a valuable resource for understanding the underlying principles and practical methods used in reverse engineering and software protection, complementing the course's focus on unpacking and patching.
Delves into the art and science of reverse engineering, covering a wide range of topics from basic disassembly to advanced code analysis. It provides practical examples and case studies to illustrate key concepts. It valuable resource for both beginners and experienced reverse engineers, offering insights into various techniques and tools.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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