Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Paul Chin, PhD

If you have never used Ghidra before and want to learn how get started with using Ghidra to reverse engineer and analyse programs, then this is the course for you.

Read more

If you have never used Ghidra before and want to learn how get started with using Ghidra to reverse engineer and analyse programs, then this is the course for you.

Ghidra is the strong competitor to IDA Pro and is used by NSA itself for Reverse Engineering. And the best thing is that it is totally free. It is used for Reverse Engineering, Malware Analysis and Exploits analysis. In this course we will learn Ghidra by solving  Linux  and Windows CrackMe challenges.  A CrackMe is a small program designed to test a programmer's reverse engineering skills. This course is an introduction to Reverse Engineering for anyone who wants to get started in this field. It is suitable for software developers who want to learn how software works internally and also for reverse engineers who want to understand how Linux  and Windows binaries work. This course will equip you with the knowledge and skill to use Ghidra in addition to whatever other tools you might already be familiar. It is also suitable for absolute beginners with no knowledge of reversing, as I will take you from zero to basics.

I will start off with showing you how to install Oracle Virtual Box. Then, installing Java SDK and Kali Linux in the Virtual Box. Then, we will reverse engineer Linux executable files.

Next, we will move on to installing Java SDK and Ghidra for Windows and reverse and analyze Windows programs. You will also learn how to reverse GUI CrackMe's. You will learn how to use Function Graphs, Function Call Trees, Search String, Defined Strings and more. The course will also cover how to identify program entry point and also find the main functions for command line interface apps and WinMain for GUI based apps.

By the end of this course, you will have the basic skills to start reversing and analyzing Linux and Windows binaries.

What you will learn:

  • How to disassemble programs into assembly code

  • How to decompile programs to C code

  • Static Analysis

  • Understand Windows API's

  • Identify entry points, main and WinMain functions

  • Use String Search and Defined Strings

  • Visualizing the Call Stack using Function Graph and Function Call Trees

  • Solving Crackmes

  • and more ...

Suitable for:

Anyone interested to learn Reverse Engineering on Linux and Windows executable files.

Enroll now

What's inside

Learning objectives

  • Reverse engineering
  • Basics of ghidra
  • Solving linux and windows crackme's
  • Understand windows api's
  • Identify entry points, main and winmain functions
  • Analyzing using function graph and function call trees
  • Doing string search and defined strings
  • Windows api
  • Function call graphs
  • Creating functions
  • Converting data types
  • Editing function signatures
  • Cross referencing function calls and strings
  • And more...

Syllabus

Introduction

Intro to Ghidra for Beginners

How to Install Kali Linux and Ghidra

How to Install Kali Linux

Read more

How to create a Shared Folder to exchange files between Kali VM and Windows Host

How to Install Java OpenJDK and Ghidra

Install JDK and Ghidra

Creating Projects and Importing Files

Decompiling Code and Renaming Symbols

Saving and Restoring Virtual Machine Snapshots

Configuring Ghidra to Highlight All Similar Variables Based On Selection

Understanding Command Line Parameters In Depth

Using the knowledge of ASCII Code and Hex Numbers to reverse engineer a crackme.

ASCII Code and Array Indexes

Stepping into functions and adding comments

Tracing Return Values

Importance of doing reverse engineering in a virtual machine.

Installing Java SDK On Wndows

Installing Ghidra, Creating Shortcuts and Changing Icons

Reversing Workflows

Reversing GUI CrackMe's,  Function Graphs, Function Call Trees, WinMain, Search String, Defined Strings.

Converting data types.

Using debuggers to find interesting address to decompile with Ghidra

Creating Functions and Decompiling Assembly

How to run windows exe programs on Linux

Reversing autogen serial crackme

Analyzing autogen serial crackme

Bonus Lecture

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Starts with installing necessary tools like VirtualBox, Java SDK, and Kali Linux, which is helpful for those new to the reverse engineering environment
Covers both Linux and Windows binaries, providing a broader understanding of reverse engineering across different operating systems
Teaches static analysis, which is a core skill for reverse engineers to understand program behavior without executing it
Uses CrackMe challenges, which are designed to test and improve reverse engineering skills in a practical and engaging way
Focuses on Ghidra, a powerful and free reverse engineering tool used by professionals, making it accessible to learners
Covers Windows API, which is essential for understanding how Windows programs interact with the operating system

Save this course

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

Reviews summary

Ghidra fundamentals for beginners

According to learners, this course provides a solid and practical introduction to Reverse Engineering using Ghidra. Students find the content easy to follow and appreciate the focus on hands-on CrackMe challenges on both Linux and Windows. While it's tailored for absolute beginners, some reviewers suggest it could benefit from more advanced topics or expanded content in certain areas. The installation steps are covered, although some users experienced initial setup hurdles. Overall, it's seen as a valuable starting point for anyone new to the field.
Instructor explains complex topics clearly.
"The instructor explains concepts clearly and makes them easy to understand."
"Explanations are very detailed and easy to absorb."
"I found the instructor's approach to explaining difficult topics very helpful."
"Good explanations provided throughout the course."
"The explanations for how to use Ghidra are very clear."
"Instructor makes complex topics simple for new learners."
Practical exercises reinforce learning effectively.
"The CrackMe exercises are really useful for hands-on practice."
"Loved solving the CrackMe challenges, it made learning much more interactive."
"Solving the CrackMe examples helped solidify my understanding greatly."
"I really appreciate the practical side of the course, especially the CrackMe labs."
"The hands-on approach using CrackMes is very effective for learning."
"The exercises were very well chosen and helped me apply what I learned."
Course is excellent for absolute beginners.
"This course is good for someone who is absolutely new to Ghidra and Reverse Engineering."
"Great intro to reversing using Ghidra and the hands on problems helped me a lot."
"As a complete beginner in RE, I found this course incredibly helpful and easy to follow along with."
"Great course for absolute beginners to Ghidra and reverse engineering."
"Good explanations which are easy to grasp for a beginner."
"I found the course great for anyone looking for an intro to Reverse Engineering using Ghidra."
Some wish for deeper or broader topic coverage.
"Could use more in-depth coverage on certain Ghidra features or advanced RE topics."
"I wish there were more examples beyond the basic CrackMes."
"The course is a good start, but feels a bit short; I wanted more content."
"Good foundation, but maybe add sections on reversing more complex binaries?"
"It covers the basics well but doesn't go deep into specific areas."
"Would be great to see some more advanced topics or different types of analysis covered."
Initial installation can be tricky for some.
"Setting up Kali Linux and Ghidra took some troubleshooting for me."
"I struggled a bit with the installation steps in the beginning."
"While the course covers setup, I had some issues getting everything configured correctly."
"Installation part was a bit difficult to follow and get right."
"Had some problems getting the virtual machine and Ghidra running initially."
"Setup steps could be a little more robust for different system configurations."

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: Ghidra For Beginners with these activities:
Review Assembly Language Fundamentals
Solidify your understanding of assembly language to better comprehend disassembled code in Ghidra.
Browse courses on Assembly Language
Show steps
  • Review basic assembly instructions and syntax.
  • Practice reading and interpreting simple assembly code snippets.
  • Understand the relationship between C code and its assembly equivalent.
Study 'Reverse Engineering for Beginners'
Build a strong foundation in reverse engineering principles before diving into Ghidra.
Show steps
  • Read the introductory chapters on reverse engineering concepts.
  • Practice the examples provided in the book using a debugger.
  • Compare the book's explanations with Ghidra's output.
Read 'Practical Reverse Engineering'
Gain a deeper understanding of reverse engineering principles and techniques to enhance your Ghidra skills.
Show steps
  • Read the chapters related to disassembly and decompilation.
  • Study the examples of reverse engineering real-world applications.
  • Experiment with the tools and techniques described in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve CrackMe Challenges
Reinforce your Ghidra skills by tackling a variety of CrackMe challenges with increasing complexity.
Show steps
  • Download CrackMe challenges from online resources.
  • Use Ghidra to disassemble and analyze the CrackMe binaries.
  • Identify the key logic and algorithms used in the CrackMe.
  • Develop a strategy to bypass the protection mechanisms.
Document a Reverse Engineering Project
Solidify your understanding by documenting your reverse engineering process on a specific binary.
Show steps
  • Choose a simple program to reverse engineer.
  • Use Ghidra to analyze the program's functionality.
  • Document your findings, including code snippets and explanations.
  • Share your documentation with others for feedback.
Follow Advanced Ghidra Tutorials
Expand your Ghidra expertise by following advanced tutorials on specific reverse engineering tasks.
Show steps
  • Search for tutorials on topics like malware analysis or vulnerability research.
  • Follow the tutorials step-by-step, experimenting with the techniques.
  • Adapt the tutorials to your own reverse engineering projects.
Contribute to Ghidra Open Source Projects
Deepen your understanding of Ghidra by contributing to its open-source development.
Show steps
  • Explore the Ghidra open-source repositories.
  • Identify areas where you can contribute, such as bug fixes or new features.
  • Submit your contributions to the Ghidra community.

Career center

Learners who complete Reverse Engineering: Ghidra For Beginners will develop knowledge and skills that may be useful to these careers:
Reverse Engineer
The role of a reverse engineer involves dissecting software and hardware to understand its inner workings, often without access to original source code or documentation. A reverse engineer analyzes the structure, functionality, and logic of systems to identify vulnerabilities, understand proprietary technologies, or create compatible products. This course helps you become a reverse engineer by providing hands-on experience with Ghidra, a powerful reverse engineering tool. By learning to disassemble and decompile programs, identify entry points, analyze function graphs, and solve CrackMe challenges, you gain crucial skills needed to excel as a reverse engineer. The course's focus on both Linux and Windows binaries ensures you are well-prepared for real-world scenarios.
Malware Analyst
A malware analyst investigates malicious software to understand its behavior, purpose, and potential impact. They dissect malware samples, identify their functionalities, and develop strategies to detect and mitigate threats. This course is highly beneficial for aspiring malware analysts as it provides the foundational skills needed to analyze and reverse engineer malicious code using Ghidra. You'll learn to disassemble and decompile programs, identify entry points, and analyze function call trees, all of which are essential for understanding how malware operates. This course helps you learn how to analyze both Linux and Windows-based malware, enhancing your ability to tackle a wide range of threats.
Security Researcher
Security researchers investigate software, hardware, and networks to identify vulnerabilities and security flaws. Often, this requires disassembling and decompiling code in order to discover exploits. This course is quite useful for security researchers looking to hone their reverse engineering skills with Ghidra. With the course's lessons on decompiling code, identifying program entry points, analyzing function graphs, and conducting string searches, you will be well on your way to understanding how programs work at a low level. This is crucial for identifying potential vulnerabilities and developing effective security measures. The focus on both Linux and Windows systems covered in this course provides a broad understanding of different operating environments.
Vulnerability Analyst
Vulnerability analysts are responsible for identifying weaknesses in software systems that could be exploited by malicious actors. This often involves reverse engineering to find vulnerabilities. This course helps equip you with the skills needed to analyze programs and discover potential flaws using Ghidra. The course covers essential techniques such as disassembling and decompiling code, identifying entry points, and analyzing function graphs. By gaining proficiency in these areas, you will be able to analyze Linux and Windows binaries and uncover vulnerabilities that might otherwise go unnoticed. This course provides hands-on experience solving CrackMe challenges allows you to apply your knowledge in practical scenarios.
Penetration Tester
Penetration testers simulate cyberattacks to identify vulnerabilities in systems and networks. This course may be useful for penetration testers who want to enhance their reverse engineering skills. While penetration testing often involves higher-level techniques, understanding how software works at a low level can provide valuable insights. With Ghidra, you can learn to disassemble and decompile programs, analyze function graphs, and identify potential weaknesses. This course may allow penetration testers to gain a deeper understanding of the systems they are testing, leading to the discovery of more subtle vulnerabilities. The focus on both Linux and Windows binaries is an added advantage.
Software Developer
While seemingly unrelated, software developers can benefit from reverse engineering skills. Understanding how software works internally can improve debugging skills and help developers write more efficient and secure code. This course helps developers gain insights into the inner workings of software by learning to disassemble and decompile programs, analyze function graphs, and identify entry points using Ghidra. The course's focus on both Linux and Windows binaries allows developers to understand how software behaves on different platforms. By solving CrackMe challenges, developers can hone their problem-solving skills and gain a deeper appreciation for software design.
Security Consultant
Security consultants advise organizations on how to improve their security posture, which may involve reverse engineering. If you are a security consultant looking to better understand their clients' systems, this class may be useful. By learning to disassemble and decompile programs, analyze function graphs, and identify entry points using Ghidra, a security consultant can gain a deeper understanding of the intricacies associated with security. This course may enable security consultants to provide more informed recommendations and develop more effective security strategies. The focus on both Linux and Windows binaries is an added advantage.
Firmware Engineer
Firmware engineers develop and maintain the low-level software that controls hardware devices. This course may be useful for firmware engineers looking to reverse engineer existing firmware or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how firmware works and identify potential vulnerabilities. The skills taught in this course may enable firmware engineers to better understand and modify firmware, leading to improved device functionality and security. The focus on both Linux and Windows binaries is an added advantage.
Digital Forensics Analyst
Digital forensics analysts investigate digital evidence to uncover facts related to cybercrimes or incidents. This course may be useful for digital forensics analyst who wants to use reverse engineering to analyze malware or understand the behavior of suspicious files. By learning to disassemble and decompile programs, identify entry points, and analyze function graphs using Ghidra, they can gain insights into the inner workings of suspect software. This course may allow digital forensics analyst to extract valuable information from digital evidence and build stronger cases. The focus on both Linux and Windows binaries is an added advantage.
Software Quality Assurance Engineer
Software Quality Assurance Engineers (SQA) ensure that software meets certain standards of quality. This course may be useful in helping SQA engineers more deeply understand code. If you are an engineer in this field who wants to expand their knowledge base, this course may be worth looking into. With Ghidra, you can learn to disassemble and decompile programs, analyze function graphs, and identify potential weaknesses. This course may allow engineers to gain a deeper understanding of the systems they are testing, leading to the discovery of more subtle vulnerabilities. The focus on both Linux and Windows systems covered in this course provides SQA engineers with a broad understanding of different operating environments.
Embedded Systems Engineer
Embedded systems engineers design, develop, and test the software and hardware for embedded systems, which are computer systems with a dedicated function within a larger mechanical or electrical system. This course may be useful for this engineer who wants to reverse engineer existing embedded systems or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how software works and identify potential vulnerabilities. The skills taught in this course may enable engineers to better understand and modify systems, leading to improved device functionality and security.
Game Developer
Game developers create video games for computers and consoles. This course may be useful for game developers who want to reverse engineer existing games or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how games work and identify potential vulnerabilities. The skills taught in this course may enable developers to better understand and modify games, leading to improved game functionality and security.
IT Support Specialist
IT support specialists provide technical assistance to computer users and troubleshoot issues with hardware and software. This course may be useful for IT support specialists who want to reverse engineer existing programs or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how programs work and identify potential vulnerabilities. The skills taught in this course may enable IT support specialists to better understand and modify existing programs, leading to more effective troubleshooting and problem-solving.
Technical Writer
Technical writers create documentation for computer software and hardware. This course may be useful for technical writers who want to reverse engineer existing programs or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how programs work and identify potential vulnerabilities. The skills taught in this course may enable technical writers to better understand and document existing programs, leading to more accurate and informative documentation.
Data Scientist
Data scientists analyze and interpret large amounts of data to identify trends and patterns. This course may be useful for data scientists who want to reverse engineer existing programs or analyze third-party components. By learning to disassemble and decompile code, identify entry points, and analyze function graphs using Ghidra, they can gain insights into how programs work and identify potential vulnerabilities. The skills taught in this course may enable data scientists to better understand and analyze existing programs, leading to more effective data analysis and interpretation.

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: Ghidra For Beginners.
Provides a comprehensive guide to reverse engineering techniques, covering x86, x64, and ARM architectures. It delves into Windows kernel reversing and explores various reversing tools, including debuggers and disassemblers. The book also addresses code obfuscation techniques, which are crucial for understanding how malware and other protected software operate. It serves as a valuable reference for understanding the underlying principles of reverse engineering and applying them effectively with Ghidra.
Is an excellent starting point for individuals new to reverse engineering. It covers fundamental concepts, tools, and techniques in a clear and accessible manner. The book provides a solid foundation for understanding assembly language, disassembly, and debugging. It also introduces various reverse engineering tools, including disassemblers and debuggers. While it may not delve into advanced topics, it serves as a valuable resource for building a strong base before diving into more complex materials or tools like Ghidra.

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