# 1-Month Integrated C & Reverse Engineering Course Welcome to your intensive 1-month journey into the heart of software. This course is designed to teach you **C programming** and **Reverse Engineering (RE)** simultaneously by following a "Build and Break" philosophy. ## 🎯 Goal By the end of this month, you will not only be able to write robust C programs but also understand how they are transformed into machine code and how to analyze binaries without access to their source code. ## 🛠 Prerequisites & Tools We will be using a Linux-based environment (x64 architecture). Ensure the following tools are installed: - **Compiler:** `gcc` - **Debugger:** `gdb` (highly recommended to install [GEF](https://github.com/hugsy/gef) or [Peda](https://github.com/longld/peda)) - **Static Analysis:** [Ghidra](https://ghidra-sre.org/) - **Binary Utilities:** `objdump`, `nm`, `strings`, `readelf` --- ## 📅 Curriculum Overview ### **Week 1: The Building Blocks (Variables & Memory)** * **Focus:** How data is stored. * **C:** Data types, variables, scopes, and basic arithmetic. * **RE:** CPU Registers, the Stack, and Memory Addressing. * **Task:** Write a math program and watch variables move through registers in GDB. ### **Week 2: Control Flow & Logic** * **Focus:** How decisions are made. * **C:** `if/else`, `for/while` loops, and `switch` statements. * **RE:** Jumps, Flags, and Branching logic in Assembly. * **Task:** Build a password validator and bypass it by patching the binary. ### **Week 3: Functions & Memory Management** * **Focus:** How programs are structured. * **C:** Functions, Pointers, Arrays, and Memory Allocation. * **RE:** Calling conventions, Stack Frames, and Pointer arithmetic. * **Task:** Create a sorting algorithm and trace the memory layout during execution. ### **Week 4: Data Structures & Vulnerabilities** * **Focus:** How complex systems work and fail. * **C:** Structs, Unions, and Dynamic Memory. * **RE:** Heap analysis and identifying security vulnerabilities. * **Task:** Build a small database and exploit a controlled buffer overflow. --- ## 🔄 Daily Workflow For every topic, we will follow this exact pattern: 1. **The Lesson:** A conceptual deep-dive into a C concept and its RE counterpart. 2. **3 Exercises:** Hands-on challenges where you write the code and analyze the binary. 3. **The Correction:** We review your implementation and deconstruct the assembly together. 4. **Documentation:** We generate a topic-specific `README.md` and a set of **Anki Cards** to ensure long-term retention. --- ## 🚀 Getting Started To begin, create your first program in the `week1/` directory: ```bash mkdir -p week1/day1 touch week1/day1/hello.c ``` Refer to the `plans/1-month-c-re-integrated.md` for the full detailed schedule.