C-Lang
0x18 The PreprocessorPreprocessor directives: macros, conditional compilation, and #pragma pack — and what each leaves behind in the binary.
0x17 Bit Fields, Unions, and EnumsBit fields, unions, and enums — three daily tools for reading binaries, each with clear patterns in assembly.
0x16 StructuresStructs, typedef, and the arrow operator, padding and alignment — and how a struct becomes an offset map during analysis.
0x15 Data ModifiersSign, size, and storage modifiers (signed/short/static), and two's complement representation of negative numbers.
0x14 Functions — Part TwoVariable scope, header files, static, and recursion — with a complete step-by-step trace of the stack frame.
0x13 Passing by Value vs by ReferenceValue vs reference passing fully traced in x86-64 assembly — the golden rule for telling mov apart from lea.
0x12 Dynamic Memory Allocationmalloc, calloc, realloc, bins, and tcache — and the misuse vulnerabilities: heap overflow, UAF, and double free.
0x11 Virtual Memory: Stack vs HeapStack frames, registers, and calling conventions, plus heap chunks — the two primary battlegrounds of exploitation.
0x10 Bitwise OperatorsBitwise operators and increment/decrement — the shared language between C and assembly, including XOR decryption patterns.
0x09 Pointers and Memory ManagementPointer types, address arithmetic, and the five memory segments — plus where pointers meet famous vulnerabilities.
0x08 FunctionsFunction types, the memory and I/O functions that matter to analysts, plus prologue/epilogue structure and calling conventions.
0x07 Arrays and StringsArrays and strings in memory, the dangerous string.h functions, and their direct relationship to buffer overflow vulnerabilities.
0x06 Loopswhile, do-while, for, and nested loops — and the fingerprint that gives a loop away in assembly: the backward jump.
0x05 Conditional Statementsif/else, switch, and the ternary operator — and how they become cmp instructions, conditional jumps, and jump tables in disassembly.
0x04 Escape SequencesEscape sequences and the null terminator (0x00): how strings are actually stored, and why strings inside binaries end with zero.
0x03 Data Types and Format SpecifiersData types and their real sizes on x86/x64, plus printf/scanf format specifiers — mapped to operand sizes in assembly.
0x02 Variables and ConstantsDeclaring variables and naming rules, constants via const and #define, and the fundamental difference between them at compile time and in memory.
0x01 Program StructureThe basic anatomy of a C program: includes, main, comments, global variables, and functions — and what each part leaves in the binary.
0x00 The Stages Code Goes ThroughThe four stages that turn C code into an executable — preprocessor, compiler, assembler, linker — and how each one shapes the binary.
0x4 Recognizing C Code Constructs in AssemblyHow C constructs - variables, loops, conditionals, switches, arrays, structs and linked lists - look in assembly.
0x2 Fundamentals of Reverse EngineeringCurated references for building your reverse engineering fundamentals.