{"id":19681033,"url":"https://github.com/aflplusplus/fuzz-with-wine-demo","last_synced_at":"2025-04-29T04:31:46.811Z","repository":{"id":86884872,"uuid":"208916276","full_name":"AFLplusplus/Fuzz-With-Wine-Demo","owner":"AFLplusplus","description":"A set of helpers and examples to fuzz Win32 binaries with AFL++ QEMU","archived":false,"fork":false,"pushed_at":"2020-03-19T13:09:01.000Z","size":641,"stargazers_count":69,"open_issues_count":0,"forks_count":15,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-21T17:23:33.952Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/AFLplusplus.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,"governance":null}},"created_at":"2019-09-16T23:27:14.000Z","updated_at":"2024-11-23T22:19:13.000Z","dependencies_parsed_at":"2023-03-22T23:31:22.438Z","dependency_job_id":null,"html_url":"https://github.com/AFLplusplus/Fuzz-With-Wine-Demo","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"4b1c354e5056660a30f00faa5c61d95164cf111e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFLplusplus%2FFuzz-With-Wine-Demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFLplusplus%2FFuzz-With-Wine-Demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFLplusplus%2FFuzz-With-Wine-Demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AFLplusplus%2FFuzz-With-Wine-Demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AFLplusplus","download_url":"https://codeload.github.com/AFLplusplus/Fuzz-With-Wine-Demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251432899,"owners_count":21588673,"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-11-11T18:06:46.994Z","updated_at":"2025-04-29T04:31:46.434Z","avatar_url":"https://github.com/AFLplusplus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fuzz with WINE and AFL++ Demo\n\n\u003e Note: Wine based fuzzinf is integrated in AFL++ with the -W command line switch so the script in this repo is legacy but the examples are still valid\n\nA set of helpers and examples to fuzz Win32 binaries with AFL++ QEMU\n\n### Requirements\n\nTo fuzz Win32 PE applications with AFL++ QEMU you must ensure that your Linux\ndistribution is able to run Wine without preloader.\n\nCheck it simply typing:\n\n```\n$ WINELOADERNOEXEC=1 wine cmd\n```\n\nYou need also python3 and the pefile package.\n\n### Fuzz\n\nClone the master branch of [AFL++](https://github.com/vanhauser-thc/AFLplusplus)\nand build qemu_mode (use CPU_TARGET=i386 for this example).\n\nCopy the `afl-wine-trace` script into the AFL++ path or export AFL_PATH.\n\nWine installs some signal handlers for exception handling but for fuzzing we want to disable them and let the fuzzed program crash.\n\nBuild unsigation with make and copy `unsigation32.so` and `unsigation64.so` into the same directory of `afl-wine-trace`.\n\nTo fuzz a PE run it like in the following example with pnginfo.exe:\n\n```\nAFL_SKIP_BIN_CHECK=1 ~/AFLplusplus/afl-fuzz -i in/ -o out -d -m none -- ~/AFLplusplus/afl-wine-trace ./pnginfo.exe @@\n```\n\nAFL_SKIP_BIN_CHECK is needed cause afl-wine-trace is not a binary.\nWithout `-m none` the probability that Wine generates an ENOMEM is high.\n\nThe following screen should be familiar to you:\n\n![expic](img/pnginfo_example.png)\n\nMake sure that the program does not need user interaction, this is common for Windows programs.\nFor an example on how to handle them when the interation is useless, the the djpeg example.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faflplusplus%2Ffuzz-with-wine-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faflplusplus%2Ffuzz-with-wine-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faflplusplus%2Ffuzz-with-wine-demo/lists"}