Foundations Of Reverse Engineering
In this foundational course you dive into the fundamentals of computer systems and the principles on which software is designed and executed on computers. With this knowledge you are introduced to the toolchain used to reverse engineer binary applications. The theoretical material in this course opens up a lot of doors for you in the world of software security, and you will be capable of utilizing this in other disciplines in software security as well.
Skills and concepts you will learn
x86-64
Assembly Language
Assembly instructions
Debuggers
Linux debugging
Windows debugging
Disassemblers
Ghidra
Binary analysis
Bits and bytes
Hexademical
Hex-viewers
Programs represented as data
Applied Source Code Fuzzing
This technique is gaining massive popularity in the security community for one simple reason: Fuzzing has proven itself to be very effective in discovering bugs and vulnerabilities in software systems. In this course you will not only learn to use the technique, but you will be introduced to the latest methods as well. Having finished this course, you will be able to start finding bugs using fuzzing and go deeper into the topic all on your own.
Skills and concepts you will learn
LibFuzzer
Sanitizers
Coverage-guided fuzzing
Mutation-based fuzzing
Generational fuzzing
In-memory fuzzing
Instrumentation
Coverage visualisation
Structure-aware fuzzing
Grammar-based fuzzing
Chromium-fuzzing
Real-world fuzzing
Vulnerability analysis
Memory corruption
Vulnerability analysis
Understanding Code Injections From Beginner To Advanced
Code injection is a technique that is becoming increasingly prevalent in attacks and data breaches. Both malware writers and dedicated penetration teams rely on these techniques to bypass defenses and achieve persistence. This course gives a comprehensive coverage of code injection techniques and will teach the student how to analyse, reverse engineer and write applications that use code injections. As such, this course is focused on both defensive and offensive techniques as well as development and code analysis.
Skills and concepts you will learn
Process injection
evasion
full-system propagation
AV-bypass
Code-reuse attacks
ROP
Reverse engineering
Malware unpacking
Import table destruction
Dynamic analysis
End-point protection
Red-teaming
LLVM In-Depth For Security Engineering And Program Analysis
LLVM is a collection of modules and software packages for program analysis and compiler technologies that is used to write security-aware compilers, sophisticated fuzzers, large-scale vulnerability discovery techniques, symbolic executors and much more. This course is centred around two core parts. First, it will cover the internals of LLVM and how to write applications that use LLVM to solve program analysis problems. Second, it will introduce the student to several important open-source security tools that use LLVM and are already deployed by many enterprises.
Skills and concepts you will learn
Clang
Program transformation
Full-system propagation
Abstract-syntax tree
Intermediate-representation
LLVM IR
Exploit mitigation
Software hardening
Software analysis
Program analysis
Automating RE With Outside-The-Box Full-System Dynamic Analysis
This is an advanced course that teaches the student how to automate reverse engineering tasks using full-system analysis by way of emulation. This course teaches powerful techniques that are at the forefront of security research and is relevant for all domains in software analysis, e.g. malware analysis, reverse engineering, vulnerability discovery, root-cause analysis and much more.
Skills and concepts you will learn
Full-system emulation
Reverse engineering
Malware analysis
Root-cause analysis
Record-and-replay
QEMU
PANDA
Dynamic taint analysis
Intermediate representations
Program analysis
Dynamic analysis
Static analysis