Technique Reverse
My reverse engineering notes, written as a series. It starts with the basics (assembly, PE/ELF, tools), then goes through each language, then packers, anti-debug, hooking and malware.
For learning, CTFs, crackmes and software you own or are allowed to analyse.
Resources
The series
Part 00 · Getting Started
| # | Lesson |
|---|---|
| 0.1 | What is reverse engineering |
| 0.2 | Legal and ethics |
| 0.3 | Setting up a safe lab |
| 0.4 | The reverse engineering workflow |
Part 01 · Computer Fundamentals for RE
Part 02 · The Toolkit
Part 03 · C
Part 04 · C++
Part 05 · C# and .NET
Part 06 · Java, Kotlin and Android
Part 07 · Python
Part 08 · Go
| # | Lesson |
|---|---|
| 8.1 | What Go binaries look like |
| 8.2 | Recovering function names and types in Go binaries |
| 8.3 | Go’s string, slice, interface and goroutine in assembly |
| 8.4 | Lab, solving a Go crackme |
Part 09 · Rust
| # | Lesson |
|---|---|
| 9.1 | What Rust binaries look like |
| 9.2 | Rust’s String, Vec, iterators and trait objects |
| 9.3 | Rust crackme lab |
Part 10 · Legacy: Delphi, VB6, AutoIt, AHK
Part 11 · JavaScript, Electron, WebAssembly
| # | Lesson |
|---|---|
| 11.1 | Deobfuscating JavaScript |
| 11.2 | Dissecting an Electron app |
| 11.3 | WebAssembly |
Part 12 · Swift and Objective-C
| # | Lesson |
|---|---|
| 12.1 | Objective-C and objc_msgSend |
| 12.2 | Swift reverse engineering |
| 12.3 | Reversing an iOS app from the IPA file |
Part 13 · Games: Unity, Unreal, Lua
| # | Lesson |
|---|---|
| 13.1 | Unity with the Mono backend |
| 13.2 | Unity IL2CPP |
| 13.3 | Reversing Unreal Engine games |
| 13.4 | Lua and LuaJIT bytecode |
| 13.5 | Cheat Engine and runtime memory |
Part 14 · Packers and Obfuscation
Part 15 · Anti-Reversing and Bypasses
Part 16 · Crypto and Algorithms
Part 17 · Patching, Hooking, Injection
Part 18 · Advanced Topics
Part 19 · Malware Analysis Basics
| # | Lesson |
|---|---|
| 19.1 | A safe malware analysis workflow |
| 19.2 | IOC, YARA, capa and Sigma |
| 19.3 | Analyzing maldocs and loaders |
| 19.4 | Extracting config and C2 |