{"id":16880757,"url":"https://github.com/wtdcode/fuzzercorn","last_synced_at":"2025-07-04T09:38:24.300Z","repository":{"id":57432726,"uuid":"450611510","full_name":"wtdcode/fuzzercorn","owner":"wtdcode","description":"Bring libfuzzer to Unicorn","archived":false,"fork":false,"pushed_at":"2022-01-23T13:35:33.000Z","size":35,"stargazers_count":26,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-04T17:11:27.608Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wtdcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-21T19:12:48.000Z","updated_at":"2024-03-30T15:28:14.000Z","dependencies_parsed_at":"2022-08-29T17:20:40.989Z","dependency_job_id":null,"html_url":"https://github.com/wtdcode/fuzzercorn","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wtdcode/fuzzercorn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Ffuzzercorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Ffuzzercorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Ffuzzercorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Ffuzzercorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wtdcode","download_url":"https://codeload.github.com/wtdcode/fuzzercorn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wtdcode%2Ffuzzercorn/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263484398,"owners_count":23473753,"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":[],"created_at":"2024-10-13T15:59:59.141Z","updated_at":"2025-07-04T09:38:24.276Z","avatar_url":"https://github.com/wtdcode.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fuzzercorn\n\nlibfuzzer bindings for Unicorn.\n\n## API\n\n```C\n// The main entry point of the fuzzer.\n// Note this function should be called only **ONCE** per process.\n//\n// @Uc: The Unicorn instance.\n// @Argc: A pointer to argc.\n// @Argv: A pointer to argv array.\n// @Input: The Callback to place input. If it returns false, the unicorn won't be\n//         started. Users also may use this to implement custom fuzzing logic, for\n//         example starting fuzzer in the callback. Always return 0.\n// @Init: The Callback to initialize before fuzzing. Only called once and should always\n//        return 0 whatever happens.\n// @Validate: Validate if an error is a crash. Only get called if unicorn returns an\n//            error by default. If @AlwaysValidate is set to true, it would be called\n//            everytime the emulation is done.\n// @Mutate: Mutate the input **in-place**. Note that setting this pointer to non-null but\n//          don't provide any implementation may have side-effects. If you would not like to\n//          mutate, set it to nullptr.\n// @Cross: Combines two input to new output.\n// @Ranges: Specify the ranges the fuzzer is interested. Only the code within the ranges\n//          would be intrumented. Setting this to nullptr will get all code instrumented.\n// @UserData: User provided data and will be passed to callbacls.\n// @AlwaysValidate: see @Validate.\n// @ExitCode: The program (fuzzer) exit code. Should be returned as the exit code of the\n//            outer program.\n// @CounterCount: The coverage map size. Reduce this can speedup the fuzzing but may cause\n//                more conflicts.\nFUZZER_INTERFACE_VISIBILITY FuzzerCornError FuzzerCornFuzz(\n    uc_engine *Uc, int *Argc, char ***Argv, FuzzerCornPlaceInputCallback Input,\n    FuzzerCornInitialize Init, FuzzerCornValidateCallback Validate,\n    FuzzerCornMutatorCallback Mutate, FuzzerCornCrossOverCallback Cross,\n    InstrumentRange *Ranges, size_t RangeCount, void *UserData,\n    bool AlwaysValidate, int *ExitCode, size_t CounterCount);\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwtdcode%2Ffuzzercorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwtdcode%2Ffuzzercorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwtdcode%2Ffuzzercorn/lists"}