Overview & How to Use
Each stage below contains: Goals, Topics, Checklists, and Signposted resources (books and websites). Use the built‑in HTML <details> toggles to expand what you need. No styling or scripts required.
Rule of thumb for ethical hackers: Learn C for deep exploit literacy; add systems programming APIs; practice secure coding; then study exploitation and kernel/device topics.
Progress tracker: use the checkboxes—your browser may not save state. For persistence, copy this file into your own repo and commit your progress notes.
Stage 0 — Orientation & First Steps
Difficulty:
Goals
- Get a working C toolchain (compiler, debugger).
- Learn core syntax and basic I/O.
- Compile, run, and iterate comfortably from the terminal.
Topics
- Variables, types, operators
- Control flow:
if,switch, loops - Functions & headers; compilation and linking
- Console and file I/O
Checklist
Signposting: Books & Free Resources
Stage 1 — Core C Programming
Difficulty:
Goals
- Develop fluency with pointers, arrays, and strings.
- Understand dynamic memory management.
- Learn the preprocessor and build basics.
Topics
- Pointers & pointer arithmetic; arrays & strings
- Dynamic memory:
malloc,calloc,free - Structs & unions
- Preprocessor:
#define, macros - Build systems: Makefiles
Checklist
Signposting: Books & Free Resources
Stage 2 — Systems Programming (UNIX/Linux APIs)
Difficulty:
Goals
- Learn the POSIX/Linux system call interface.
- Write concurrent and networked programs.
- Use tracing tools to understand program behavior.
Topics
- Filesystem syscalls:
open,read,write,lseek - Processes:
fork,exec,wait - Signals; pipes; pthreads
- Networking: sockets (
TCP,UDP, raw) - Observability:
strace,ltrace(where available)
Checklist
Signposting: Books & Free Resources
Stage 3 — Secure Coding & Memory Safety
Difficulty:
Goals
- Write C that avoids common vulnerability classes.
- Recognize and refactor insecure patterns.
- Use sanitizers and static analysis tools effectively.
Topics
- Bounds checking; buffer overflows; lifetime management
- Integer overflows/underflows
- Format string vulnerabilities
- Use‑after‑free, double free, and dangling pointers
- Undefined behavior (per the C standard)
- Static & dynamic analysis:
clang-tidy,cppcheck, ASan
Checklist
Signposting: Books & Free Resources
Stage 4 — Exploit Development & Reverse Engineering
Difficulty:
Goals
- Understand how C bugs become exploits.
- Use debuggers and disassemblers to analyze binaries.
- Practice exploit patterns safely in lab environments.
Topics
- Calling conventions; stack frames; x86/x86_64 basics
- Stack overflows; shellcode; ROP
- Format string exploits
- Heap exploitation: overflow, UAF, double free
- Race conditions (TOCTOU)
Checklist
Signposting: Books, Labs & Courses
Stage 5 — Advanced / Specialist Areas
Difficulty:
Goals
- Explore kernel, drivers, and embedded targets.
- Adopt modern safe instrumentation (eBPF).
- Integrate C with other languages (FFI) for workflows.
Topics
- Linux kernel modules; character devices;
ioctlinterfaces - eBPF basics and userspace interaction
- Embedded/firmware C (resource constraints, safety)
- Inline assembly; calling conventions
- Foreign Function Interfaces (C ↔ Python/Go/Rust)
Checklist
Signposting: Books & Docs
Essential Tools (Install & Learn)
- GCC / Clang — compilers
- GDB — debugger
- Valgrind — memory debugging
- AddressSanitizer — runtime sanitizer
- GNU Make / CMake — build systems
- strace — syscall tracing
Suggested Timeline
- Weeks 1–4: Stage 0–1 (syntax, pointers, memory)
- Weeks 5–8: Stage 2 (Unix APIs, sockets, threads)
- Weeks 9–12: Stage 3 (secure coding, sanitizers, analysis)
- Weeks 13–16: Stage 4 (exploit labs, reversing)
- Months 5–6+: Stage 5 (kernel, eBPF, embedded, FFI)
Key Books & Links (Signposting)
- K. N. King — C Programming: A Modern Approach (2e)
- Kernighan & Ritchie — The C Programming Language (2e)
- Michael Kerrisk — The Linux Programming Interface
- Stevens & Rago — Advanced Programming in the UNIX Environment
- SEI CERT — C Secure Coding Standard
- Peter van der Linden — Expert C Programming
- Jon Erickson — Hacking: The Art of Exploitation
- Practical Binary Analysis — No Starch Press
- Exploit Education — Labs
- pwn.college — Course
- CTFtime — Events
- Linux Device Drivers (LDD3) — Free online
- Linux Kernel Development — Reference
- eBPF (kernel docs) — Docs
- Shacham (2007) — ROP paper (PDF)
Appendix: Setup & Commands
Install toolchain
- Linux: typically
sudo apt install build-essential gdb valgrind - macOS:
xcode-select --install(then consider Homebrew GCC/LLVM)
Compile & run
# compile
cc -Wall -Wextra -O2 hello.c -o hello
# run
./hello
Sanitizers
cc -g -fsanitize=address,undefined -fno-omit-frame-pointer app.c -o app
Debugging
gdb ./app
(gdb) break main
(gdb) run
(gdb) bt # backtrace
Legal & ethics: Use these materials responsibly, on targets you own or have explicit permission to test. Follow applicable laws and professional codes.