1. Introduction
  2. 1. Windows Kernel Fuzzing with LibFuzzer
    1. 1.1. Set Up Development Environment
    2. 1.2. Clone and Build HEVD
    3. 1.3. Install the Code Signing Certificate
    4. 1.4. Create and Start the Driver Service
    5. 1.5. Create a Fuzz Harness
    6. 1.6. Compile the Fuzz Harness
    7. 1.7. Run the Fuzz Harness
    8. 1.8. Extend the Length Faster
  3. 2. Linux Kernel Fuzzing with LibFuzzer
  4. 3. Introduction to LibAFL
  5. 4. Rust Quick-Start for LibAFL
  6. 5. Learn Rust by Fuzzing Rust with LibAFL
    1. 5.1. Create The Crate
    2. 5.2. Change The Crate Lib Type
    3. 5.3. Add LibAFL-Targets Crate as a Dependency
    4. 5.4. Features
    5. 5.5. Choosing Good Fuzz Targets
    6. 5.6. Creating our Fuzz Target
    7. 5.7. Ownership and Moves
    8. 5.8. Borrowing Mutably and Immutably
    9. 5.9. Slices
    10. 5.10. More Resources
    11. 5.11. Implement the Fuzz Target
    12. 5.12. Allocate Some Memory
    13. 5.13. Decode Encoded Input
    14. 5.14. if let Bindings
    15. 5.15. Ranges
    16. 5.16. Test the Fuzz Target
    17. 5.17. Analyzing the Bug
    18. 5.18. Summary
    19. 5.19. Create The Fuzzer Crate
    20. 5.20. Add the LibAFL Crate as a Dependency
    21. 5.21. Add LibAFL-Targets Crate as a Dependency
    22. 5.22. Add the Target Crate as a Dependency
    23. 5.23. Add Additional Dependencies
    24. 5.24. Create a Build Script
    25. 5.25. Coverage Sanitizer
    26. 5.26. The Build Script
    27. 5.27. Delete The Template main.rs
    28. 5.28. Set The Global Allocator
    29. 5.29. Import Coverage Observer
    30. 5.30. Declare Functions From Target
    31. 5.31. Add An Argument Parser
    32. 5.32. Derive Macros
    33. 5.33. cargo build
    34. 5.34. cargo run
    35. 5.35. Add a Harness
    36. 5.36. Closures
    37. 5.37. Create A Harness Closure
    38. 5.38. Add Observers and Feedbacks
    39. 5.39. Observers
    40. 5.40. Feedbacks
    41. 5.41. Add Our Observers and Feedbacks
    42. 5.42. Add Random Provider, Corpus, Solution Corpus, and State
    43. 5.43. Random Provider
    44. 5.44. Corpus
    45. 5.45. Solution Corpus
    46. 5.46. State
    47. 5.47. Add Monitor, Event Manager, Scheduler, and Fuzzer
    48. 5.48. Monitor
    49. 5.49. Event Manager
    50. 5.50. Scheduler
    51. 5.51. Fuzzer
    52. 5.52. Add Executor, Mutator, and Stages
    53. 5.53. Executor
    54. 5.54. Mutator
    55. 5.55. Stages
    56. 5.56. Load the Input Corpus
    57. 5.57. Start The Fuzz Loop
    58. 5.58. Run The Fuzzer
    59. 5.59. Add A Corpus Entry
    60. 5.60. Launch the Fuzzer
    61. 5.61. Triage The Crash
    62. 5.62. Summary
  7. 6. Docker Dev Container
    1. 6.1. Windows Host
    2. 6.2. Linux Host
  8. 7. Virtual Machine
    1. 7.1. Windows Kernel Development
      1. 7.1.1. Install VirtualBox
      2. 7.1.2. Download Windows
      3. 7.1.3. Create a VM
      4. 7.1.4. Install Windows
      5. 7.1.5. Set Up SSH
      6. 7.1.6. Enable SSH Port Forwarding in VirtualBox
      7. 7.1.7. Change Default Shell to PowerShell
      8. 7.1.8. Installing the EWDK
      9. 7.1.9. Installing Development Tools

Practical Fuzzing

Linux Host