# Variables [env] CARGO_TARGET_DIR = { value = "target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } FUZZER_NAME={ source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = "frida_gdiplus", mapping = {"linux" = "frida_gdiplus", "macos" = "frida_gdiplus", "windows" = "frida_gdiplus.exe"} } [tasks.unsupported] script_runner="@shell" script=''' echo "Cargo-make not integrated yet on this" ''' # Harness [tasks.harness] linux_alias = "unsupported" mac_alias = "unsupported" windows_alias = "harness_windows" [tasks.harness_windows] script_runner="@shell" script=''' cl.exe /LD harness.cc /link /dll gdiplus.lib ole32.lib ''' # Fuzzer [tasks.fuzzer] linux_alias = "unsupported" mac_alias = "unsupported" windows_alias = "fuzzer_windows" [tasks.fuzzer_windows] script_runner="@shell" script=''' cargo build --release cp ./target/release/${FUZZER_NAME} . ''' # Run the fuzzer [tasks.run] linux_alias = "unsupported" mac_alias = "unsupported" windows_alias = "run_windows" [tasks.run_windows] script_runner = "@shell" script=''' ./${FUZZER_NAME} -H harness.dll -i corpus -o output --libs-to-instrument gdi32.dll --libs-to-instrument gdi32full.dll --libs-to-instrument gdiplus.dll --libs-to-instrument WindowsCodecs.dll --disable-excludes ''' dependencies = [ "fuzzer", "harness" ] # Test [tasks.test] linux_alias = "unsupported" mac_alias = "unsupported" windows_alias = "test_windows" [tasks.test_windows] script_runner = "@shell" script=''' start "" "frida_gdiplus.exe" -H harness.dll -i corpus -o output --libs-to-instrument gdi32.dll --libs-to-instrument gdi32full.dll --libs-to-instrument gdiplus.dll --libs-to-instrument WindowsCodecs.dll --disable-excludes #ping is for timeout ping -n 10 127.0.0.1>NUL && taskkill /im frida_gdiplus.exe /F >nul 2>nul dir /a-d "corpus_discovered\*" && (echo Files exist) || (exit /b 1337) ''' dependencies = [ "fuzzer", "harness" ]