This repository is a complete, meticulously commented disassembly of PokΓ©mon Red and Blue for the Game Boy, reproducing exact ROM images via the RGBDS toolchain. The codebase is organized into engine logic, map scripts, data tables, audio, graphics, and a suite of custom C-based build tools. It serves as the authoritative reference for research, modding, and preservation. The architecture mirrors the original bank-switched ROM layout, with a rich macro library that abstracts low-level hardware details into readable, maintainable assembly. The project demonstrates exceptional craftsmanship in reverse engineering and game preservation, offering reusable components such as a sprite compression library, a predef dispatch system, and a flag/event framework that can be extracted for other Game Boy projects.
Capstone is a multi-architecture disassembly engine written in C, derived from LLVM's MC disassembler. It supports over 20 architectures including x86, ARM, AArch64, MIPS, PowerPC, RISC-V, and more. The core library provides a stable C API (cs_open, cs_disasm, cs_option, etc.) and includes per-architecture backends with mapping, disassembler, and instruction printer modules. The architecture is modular: each architecture has a Module.c that registers callbacks into a common cs_struct. The primary data flow is: user provides raw bytes and arch/mode, the engine selects the appropriate disassembler, decodes instructions into MCInst, then prints via instruction printer, optionally filling cs_detail with operand/register/group information. The repository also includes a CLI tool (cstool), extensive test suites (MC regression tests, cstest YAML-based detail tests), fuzzing harnesses, and an automated LLVM sync pipeline (auto-sync) that translates LLVM C++ disassembler code to C using tree-sitter patches. The codebase is well-structured with clean abstractions for operand models (MCInst/MCOperand), string output (SStream), and architecture-specific mapping. The auto-sync tooling is a notable engineering achievement, enabling systematic translation of LLVM backend code to C. Language bindings for Python, Java, OCaml, and others demonstrate the library's embeddability. The test infrastructure is comprehensive, covering both basic disassembly and detailed operand/register analysis. External dependencies are minimal for the core library (pure C), but the auto-sync tooling depends on Python, tree-sitter, clang-format, and lit. Overall, Capstone is a mature, actively maintained disassembly framework with high craftsmanship and reusable components.
The Witchcraft Compiler Collection (WCC) is a binary analysis and modification toolkit focused on ELF executables. It provides three primary tools: wld converts executables to shared libraries, wcc 'unlinks' binaries into relocatable objects, and wsh offers an interactive Lua-scriptable shell for runtime binary inspection and modification. The architecture is modular with shared utilities, leveraging BFD for binary format abstraction, Capstone for disassembly, and Lua/JIT for extensibility. Key capabilities include section/header manipulation, symbol table management, relocation processing, and cross-architecture analysis via Qemu user-mode emulation. WCC demonstrates strong craftsmanship in its Lua-C API extension patterns, sophisticated ELF handling, and modular tool design. The wsh tool's Lua integration exposes binary analysis functions (memory access, symbol lookup, section iteration) through a clean C extension interface. The wld tool implements robust ELF section/header manipulation and relocation processing with careful attention to binary format details. The disassembler wrapper in disasm.c provides multi-architecture support while maintaining integration with WCC's data structures. These components show non-obvious skill in binary manipulation and language embedding. The project shows active maintenance with commits up to 2026 and updated copyright notices. Technical drift is low due to recent updates and compatibility with modern dependencies (Lua 5.3, Capstone). While focused on Linux/ELF and primarily x86_64, the code maintains portability through conditional compilation and abstracted binary handling. The build system uses Makefiles with git submodules for dependency management, and the MIT-licensed codebase includes comprehensive documentation and demonstration materials for security research use cases.
Ghidra is a software reverse engineering (SRE) framework developed by the NSA. It provides a full-featured desktop application for analyzing compiled binaries, supporting disassembly, decompilation, debugging, and scripting across multiple architectures (x86, ARM, MIPS, PowerPC, RISC-V, etc.). The system is modular, built on a plugin architecture with services, actions, and extension points discovered at runtime. Key entry points include the GUI launcher (ghidra.Ghidra) and headless mode (ghidra.GhidraRun), as well as a Gradle build system for extension development. The debugger integrates with GDB, LLDB, dbgeng, drgn, and x64dbg via a Trace RMI protocol, and includes a p-code emulator and JIT compiler. Ghidra also offers binary similarity search (BSim), version tracking, and a rich API for scripting in Java, Python, and Jython. External dependencies include Java 17, Gradle, and optional third-party tools for PDB and DWARF processing.
RetDec is a retargetable machine-code decompiler based on LLVM, designed to convert binary executables (supporting ELF, PE, Mach-O, COFF, Intel HEX, and raw machine code) into high-level code (primarily C-like) and perform various analyses. The architecture is modular, consisting of stages: binary loading and format detection, conversion to LLVM IR, optimization and analysis on the IR, lifting to a high-level intermediate representation, and finally generation of readable code or other outputs (like JSON, debug information, etc.). Key entry points include the command-line tools `retdec-decompiler`, `retdec-fileinfo`, and `retdec-unpacker`, as well as a library interface for integration into other tools. The project demonstrates strong software engineering practices with a clear separation of concerns, extensive use of design patterns (such as visitor, factory, and smart pointers), and a focus on reusability. Notable reusable components include a thread-safe smart pointer implementation with weak pointer support and a comprehensive C type system that enables type-safe representation and manipulation of C language constructs. These components are sufficiently isolated to be extracted and used in other projects with minimal modification. Despite its strengths, the repository shows signs of technical drift due to delayed dependency updates and operates under a limited maintenance mode where issue responses may be delayed and only critical fixes are prioritized. However, the core functionality remains robust and well-tested, making it a reliable tool for reverse engineering tasks.