
Software Reverse Engineering Course
Master the full reverse engineering workflow — from reading raw assembly to defeating obfuscation and uncovering real vulnerabilities. This course gives you the technical depth to analyse any compiled binary on Windows, Linux, or macOS. Whether you are targeting malware, firmware, or closed-source software, you will leave with skills the industry actually demands.
What you will learn:
You will build a solid foundation in x86 and x86-64 assembly, binary file formats, and CPU architecture before moving into hands-on static and dynamic analysis. You will use industry-standard disassemblers, debuggers, and decompilers to reverse real binaries and recover high-level program logic. The course covers obfuscation techniques, packer analysis, and anti-debugging bypasses so that hardened targets do not stop you. You will also apply reverse engineering directly to vulnerability research, identifying memory corruption bugs, authentication flaws, and weak cryptography. Advanced modules introduce symbolic execution, binary diffing, dynamic instrumentation, and automation workflows for large-scale analysis.
How you study in a practical way Software Reverse Engineering Course
How you practise Software Reverse Engineering Course
For companies looking to train their teams
With Dedika for businesses, the course includes exercises and examples tailored to your own business and the way your company needs.
Course content
8 Chapters • 40 LessonsDuration between 4 and 360 hours (you decide)
Chapter 1HideHide detailsSee detailsFoundations of Reverse Engineering
Foundations of Reverse Engineering
Lesson 1 • Setting Up the RE Lab
Guides students through building an isolated analysis environment with virtual machines and essential tooling. Ensures a safe, reproducible workspace for all exercises.
Lesson 2 • Legal and Ethical Boundaries
Covers authorisation requirements, responsible disclosure norms, and ethical conduct. Grounds students in professional standards before hands-on work begins.
Lesson 3 • What Is Reverse Engineering
Defines reverse engineering, its goals, and its role in security research and software analysis. Establishes vocabulary used throughout the course.
Lesson 4 • Computer Architecture Essentials
Reviews CPU registers, memory layout, and the fetch-decode-execute cycle. Provides the hardware mental model required to interpret disassembled code.
Lesson 5 • Binary File Formats Overview
Introduces PE, ELF, and Mach-O structures and how loaders map them into memory. Connects file-format knowledge to later disassembly and patching tasks.
Chapter 2HideHide detailsSee detailsAssembly Language for Reverse Engineers
Assembly Language for Reverse Engineers
Lesson 1 • x86-64 Differences and Extensions
Highlights register expansion, RIP-relative addressing, and SIMD basics in 64-bit mode. Prepares students for modern 64-bit binaries encountered in practice.
Lesson 2 • x86 Instruction Set Fundamentals
Covers data-movement, arithmetic, and logical instructions with annotated examples. Forms the reading vocabulary needed for all disassembly work ahead.
Lesson 3 • The Stack and Calling Conventions
Details how functions pass arguments, preserve registers, and return values across major calling conventions. Critical for understanding decompiled output accurately.
Lesson 4 • Control Flow Instructions
Explains conditional and unconditional jumps, loops, and CALL/RET mechanics. Students learn to reconstruct program logic from raw instruction sequences.
Lesson 5 • Recognising High-Level Constructs
Maps assembly patterns back to C-level constructs such as if-else, loops, and structs. Accelerates analysis by letting students read intent rather than raw opcodes.
Chapter 3HideHide detailsSee detailsStatic Analysis Techniques
Static Analysis Techniques
Lesson 1 • Annotating and Renaming Symbols
Covers systematic renaming of functions, variables, and data structures to build a readable model. Directly improves analysis speed and reduces cognitive load.
Lesson 2 • Navigating Code Graphs
Teaches use of control-flow graphs, call graphs, and cross-references to orient analysis. Enables efficient navigation of large, unfamiliar codebases.
Lesson 3 • String and Import Analysis
Extracts meaningful strings, imported APIs, and library signatures to infer program behaviour. Provides rapid triage before deep code analysis begins.
Lesson 4 • Scripting Static Analysis Tasks
Introduces automation of repetitive static tasks using disassembler scripting APIs. Students write scripts that rename, annotate, and extract data at scale.
Lesson 5 • Disassemblers and Their Internals
Compares linear sweep and recursive descent disassembly algorithms and their trade-offs. Students choose the right tool mode for each analysis scenario.
Chapter 4HideHide detailsSee detailsDynamic Analysis and Debugging
Dynamic Analysis and Debugging
Lesson 1 • Anti-Debug Detection and Bypass
Identifies common anti-debugging tricks and demonstrates reliable bypass methods. Prepares students for hardened targets encountered in real-world analysis.
Lesson 2 • Tracing and Logging Execution
Uses instruction-level tracing and API logging to capture full execution histories. Complements breakpoint analysis for non-deterministic or multi-threaded targets.
Lesson 3 • Debugger Architecture and Concepts
Explains how debuggers attach to processes, handle exceptions, and control execution. Provides the conceptual model needed to use any debugger effectively.
Lesson 4 • Inspecting Program State
Teaches reading registers, memory, and the call stack at runtime to verify static findings. Students correlate live state with disassembly to confirm code behaviour.
Lesson 5 • Breakpoint Strategies
Covers conditional, hardware, and memory-access breakpoints for targeted analysis. Efficient breakpoint placement reduces time-to-insight on complex targets.
Chapter 5HideHide detailsSee detailsDecompilation and Code Recovery
Decompilation and Code Recovery
Lesson 1 • Handling Compiler Optimizations
Identifies inlining, loop unrolling, and strength reduction artefacts in decompiled output. Students learn to mentally undo optimisations to recover original logic.
Lesson 2 • Recovering Data Structures
Reconstructs structs, unions, and class layouts from access patterns in decompiled code. Accurate structure recovery is essential for understanding object-oriented targets.
Lesson 3 • Decompiling Object-Oriented Code
Addresses C++ name mangling, virtual dispatch, and RTTI to recover class hierarchies. Extends decompilation skills to the majority of modern compiled software.
Lesson 4 • How Decompilers Work
Explains lifting to intermediate representation, type recovery, and pseudocode generation. Sets accurate expectations for decompiler output quality and limitations.
Lesson 5 • Working with Decompiler Output
Teaches reading, correcting, and annotating decompiler pseudocode to produce accurate models. Students reconcile decompiler errors against disassembly ground truth.
Chapter 6HideHide detailsSee detailsObfuscation and Anti-Analysis Techniques
Obfuscation and Anti-Analysis Techniques
Lesson 1 • Virtualization-Based Obfuscation
Introduces custom VM protectors, bytecode dispatch loops, and handler identification. Students develop a methodology for partially reversing VM-protected code.
Lesson 2 • String and Data Obfuscation
Covers XOR encoding, stack-based string construction, and custom decryption routines. Students extract plaintext strings from obfuscated samples automatically and manually.
Lesson 3 • Automated Deobfuscation Approaches
Applies symbolic execution and taint analysis to automate deobfuscation at scale. Bridges manual techniques with tool-assisted workflows for complex targets.
Lesson 4 • Code Obfuscation Taxonomy
Catalogues junk insertion, opaque predicates, control-flow flattening, and substitution. Gives students a classification framework for identifying obfuscation on sight.
Lesson 5 • Packers and Protectors
Explains runtime unpacking stubs, import reconstruction, and memory dumping workflows. Students recover the original executable from packed or protected samples.
Chapter 7HideHide detailsSee detailsVulnerability Discovery Through RE
Vulnerability Discovery Through RE
Lesson 1 • Fuzzing Integration with RE Findings
Uses RE-derived knowledge to build targeted fuzzing harnesses and seed corpora. Combines static insight with dynamic fuzzing to maximise vulnerability discovery.
Lesson 2 • Cryptographic Weakness Identification
Recognises weak algorithms, improper key handling, and custom crypto through static analysis. Students assess cryptographic security without access to source code.
Lesson 3 • Logic and Authentication Flaws
Locates authentication bypasses, improper state transitions, and race conditions through code review. Demonstrates how logic errors are as dangerous as memory bugs.
Lesson 4 • Documenting and Reporting Vulnerabilities
Structures vulnerability reports with reproduction steps, root-cause analysis, and impact ratings. Produces professional deliverables suitable for responsible disclosure.
Lesson 5 • Memory Corruption Vulnerability Patterns
Identifies buffer overflows, use-after-free, and integer overflow patterns in disassembly. Connects low-level code patterns to their security impact.
Chapter 8HideHide detailsSee detailsAdvanced RE Workflows and Automation
Advanced RE Workflows and Automation
Lesson 1 • Designing a Structured RE Methodology
Establishes a repeatable triage-to-deep-dive workflow for unknown binaries. Reduces wasted effort and ensures consistent coverage across large targets.
Lesson 2 • Symbolic and Concolic Execution
Applies constraint solving to explore execution paths and generate targeted inputs automatically. Extends manual analysis to path-coverage problems too large for manual review.
Lesson 3 • Binary Diffing and Patch Analysis
Compares binary versions to isolate patched functions and infer fixed vulnerabilities. Essential for patch-gap analysis and regression security testing.
Lesson 4 • Dynamic Instrumentation Frameworks
Uses dynamic binary instrumentation to insert analysis logic at runtime without source. Enables coverage measurement, taint tracking, and custom tracing at scale.
Lesson 5 • Building Reusable RE Tooling
Designs modular scripts, plugins, and pipelines that persist beyond a single engagement. Students produce shareable tools that accelerate future analysis work.
Your valid completion certificate
This course is for you:
Penetration tester: wants to move beyond automated scanners into binary-level work.
Computer science graduate: ready to bridge academic knowledge and real-world security practice.
Malware analyst: needs structured methodology to dissect unfamiliar samples confidently.
CTF competitor: serious about cracking reverse engineering challenges at higher difficulty tiers.
Embedded systems developer: curious about the security posture of their own compiled firmware.
Career changer: transitioning from IT support into offensive security or vulnerability research.
What our students say
Your classes are perfect. I purchased the one-year package and finally have the opportunity to follow various topics of my interest without needing to change platforms... I thank you for everything you do, I've already recommended you to other people...

I like how the lessons are straight to the point and how I can change chapters and skip content that I don't need.

I like the content and the way of presentation and video transcription, which speeds up the process!

The platform is fast, simple to use. The diversity of content and complementary videos help a lot in learning.

Top qualifications
FAQs
Who is Dedika?
Is the certificate valid in India?
Are the courses free?
What is the course workload?
What are the courses like?
How do the courses work?
What is the duration of the courses?
What is the cost or price of the courses?
What is an EAD or online course and how does it work?
PDF Course




















