diff options
Diffstat (limited to 'frida_mode/test/osx-lib/GNUmakefile')
-rw-r--r-- | frida_mode/test/osx-lib/GNUmakefile | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/frida_mode/test/osx-lib/GNUmakefile b/frida_mode/test/osx-lib/GNUmakefile new file mode 100644 index 00000000..a095783e --- /dev/null +++ b/frida_mode/test/osx-lib/GNUmakefile @@ -0,0 +1,108 @@ +PWD:=$(shell pwd)/ +ROOT:=$(PWD)../../../ +BUILD_DIR:=$(PWD)build/ +TESTINSTR_DATA_DIR:=$(BUILD_DIR)in/ +TESTINSTR_DATA_FILE:=$(TESTINSTR_DATA_DIR)in +AFLPP_DRIVER_DUMMY_INPUT:=$(BUILD_DIR)dummy.dat + +HARNESS_BIN:=$(BUILD_DIR)harness +HARNESS_SRC:=$(PWD)harness.c + +HARNESS2_BIN:=$(BUILD_DIR)harness2 +HARNESS2_SRC:=$(PWD)harness2.c + +LIB_BIN:=$(BUILD_DIR)libcrashme.dylib +LIB_SRC:=$(PWD)lib.c + +QEMU_OUT:=$(BUILD_DIR)qemu-out +FRIDA_OUT:=$(BUILD_DIR)frida-out + +HARNESS_LDFLAGS:=-Wl,-no_pie +LIB_CFLAGS:=-dynamiclib + +GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh +AFL_FRIDA_MAIN_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) run 0x0) +AFL_FRIDA_FUZZ_ADDR=$(shell $(GET_SYMBOL_ADDR) $(HARNESS_BIN) LLVMFuzzerTestOneInput 0x0) +AFL_FRIDA_FUZZ_ADDR2=$(shell $(GET_SYMBOL_ADDR) $(HARNESS2_BIN) LLVMFuzzerTestOneInput 0x0) + +AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so + +TEST_FILE:=$(BUILD_DIR)test.dat + +.PHONY: all clean qemu frida + +all: $(HARNESS_BIN) $(LIB_BIN) + make -C $(ROOT)frida_mode/ + +$(BUILD_DIR): + mkdir -p $@ + +$(TESTINSTR_DATA_DIR): | $(BUILD_DIR) + mkdir -p $@ + +$(TESTINSTR_DATA_FILE): | $(TESTINSTR_DATA_DIR) + echo -n "$$FA$$" > $@ + +$(AFLPP_DRIVER_DUMMY_INPUT): | $(BUILD_DIR) + truncate -s 1M $@ + +$(HARNESS_BIN): $(HARNESS_SRC) | $(BUILD_DIR) + $(CC) $(CFLAGS) $(LDFLAGS) $(HARNESS_LDFLAGS) -o $@ $< + +$(LIB_BIN): $(LIB_SRC) | $(BUILD_DIR) + $(CC) $(CFLAGS) $(LDFLAGS) $(LIB_CFLAGS) -o $@ $< + +$(HARNESS2_BIN): $(HARNESS2_SRC) $(LIB_BIN) | $(BUILD_DIR) + $(CC) $(CFLAGS) $(LDFLAGS) $(HARNESS_LDFLAGS) -L$(BUILD_DIR) -lcrashme -o $@ $< + +clean: + rm -rf $(BUILD_DIR) + +.ONESHELL: +frida_persistent: $(HARNESS_BIN) $(LIB_BIN) $(TESTINSTR_DATA_FILE) + cd $(BUILD_DIR) && \ + AFL_INST_LIBS=1 \ + AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_MAIN_ADDR) \ + AFL_FRIDA_PERSISTENT_CNT=1000000 \ + AFL_ENTRYPOINT=$(AFL_FRIDA_MAIN_ADDR) \ + $(ROOT)afl-fuzz \ + -D \ + -O \ + -i $(TESTINSTR_DATA_DIR) \ + -o $(FRIDA_OUT) \ + -f $(TEST_FILE) \ + -- \ + $(HARNESS_BIN) $(TEST_FILE) + +.ONESHELL: +frida_persistent_hook: $(HARNESS_BIN) $(LIB_BIN) $(AFLPP_DRIVER_DUMMY_INPUT) $(TESTINSTR_DATA_FILE) + cd $(BUILD_DIR) && \ + AFL_INST_LIBS=1 \ + AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_FUZZ_ADDR) \ + AFL_FRIDA_PERSISTENT_CNT=1000000 \ + AFL_ENTRYPOINT=$(AFL_FRIDA_FUZZ_ADDR) \ + AFL_FRIDA_PERSISTENT_HOOK=$(AFLPP_FRIDA_DRIVER_HOOK_OBJ) \ + $(ROOT)afl-fuzz \ + -D \ + -O \ + -i $(TESTINSTR_DATA_DIR) \ + -o $(FRIDA_OUT) \ + -- \ + $(HARNESS_BIN) $(AFLPP_DRIVER_DUMMY_INPUT) + +.ONESHELL: +frida_persistent_hook2: $(HARNESS2_BIN) $(LIB_BIN) $(AFLPP_DRIVER_DUMMY_INPUT) $(TESTINSTR_DATA_FILE) + cd $(BUILD_DIR) && \ + AFL_INST_LIBS=1 \ + AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_FUZZ_ADDR2) \ + AFL_FRIDA_PERSISTENT_CNT=1000000 \ + AFL_ENTRYPOINT=$(AFL_FRIDA_FUZZ_ADDR2) \ + AFL_FRIDA_PERSISTENT_HOOK=$(AFLPP_FRIDA_DRIVER_HOOK_OBJ) \ + AFL_FRIDA_INST_RANGES=libcrashme.dylib,harness2 \ + $(ROOT)afl-fuzz \ + -D \ + -O \ + -i $(TESTINSTR_DATA_DIR) \ + -o $(FRIDA_OUT) \ + -- \ + $(HARNESS2_BIN) $(AFLPP_DRIVER_DUMMY_INPUT) |