- Introduction
- 1. Setting Up
- 1.1. Using Docker
- 1.2. For Linux
- 1.3. For Windows
- 2. Configuration
- 2.1. Installing in Projects
- 2.2. Loading The TSFFS Module
- 2.3. Common Options
- 3. Harnessing Fuzzing Targets
- 3.1. Using a Compiled-in Harness
- 3.2. Using Closed-Box Testcase Injection
- 3.3. Using Testcase Data Manually
- 4. Running A Fuzzing Campaign
- 4.1. Checking Target Software Compatibility
- 4.2. Choosing A Harnessing Method
- 4.3. Running the Fuzzer
- 4.4. Optimizing For Fuzzing
- 4.5. Analyzing Results
- 5. Tutorials
- 5.1. Fuzzing an x86_64 EDK2 UEFI Application
- 5.1.1. Writing the Application
- 5.1.2. Building the Application
- 5.1.3. Testing the Application
- 5.1.4. Configuring the Fuzzer
- 5.1.5. Running the Fuzzer
- 5.1.6. Reproducing Runs
- 5.1.7. Optimizing For Speed
- 5.2. Fuzzing a RISC-V Kernel Module
- 5.2.1. Target Software Outline
- 5.2.2. Target Software Boilerplate
- 5.2.3. Kernel Module Code
- 5.2.4. Kernel Module Harnessing
- 5.2.5. Updating the Build Configuration
- 5.2.6. Running the Fuzzer
- 5.3. Fuzzing a Platform BIOS
- 5.3.1. Obtaining Sources
- 5.3.2. Building the BIOS
- 5.3.3. Booting the BIOS
- 5.3.4. Harnessing the BIOS Boot Logo Parser
- 5.3.5. Configuring the Fuzzer
- 5.3.6. Running the Fuzzer
- 5.3.7. Optimizing the Fuzzer
- 5.4. Fuzzing a Windows Kernel Mode Driver (KMD)
- 5.4.1. Building a Windows Image
- 5.4.1.1. Install VirtualBox
- 5.4.1.2. Download Windows
- 5.4.1.3. Create a VM
- 5.4.1.4. Install Windows
- 5.4.1.5. Set Up SSH
- 5.4.1.6. Enable SSH Port Forwarding in VirtualBox
- 5.4.1.7. Change Default Shell to PowerShell
- 5.4.1.8. Installing the EWDK
- 5.4.1.9. Installing Development Tools
- 5.4.1.10. Install Simics Agent
- 5.4.1.11. Clone and Build HEVD
- 5.4.1.12. Install the Code Signing Certificate
- 5.4.1.13. Install HEVD Driver
- 5.4.1.14. Create a Fuzz Harness
- 5.4.1.15. Compile the Fuzz Harness
- 5.4.1.16. Convert the Image to CRAFF
- 5.4.2. Create a Simics Project
- 5.4.3. Run and Set Up the Simulation
- 5.4.4. Run the Fuzzer
- 6. SIMICS and Crate Documentation
- 7. Developer Documentation
- 7.1. Build Internals
- 7.2. Refreshing Build Environment
- 7.3. Building Against A Specific SIMICS Version
- 7.4. Debugging TSFFS
- 7.5. Releasing