Fuzzing

  1. Target Monitoring and Instrumentation
    1. Code Instrumentation
      1. Compiler-Based Instrumentation
        1. LLVM Sanitizers
          1. AddressSanitizer
            1. Detecting Buffer Overflows
              1. Memory Error Detection
              2. MemorySanitizer
                1. Uninitialized Memory Reads
                2. UndefinedBehaviorSanitizer
                  1. Detecting Undefined Behavior
                  2. ThreadSanitizer
                    1. Data Race Detection
                  3. GNU GCC Plugins
                    1. Custom Instrumentation
                      1. Integration with Fuzzers
                    2. Binary-Only Instrumentation
                      1. Dynamic Binary Instrumentation
                        1. Runtime Instrumentation
                          1. Tools and Frameworks
                          2. Static Binary Rewriting
                            1. Modifying Binary Code
                              1. Instrumentation Challenges
                            2. Hardware-Assisted Instrumentation
                              1. Intel PT
                                1. ARM CoreSight
                              2. Crash Detection Mechanisms
                                1. Signal Handlers
                                  1. SIGSEGV
                                    1. SIGILL
                                      1. SIGABRT
                                      2. Processor Exceptions
                                        1. Hardware Exception Handling
                                          1. Platform-Specific Mechanisms
                                          2. Custom Assertions and Checks
                                            1. Application-Level Checks
                                              1. Assertion Failures
                                            2. Code Coverage Analysis
                                              1. Edge Coverage
                                                1. Tracking Control Flow Edges
                                                2. Block Coverage
                                                  1. Basic Block Execution Tracking
                                                  2. Path Coverage
                                                    1. Unique Execution Paths
                                                    2. Function Coverage
                                                      1. Function Entry Points
                                                      2. Role of Coverage in Grey-Box Fuzzing
                                                        1. Feedback-Driven Input Selection
                                                          1. Maximizing Unexplored Paths