
* Add windows build script and additional changes to support windows for libafl-libfuzzer * Update build scripts and harness wrapping directives * Resolve issue with corpus edge count calculation * Add help message and make fork do nothing on Windows * Format harness_wrap.cpp * Clippy happiness pass * Clippy happiness pass * Clippy happiness pass * Correct logic * Correct logic * Update help output and make runs argument work * Add test for libafl_libfuzzer on windows * Add workflow for libafl_libfuzzer test * Fix copy without dependent task * Add libafl_libfuzzer_windows to preflight list * Format harness * Explicitly ignore windows fuzzer * Remove windows-specific copy from unix instructions * Ensure using nightly * Fix job name * Update build to use libFuzzer.lib on Windows to keep consistent with Linux * Remove nightly requirement --------- Co-authored-by: Rowan Hart <rowanhart@microsoft.com>
90 lines
2.9 KiB
Makefile
90 lines
2.9 KiB
Makefile
import "../../../just/libafl.just"
|
|
|
|
FUZZER_NAME := "frida_fuzzer"
|
|
FUZZER_NAME_WIN := "frida_fuzzer.exe"
|
|
|
|
set windows-shell := ['cmd.exe', '/c']
|
|
set unstable
|
|
|
|
[unix]
|
|
libpng:
|
|
#!/bin/bash
|
|
if [ ! -f v1.6.37.tar.gz ]; then
|
|
wget https://github.com/glennrp/libpng/archive/refs/tags/v1.6.37.tar.gz
|
|
fi
|
|
tar -xvf v1.6.37.tar.gz
|
|
|
|
[unix]
|
|
lib: libpng
|
|
cd libpng-1.6.37 && ./configure --enable-shared=no --with-pic=yes --enable-hardware-optimizations=yes
|
|
make -j -C libpng-1.6.37
|
|
|
|
[unix]
|
|
harness: lib
|
|
clang++ -O3 -c -fPIC harness.cc -o harness.o
|
|
clang++ -O3 harness.o libpng-1.6.37/.libs/libpng16.a -shared -lz -o libpng-harness.so
|
|
|
|
[windows]
|
|
zlib:
|
|
powershell -Command Invoke-WebRequest -OutFile zlib-1.2.11.tar.gz https://zlib.net/fossils/zlib-1.2.11.tar.gz
|
|
tar -xvf zlib-1.2.11.tar.gz
|
|
del /q zlib-1.2.11.tar.gz
|
|
move zlib-1.2.11 zlib
|
|
|
|
[windows]
|
|
lib: zlib
|
|
cd zlib && cmake -A x64 -DCMAKE_CXX_COMPILER=cl -DCMAKE_POLICY_VERSION_MINIMUM=3.5 . && cmake --build . --config Release
|
|
|
|
[windows]
|
|
libpng:
|
|
powershell -Command Invoke-WebRequest -OutFile libpng-1.6.37.tar.gz https://github.com/glennrp/libpng/archive/refs/tags/v1.6.37.tar.gz
|
|
tar -xvf libpng-1.6.37.tar.gz
|
|
del /q libpng-1.6.37.tar.gz
|
|
|
|
[windows]
|
|
lib2: libpng
|
|
cd libpng-1.6.37 && cmake -A x64 -DCMAKE_CXX_COMPILER=cl -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DZLIB_ROOT=..\zlib -DZLIB_LIBRARY=..\zlib\Release\zlib.lib . && cmake --build . --config Release
|
|
|
|
[windows]
|
|
harness: lib lib2
|
|
copy libpng-1.6.37\Release\libpng16.lib . && copy libpng-1.6.37\Release\libpng16.dll . && copy zlib\Release\zlib.lib . && copy zlib\Release\zlib.dll .
|
|
cl /O2 /c /I .\libpng-1.6.37 harness.cc /Fo:harness.obj && link /DLL /OUT:libpng-harness.dll harness.obj libpng16.lib zlib.lib
|
|
|
|
[unix]
|
|
[windows]
|
|
build:
|
|
cargo build --profile {{ PROFILE }}
|
|
|
|
[unix]
|
|
run: build harness
|
|
{{ FUZZER }} -F LLVMFuzzerTestOneInput -H ./libpng-harness.so -l ./libpng-harness.so
|
|
|
|
[windows]
|
|
run: build harness
|
|
{{TARGET_DIR}}\{{PROFILE}}\{{FUZZER_NAME_WIN}} -F LLVMFuzzerTestOneInput -H .\libpng-harness.dll -l .\libpng-harness.dll -l .\zlib.dll -l .\libpng16.dll --cores=0
|
|
|
|
[unix]
|
|
test: build harness
|
|
#!/bin/bash
|
|
|
|
rm -rf libafl_unix_shmem_server || true
|
|
timeout 30s {{ FUZZER }} -F LLVMFuzzerTestOneInput -H ./libpng-harness.so -l ./libpng-harness.so | tee fuzz_stdout.log 2>/dev/null || true
|
|
if grep -qa "corpus: 70" fuzz_stdout.log; then
|
|
echo "Fuzzer is working"
|
|
else
|
|
echo "Fuzzer does not generate any testcases or any crashes"
|
|
exit 1
|
|
fi
|
|
|
|
[windows]
|
|
[script("cmd.exe", "/c")]
|
|
test: build harness
|
|
start "" "{{TARGET_DIR}}\{{PROFILE}}\{{FUZZER_NAME_WIN}}" -F LLVMFuzzerTestOneInput -H .\libpng-harness.dll -l .\libpng-harness.dll -l .\zlib.dll -l .\libpng16.dll --cores=0
|
|
ping -n 10 127.0.0.1>NUL && taskkill /im frida_fuzzer.exe /F
|
|
dir /a-d corpus_discovered && (echo Files exist) || (exit /b 1337)
|
|
|
|
[unix]
|
|
clean:
|
|
make -C libpng-1.6.37 clean
|
|
cargo clean
|