We may earn an affiliate commission when you visit our partners.
Infinite Skills

In this Reverse Engineering and Exploit Development training course, expert author Philip Polstra will teach you about common software vulnerabilities and how to find them, as well as how the vulnerabilities differ between various operating systems. This course is designed for beginners who are looking to get started in security, penetration testing, and reverse engineering.

Read more

In this Reverse Engineering and Exploit Development training course, expert author Philip Polstra will teach you about common software vulnerabilities and how to find them, as well as how the vulnerabilities differ between various operating systems. This course is designed for beginners who are looking to get started in security, penetration testing, and reverse engineering.

You will start by learning about reversing compiled Windows applications, including using fuzzing, stack overflows, and heap overflows. From there, Philip will teach you how to reverse compiled OS X, Linux, and Android applications. This video tutorial also covers how to find other vulnerabilities, including website and database vulnerabilities. Finally, you will learn about simple exploits, web exploitation, and ARM exploitation.

Once you have completed this computer based training course, you will be fully capable of finding vulnerabilities and developing exploits for them. Working files are included, allowing you to follow along with the author throughout the lessons.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Learn more about various reversing tools
  • Learn more about common vulnerabilities and how to find them
  • You will become more familiar with simple exploits, web exploitation, and arm exploitation

Syllabus

Getting Started
Important - Download These First - Working Files
Introduction To Reversing
About The Author
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Begins with reversing compiled Windows applications and progresses to OS X, Linux, and Android, offering a broad foundation across multiple operating systems
Covers fuzzing, stack overflows, and heap overflows, which are fundamental concepts in vulnerability analysis and exploit development
Includes working files to follow along with the author, providing a hands-on learning experience that reinforces theoretical concepts
Explores website and database vulnerabilities, expanding the scope beyond application-level flaws to encompass web-based security issues
Features a section on creating Metasploit modules, which is a valuable skill for automating and standardizing exploit development
Includes sections on shellcode encoding and techniques to evade detection, which are crucial for creating practical and effective exploits

Save this course

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

Reviews summary

Core concepts, practical, needs updates

According to learners, this course offers a solid foundation in reverse engineering and exploit development, covering core concepts like stack and heap overflows in detail. Reviewers praise the clear explanations and useful hands-on labs and demos provided by the knowledgeable instructor. However, many students warn that it is not suitable for true beginners, requiring prior knowledge of C/C++ and assembly. A significant point raised across recent reviews is that the content feels outdated, using older OS examples and potentially tools, and needs updates for modern techniques and systems. Despite needing updates, it's considered a valuable resource providing practical insights for those with the necessary background.
Explanations are clear, instructor is knowledgeable.
"The concepts are explained clearly..."
"The instructor is knowledgeable..."
"...the instructor knows his stuff."
"Instructor is very clear."
Labs and demos are practical and helpful.
"...the hands-on labs are very useful."
"Excellent, practical course. The demos were clear..."
"Loved the hands-on approach..."
"The working files were essential for following along."
Good coverage of fundamental topics like overflows.
"covers complex topics like stack and heap overflows in detail."
"The coverage of buffer overflows is comprehensive."
"The core RE concepts are explained well..."
"The hands-on coding and projects are the strongest part of the course for me."
Pace is fast in parts, structure could be improved.
"The pace is very fast in parts."
"The difficulty level jumps around."
"The exercises didn't always match the videos perfectly."
Uses older systems and tools, needs updates.
"Some sections feel a bit dated, especially the Windows XP examples, but the core principles are still valid."
"Very disappointed. The course is outdated and many of the tools/techniques shown no longer work or are not best practice."
"I wish there were more modern examples instead of just older OS versions."
"Needs updates for modern operating systems and exploitation techniques."
Requires significant prior knowledge.
"definitely not for beginners as advertised. You need significant prior knowledge of programming and low-level concepts."
"Too difficult for a beginner, misleading description."
"It's not a 'beginner' course, more intermediate."
"Requires a good understanding of C/C++ and assembly basics coming in."
"Assumes familiarity with command line tools and basic security concepts."

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 and Exploit Development with these activities:
Review Assembly Language Fundamentals
Strengthen your understanding of assembly language, which is crucial for reverse engineering and exploit development. Refreshing this knowledge will make it easier to follow the course's explanations of stack overflows, heap overflows, and shellcode.
Browse courses on Assembly Language
Show steps
  • Review basic assembly instructions (MOV, ADD, SUB, JMP).
  • Understand registers and memory addressing modes.
  • Practice reading and interpreting simple assembly code snippets.
Read 'Hacking: The Art of Exploitation'
Gain a deeper understanding of exploitation techniques by reading this classic book. It covers many of the vulnerabilities discussed in the course and provides practical examples.
Show steps
  • Read the chapters related to buffer overflows and format string bugs.
  • Experiment with the example code provided in the book.
  • Try to apply the techniques learned to simple programs.
Practice Reverse Engineering Challenges on Crackmes.one
Sharpen your reverse engineering skills by solving challenges on Crackmes.one. This will provide hands-on experience with disassembling and analyzing compiled programs.
Show steps
  • Select a crackme challenge with a difficulty level appropriate for your skill level.
  • Use a disassembler (e.g., Ghidra, IDA Pro) to analyze the program.
  • Identify the program's logic and find the key or password.
  • Document your findings and the steps you took to solve the challenge.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Practical Malware Analysis'
Expand your knowledge of reverse engineering by learning about malware analysis. This book provides practical guidance on dissecting malicious software and understanding its behavior.
Show steps
  • Read the chapters on static and dynamic malware analysis.
  • Practice analyzing sample malware using the techniques described in the book.
  • Focus on understanding how malware uses exploits to compromise systems.
Build a Simple Fuzzer
Reinforce your understanding of fuzzing by building a simple fuzzer. This project will involve generating random inputs and testing them against a target program to identify potential vulnerabilities.
Show steps
  • Choose a target program to fuzz.
  • Implement a basic fuzzer that generates random inputs.
  • Run the fuzzer against the target program and monitor for crashes.
  • Analyze any crashes to identify potential vulnerabilities.
Write a Blog Post on a Specific Exploit Technique
Solidify your understanding of a specific exploit technique by writing a blog post explaining it. This will force you to organize your thoughts and communicate the concepts clearly.
Show steps
  • Choose a specific exploit technique (e.g., stack overflow, heap overflow, format string bug).
  • Research the technique thoroughly and gather relevant information.
  • Write a clear and concise explanation of the technique, including examples.
  • Publish your blog post on a platform like Medium or your own website.
Contribute to an Open-Source Security Project
Gain real-world experience by contributing to an open-source security project. This could involve fixing bugs, writing documentation, or adding new features.
Show steps
  • Find an open-source security project that interests you.
  • Familiarize yourself with the project's codebase and contribution guidelines.
  • Identify a bug or feature that you can contribute to.
  • Submit a pull request with your changes.

Career center

Learners who complete Reverse Engineering and Exploit Development will develop knowledge and skills that may be useful to these careers:
Exploit Developer
An important task of an Exploit Developer involves creating code that takes advantage of software vulnerabilities to gain unauthorized access to a system. This role demands a deep understanding of software security, reverse engineering, and programming. The Reverse Engineering and Exploit Development course helps build a foundation for the role of an Exploit Developer. The course covers reversing compiled applications on Windows, OS X, Linux, and Android, and teaches about fuzzing, stack overflows, and heap overflows. The course's coverage of web vulnerabilities, database vulnerabilities, simple exploits, web exploitation, and ARM exploitation is particularly relevant for aspiring Exploit Developers.
Reverse Engineer
Reverse Engineers analyze software or hardware to understand its design, functionality, and potential vulnerabilities. They dissect systems to uncover hidden features, debug code, or identify security flaws. The Reverse Engineering and Exploit Development course helps build the skills needed for the role of a Reverse Engineer. The course covers reversing compiled applications on Windows, OS X, Linux, and Android, along with using reversing tools and understanding vulnerabilities. The course's introduction to assembly, stack overflows, heap overflows, and format string bugs provides a solid foundation. Learning about simple exploits, web exploitation, and ARM exploitation through this course will also be beneficial.
Vulnerability Researcher
The primary work of a Vulnerability Researcher involves discovering and analyzing security weaknesses in software and hardware systems. They investigate code, test applications, and analyze network traffic to identify potential entry points that attackers could exploit. This Reverse Engineering and Exploit Development course helps build skills relevant to becoming a Vulnerability Researcher. The course teaches about reversing compiled applications on Windows, OS X, Linux, and Android, in addition to covering fuzzing, stack overflows, and heap overflows. The focus on web and database vulnerabilities within the course provides useful knowledge, and one can become more familiar with simple exploits, web exploitation, and ARM exploitation.
Penetration Tester
The job of a Penetration Tester is to ethically probe computer systems, networks, and applications to identify security weaknesses. These professionals simulate cyber attacks to expose vulnerabilities that malicious actors could exploit. This Reverse Engineering and Exploit Development course may be useful to a Penetration Tester because it teaches how to find software vulnerabilities and develop exploits. The course covers reversing compiled applications on Windows, OS X, Linux, and Android, along with fuzzing, stack overflows, heap overflows, website vulnerabilities, and database vulnerabilities. With the knowledge of simple exploits, web exploitation, and ARM exploitation, the Penetration Tester can better assess a system's security posture.
Malware Analyst
Malware Analysts examine malicious software to understand its functionality, origin, and potential impact. They dissect code, analyze behavior, and develop countermeasures to protect systems from infection. The Reverse Engineering and Exploit Development course helps a Malware Analyst by teaching reversing compiled applications on Windows, OS X, Linux, and Android. The course's material on fuzzing, stack overflows, and heap overflows helps one understand how malware exploits vulnerabilities. Furthermore, the course's coverage of simple exploits, web exploitation, and ARM exploitation provides useful knowledge.
Application Security Engineer
An Application Security Engineer integrates security practices into the software development lifecycle. They identify and fix vulnerabilities in applications, conduct code reviews, and implement security controls. This Reverse Engineering and Exploit Development course helps the Application Security Engineer understand common software vulnerabilities and how to find them. The course's lessons includes reversing compiled applications, fuzzing, stack overflows, heap overflows, web vulnerabilities, and database vulnerabilities. Learning about simple exploits, web exploitation, and ARM exploitation enhances the Application Security Engineer's ability to secure applications.
Security Analyst
A Security Analyst protects computer systems and networks from cyber threats. This role often involves identifying vulnerabilities, analyzing security breaches, and implementing preventative measures. This Reverse Engineering and Exploit Development course helps build a foundation for a Security Analyst by teaching common software vulnerabilities and how to locate them across various operating systems like Windows, OS X, Linux, and Android. Understanding fuzzing, stack overflows, heap overflows, and web and database vulnerabilities, which are covered in this course, provides the knowledge to assess and mitigate risks. This course's coverage of simple exploits, web exploitation, and ARM exploitation may be useful to a Security Analyst.
Cybersecurity Engineer
A Cybersecurity Engineer designs, implements, and manages security systems to protect an organization's digital assets. They analyze security requirements, develop security architectures, and implement security controls. The Reverse Engineering and Exploit Development course helps a Cybersecurity Engineer by providing a comprehensive understanding of software vulnerabilities. The course covers reversing compiled applications, fuzzing, stack overflows, heap overflows, along with web and database vulnerabilities. The lessons about simple exploits, web exploitation, and ARM exploitation provides experience in how vulnerabilities are exploited.
Security Consultant
A Security Consultant assesses the security posture of an organization and provides recommendations to improve their defenses. This often involves penetration testing, vulnerability assessments, and security audits. The Reverse Engineering and Exploit Development course may be useful to a Security Consultant, as it teaches about reversing compiled applications on Windows, OS X, Linux, and Android. Understanding common vulnerabilities, fuzzing, stack overflows, heap overflows, web vulnerabilities, and database vulnerabilities assists in assessing risks. The course's lessons about simple exploits, web exploitation, and ARM exploitation contributes to the Security Consultant's skills.
Information Security Analyst
An Information Security Analyst is responsible for protecting an organization's data and systems from unauthorized access and cyber threats. They monitor security systems, analyze risks, and implement security policies and procedures. The Reverse Engineering and Exploit Development course may be useful for candidates interested in becoming Information Security Analysts. The course teaches common software vulnerabilities and how to find them, covering reversing compiled applications on different operating systems. The course's material concerning fuzzing, stack overflows, heap overflows, web vulnerabilities, database vulnerabilities, simple exploits, web exploitation, and ARM exploitation will contribute to the Information Security Analyst's knowledge.
Security Architect
A Security Architect designs and oversees the implementation of security systems and networks. This role typically requires an advanced degree and a deep understanding of security principles and technologies. This Reverse Engineering and Exploit Development course may be useful for one pursuing becoming a Security Architect. It introduces common software vulnerabilities across various operating systems, and covers specific techniques for finding vulnerabilities. This course's content on simple exploits, web exploitation, and ARM exploitation, along with knowledge of reversing tools, may enhance the Security Architect's skill set.
Database Administrator
A Database Administrator (DBA) manages and maintains databases, ensuring data integrity, security, and availability. While their primary focus is not software vulnerabilities, understanding database security is crucial. This Reverse Engineering and Exploit Development course helps build a foundation for understanding database exploitation. The course touches on database vulnerabilities. Learning about these topics helps the Database Administrator with their work.
Firmware Engineer
Firmware Engineers develop and maintain the software embedded in hardware devices. This role involves low level programming, debugging, and hardware software integration. The Reverse Engineering and Exploit Development course helps build a foundation for the Firmware Engineer by teaching about reverse engineering and software vulnerabilities. The course's instruction around reversing compiled applications, fuzzing, stack overflows, heap overflows, web vulnerabilities, and database vulnerabilities contributes to the Firmware Engineer's knowledge. The course's modules about ARM exploitation are particularly helpful for a Firmware Engineer.
Software Developer
Software Developers create and maintain software applications. While not directly focused on security, understanding security vulnerabilities is increasingly important for developers. This Reverse Engineering and Exploit Development course may improve the Software Developer's understanding of potential security flaws in their code. The course covers reversing compiled applications, fuzzing, stack overflows, heap overflows, web vulnerabilities, and database vulnerabilities. Learning about exploits can help developers write more secure code.
Network Engineer
A Network Engineer designs, implements, and manages computer networks. While not directly focused on software vulnerabilities, understanding network security is a key aspect of their role. The Reverse Engineering and Exploit Development course may be useful for the Network Engineer in designing and implementing secure network configurations. The course touches upon web vulnerabilities and exploitation, which can contribute to a broader understanding of network security threats and mitigation strategies.

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 and Exploit Development.
Provides a comprehensive introduction to exploitation techniques, covering topics like buffer overflows, format string bugs, and shellcode. It offers practical examples and detailed explanations that complement the course material. It valuable resource for understanding the underlying principles of exploit development. This book is commonly used as a textbook at academic institutions.
Provides a hands-on approach to malware analysis, covering both static and dynamic analysis techniques. While not directly focused on exploit development, understanding malware analysis is crucial for understanding how exploits are used in the real world. This book provides a solid foundation for understanding how malware works and how to analyze it. It valuable resource for anyone interested in reverse engineering and security.

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