{"id":23050063,"url":"https://github.com/yuawn/fuzzing","last_synced_at":"2025-08-15T02:31:37.049Z","repository":{"id":49832614,"uuid":"499740758","full_name":"yuawn/Fuzzing","owner":"yuawn","description":"Fuzzing tutorial with easy-to-learn labs 🚀","archived":false,"fork":false,"pushed_at":"2022-09-04T04:46:14.000Z","size":80,"stargazers_count":158,"open_issues_count":0,"forks_count":18,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-12-08T19:55:24.316Z","etag":null,"topics":["101","afl","automation","education","fuzz-testing","fuzzing","instrumentation","klee","llvm","security-testing","securtiy","symbolic-execution","testing","tutorial","vulnerability"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuawn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-04T06:05:49.000Z","updated_at":"2024-11-08T07:01:22.000Z","dependencies_parsed_at":"2023-01-17T20:16:50.592Z","dependency_job_id":null,"html_url":"https://github.com/yuawn/Fuzzing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuawn%2FFuzzing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuawn%2FFuzzing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuawn%2FFuzzing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuawn%2FFuzzing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuawn","download_url":"https://codeload.github.com/yuawn/Fuzzing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229886489,"owners_count":18139489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["101","afl","automation","education","fuzz-testing","fuzzing","instrumentation","klee","llvm","security-testing","securtiy","symbolic-execution","testing","tutorial","vulnerability"],"created_at":"2024-12-15T23:19:04.207Z","updated_at":"2024-12-15T23:19:04.860Z","avatar_url":"https://github.com/yuawn.png","language":"C++","readme":"# Fuzzing\n\nFuzzing tutorial with easy to learn labs.\n\n# Lessons\n| Lesson | keyword | Lab |\n| ------------- | ------------- | ------------- |\n| [Lesson 00 - Fuzzing with AFL++](00-fuzzing) | afl-cc, afl-clang-lto, fuzzing | :white_check_mark: |\n| [Lesson 01 - Use sanitizer to catch silent bugs](01-sanitizer) | AddressSanitizer(ASAN) | :white_check_mark: |\n| [Lesson 02 - Improve code coverage using dictionary](02-dictionary) | dictionary, branch constraint, split-comparison | :white_check_mark: |\n| [Lesson 03 - Parallel fuzzing: combine the advantages of each fuzzer](03-parallel_fuzzing) | parallel fuzzing, seed pool syncing | :white_check_mark: |\n| [Lesson 04 - Increase fuzzing performance by persistent mode](04-persistent_mode) | fuzzing harness, persistent mode | :white_check_mark: |\n| [Lesson 05 - Write a LLVM Pass to do binary instrumentation](05-LLVM_Pass) | LLVM Pass, binary instrumentation | :white_check_mark: |\n| [Lesson 06 - Integrate custom LLVM Pass into AFL++](06-AFLpp_LLVM_Pass_integration) | custom LLVM Pass in AFL++, integration example | :white_check_mark: |\n| [Lesson 07 - Playing symbolic execution on a maze with KLEE](07-KLEE_symbolic_execution) | symbolic execution, KLEE | :white_check_mark: |\n\n\n## Setup\n```shell\n./setup.sh\nmake\n```\n\n## Environment\n| Name | Version |\n| ---- | ------- |\n| Ubuntu | [20.04](https://releases.ubuntu.com/20.04/), [22.04](https://releases.ubuntu.com/22.04/) |\n| LLVM (clang, lld) | [14.0.6](https://github.com/llvm/llvm-project/releases/tag/llvmorg-14.0.6) |\n| AFL++ | [4.01c](https://github.com/AFLplusplus/AFLplusplus/releases/tag/4.01c) |\n| KLEE | [v2.3](https://github.com/klee/klee/releases/tag/v2.3) |\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuawn%2Ffuzzing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuawn%2Ffuzzing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuawn%2Ffuzzing/lists"}