Advanced C for Compiler Design and Reverse Engineering

Master advanced C techniques to build compilers and reverse engineer code, equipping you with the skills to analyze, optimize, and secure software systems.

Pointers Revisited: Mastering Memory Management

Unit 1: Pointer Fundamentals and Dynamic Allocation

Unit 2: Memory Management Best Practices

Advanced Pointer Arithmetic and Array Manipulation

Unit 1: Pointer Arithmetic and Arrays

Unit 2: Multi-Dimensional Arrays and Dynamic Arrays

Function Pointers: Dynamic Function Calls

Unit 1: Fundamentals of Function Pointers

Unit 2: Advanced Applications

Pointers to Pointers: Complex Data Structures

Unit 1: Pointers to Pointers and Dynamic Structures

Unit 2: Advanced Memory Management and Applications

Structures and Unions: Data Representation

Unit 1: Structures: Combining Data

Unit 2: Unions and Bit Fields

Bitwise Operations: Low-Level Manipulation

Unit 1: Fundamentals of Bitwise Operations

Unit 2: Advanced Bitwise Techniques and Applications

File I/O: Advanced Techniques

Unit 1: Advanced File I/O Operations

Unit 2: Custom File Formats and System Calls

Preprocessor Directives: Conditional Compilation

Unit 1: Conditional Compilation Directives

Unit 2: Macro Definitions and Advanced Usage

Debugging with GDB: Finding and Fixing Errors

Unit 1: GDB Fundamentals

Unit 2: Advanced Debugging Techniques

Memory Debugging with Valgrind: Detecting Memory Errors

Unit 1: Valgrind Fundamentals and Memcheck

Unit 2: Advanced Valgrind Tools and Techniques

Introduction to Compiler Design: Lexical Analysis

Unit 1: Compiler Phases and Lexical Analysis Fundamentals

Unit 2: Automating Lexical Analysis with Flex

Parsing: Syntax Analysis

Unit 1: Fundamentals of Parsing

Unit 2: Parsing in Practice with Bison

Abstract Syntax Trees (ASTs): Data Structure for Code Representation

Unit 1: AST Design and Implementation

Unit 2: AST Traversal and Optimization

Symbol Tables: Managing Identifiers

Unit 1: Symbol Table Fundamentals

Unit 2: Advanced Symbol Table Concepts

Semantic Analysis: Type Checking and Error Detection

Unit 1: Fundamentals of Semantic Analysis and Type Checking

Unit 2: Implementing Type Checking and Error Handling

Intermediate Code Generation: Translating to a Lower Level

Unit 1: Fundamentals of Intermediate Code

Unit 2: Generating Intermediate Code

Code Optimization: Improving Performance

Unit 1: Foundational Optimization Techniques

Unit 2: Advanced Optimization Strategies

Code Generation: Generating Machine Code

Unit 1: Machine Code Generation Fundamentals

Unit 2: Advanced Code Generation Techniques

Reverse Engineering: Introduction and Tools

Unit 1: Reverse Engineering Fundamentals

Unit 2: Tools of the Trade

Static Analysis: Analyzing Code Without Execution

Unit 1: Fundamentals of Static Analysis

Unit 2: Advanced Static Analysis Techniques

Dynamic Analysis: Analyzing Code During Execution

Unit 1: Fundamentals of Dynamic Analysis

Unit 2: Advanced Dynamic Analysis Techniques

Vulnerability Analysis: Identifying Security Flaws

Unit 1: Common C Vulnerabilities

Unit 2: Finding and Mitigating Flaws

Control Flow Graphs (CFGs): Visualizing Program Execution

Unit 1: Understanding and Generating Control Flow Graphs

Unit 2: Analyzing CFGs for Vulnerabilities

Decompilation: Converting Machine Code to C Code

Unit 1: Fundamentals of Decompilation

Unit 2: Practical Decompilation and Analysis