Metalware automatically identifies and records defects during each fuzzing run. A defect is defined as either:
- A Crash: Caused by malformed or unexpected input.
- A Memory Violation: Detected by Havoc’s built-in memory sanitizer.
Each defect is logged and can be further examined through three key actions: View, Graph and Trace.
1. Viewing Defects
After a fuzzing run, you can review defects by navigating to the defects section:
Key Features:
- Automatic Classification:
Havoc attempts to automatically classify each defect based on the collected trace data.
- Chronological Stack Traces:
For every defect, Havoc displays a chronological series of events with corresponding stack traces that led to the crash. This detailed view helps you understand the sequence of operations that triggered the issue.
2. Graphing the execution
You can graph the execution of the input that led to the defect by selecting
Graphing Executions.
Graph
. For more details see 3. Downloading the Program Trace
For a deeper analysis, you can download a complete program trace by selecting the Trace option:
A trace provides a unified, detailed view of everything that occurred during the program execution, including:
- Instruction Flow:
A sequential listing of executed instructions, organized into functions and basic blocks.
- Register Activity:
Information on which registers are written to at each instruction.
- Memory Operations:
Detailed records of memory reads and writes associated with each instruction.
Why Use a Trace?
A complete program trace is invaluable for in-depth analysis, helping you pinpoint why a defect occurred and enabling you to trace the exact sequence of operations that led to a failure.