Introduction to Reverse Engineering: How to Take a Program Apart
I walk through how I examine the assembly code and memory management behind a compiled C++ application using Ghidra and IDA Pro.
- Reverse Engineering
- Ghidra
- Assembly
Blog
In-depth writing on systems architecture, reverse engineering and the beautiful chaos of software development.
I walk through how I examine the assembly code and memory management behind a compiled C++ application using Ghidra and IDA Pro.
I’m not talking about memorising formulas, but about developing the analytical muscle. I believe mathematics is what separates a good developer from a mere code writer.
From memory management to compiler philosophy, as someone who uses both daily, I explain where Rust and C++ diverge.
How I find a vulnerability in a binary without source code, and why I still learn to manually apply patches.
From mobile devices to servers, I explore how these two architectures differ in their instruction sets, register structures, and design philosophies.
How to make the right architectural decisions in large-scale projects. I explain the fundamental rules for making systems modular, resilient, and high-performing.
Unlike Java or React Native apps, Flutter binaries resist standard static analysis. I explore Dart's AOT compilation, custom object layouts, and why traditional tools like IDA and Ghidra fail out of the box.
DLL injection is often viewed as dark magic. I break down the Win32 API calls required to force a foreign process to load your arbitrary code.
Software engineering suffers from an identity crisis. I discuss why adopting principles from mechanical and civil engineering builds more resilient software architects.