diff options
Diffstat (limited to 'frida_mode/test/fuzzbench/GNUmakefile')
-rw-r--r-- | frida_mode/test/fuzzbench/GNUmakefile | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/frida_mode/test/fuzzbench/GNUmakefile b/frida_mode/test/fuzzbench/GNUmakefile new file mode 100644 index 00000000..38d8b91e --- /dev/null +++ b/frida_mode/test/fuzzbench/GNUmakefile @@ -0,0 +1,61 @@ +PWD:=$(shell pwd)/ +ROOT:=$(shell realpath $(PWD)../../..)/ +SRC_DIR:=$(PWD)src/ +BUILD_DIR:=$(PWD)build/ + +FUZZBENCH_DATA_DIR:=$(BUILD_DIR)in/ +R2_DICT:=$(BUILD_DIR)fuzz-target.dict +R2_DICT_URL:=https://raw.githubusercontent.com/google/fuzzing/master/dictionaries/regexp.dict + +FRIDA_OUT:=$(BUILD_DIR)frida-out + +ASSETS_DIR:=$(BUILD_DIR)assets/ +ASSETS_SRC:=$(ROOT)frida_mode/build/afl-frida-trace.so \ + $(R2_DICT) \ + fuzzer \ + $(SRC_DIR)run.sh + +ASSETS_DEST:=$(foreach asset,$(ASSETS_SRC),$(ASSETS_DIR)$(notdir $(asset))) + +.PHONY: all clean frida + +all: $(FUZZBENCH_DATA_DIR) + make -C $(ROOT)frida_mode/ + +$(BUILD_DIR): + mkdir -p $@ + +$(ASSETS_DIR): | $(BUILD_DIR) + mkdir -p $@ + +$(R2_DICT): | $(BUILD_DIR) + wget -qO $@ $(R2_DICT_URL) + +$(FUZZBENCH_DATA_DIR): $(R2_DICT) + mkdir -p $@ + split -l 1 -d -a 4 $(R2_DICT) $(FUZZBENCH_DATA_DIR)file + +define COPY_ASSET +$(2): $(1) GNUmakefile | $(ASSETS_DIR) + cp -v $(1) $(2) +endef + +$(foreach asset,$(ASSETS_SRC),$(eval $(call COPY_ASSET,$(asset),$(ASSETS_DIR)$(notdir $(asset))))) + +clean: + rm -rf $(BUILD_DIR) + +frida: | $(FUZZBENCH_DATA_DIR) + AFL_QEMU_DRIVER_NO_HOOK=1 \ + AFL_FRIDA_PERSISTENT_CNT=1000000 \ + AFL_FRIDA_PERSISTENT_ADDR=0x55555599f6c0 \ + $(ROOT)afl-fuzz \ + -O \ + -i $(FUZZBENCH_DATA_DIR) \ + -o $(FRIDA_OUT) \ + -- \ + $(PWD)fuzzer + +docker: $(ASSETS_DEST) + docker build -t fuzzbench-frida-mode -f $(SRC_DIR)Dockerfile $(PWD) + docker run --rm -ti fuzzbench-frida-mode /run.sh \ No newline at end of file |