about summary refs log tree commit diff
path: root/frida_mode/test/dynamic/GNUmakefile
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2022-05-16 11:15:21 +0200
committerGitHub <noreply@github.com>2022-05-16 11:15:21 +0200
commitc08eeb95ca78625cf3f8a96bd04320c57c50d0f1 (patch)
tree2eecf55a92eec04e67aa3a9d9bec8e5f50659de6 /frida_mode/test/dynamic/GNUmakefile
parent7c755a675f561eb1a8fd0ed4668cd56f43122fea (diff)
parent3dc72ffb6be7f9acb9788d5cfa8d99c557418621 (diff)
downloadafl++-c08eeb95ca78625cf3f8a96bd04320c57c50d0f1.tar.gz
Merge pull request #1410 from WorksButNotTested/dynamic
A few updates
Diffstat (limited to 'frida_mode/test/dynamic/GNUmakefile')
-rw-r--r--frida_mode/test/dynamic/GNUmakefile76
1 files changed, 76 insertions, 0 deletions
diff --git a/frida_mode/test/dynamic/GNUmakefile b/frida_mode/test/dynamic/GNUmakefile
new file mode 100644
index 00000000..f43416f7
--- /dev/null
+++ b/frida_mode/test/dynamic/GNUmakefile
@@ -0,0 +1,76 @@
+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
+
+TESTINSTBIN:=$(BUILD_DIR)testinstr
+TESTINSTSRC:=$(PWD)testinstr.c
+
+TESTINSTLIB:=$(BUILD_DIR)testinstrlib.so
+TESTINSTLIBSRC:=$(PWD)testinstrlib.c
+
+QEMU_OUT:=$(BUILD_DIR)qemu-out
+FRIDA_OUT:=$(BUILD_DIR)frida-out
+
+AFLPP_FRIDA_DRIVER_HOOK_OBJ=$(ROOT)frida_mode/build/frida_hook.so
+
+ADDR_BIN:=$(ROOT)frida_mode/build/addr
+GET_SYMBOL_ADDR:=$(ROOT)frida_mode/util/get_symbol_addr.sh
+
+AFL_FRIDA_BASE_ADDR:=$(shell $(ADDR_BIN))
+AFL_FRIDA_PERSISTENT_ADDR=$(shell $(GET_SYMBOL_ADDR) $(TESTINSTBIN) testinstr $(AFL_FRIDA_BASE_ADDR))
+
+CFLAGS+=-D_GNU_SOURCE=1
+LDFLAGS+=-ldl
+
+.PHONY: all clean qemu frida
+
+all: $(TESTINSTBIN) $(TESTINSTLIB)
+	make -C $(ROOT)frida_mode/
+
+$(BUILD_DIR):
+	mkdir -p $@
+
+$(AFLPP_DRIVER_DUMMY_INPUT): | $(BUILD_DIR)
+	dd if=/dev/zero bs=1048576 count=1 of=$@
+
+$(TESTINSTR_DATA_DIR): | $(BUILD_DIR)
+	mkdir -p $@
+
+$(TESTINSTR_DATA_FILE): | $(TESTINSTR_DATA_DIR)
+	echo -n "000" > $@
+
+$(TESTINSTLIB): $(TESTINSTLIBSRC) | $(BUILD_DIR)
+	$(CC) \
+		$(CFLAGS) \
+		-shared \
+		-o $@ \
+		$(LDFLAGS) \
+		$<
+
+$(TESTINSTBIN): $(TESTINSTSRC) | $(BUILD_DIR)
+	$(CC) \
+		$(CFLAGS) \
+		-o $@ \
+		$< \
+		$(LDFLAGS) \
+		-Wl,-rpath,'$$ORIGIN'
+
+clean:
+	rm -rf $(BUILD_DIR)
+
+
+frida: $(TESTINSTBIN) $(TESTINSTR_DATA_FILE) $(AFLPP_DRIVER_DUMMY_INPUT)
+	AFL_FRIDA_PERSISTENT_HOOK=$(AFLPP_FRIDA_DRIVER_HOOK_OBJ) \
+	AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_PERSISTENT_ADDR) \
+	AFL_ENTRYPOINT=$(AFL_FRIDA_PERSISTENT_ADDR) \
+	$(ROOT)afl-fuzz \
+		-D \
+		-O \
+		-i $(TESTINSTR_DATA_DIR) \
+		-o $(FRIDA_OUT) \
+		-- \
+			$(TESTINSTBIN) $(AFLPP_DRIVER_DUMMY_INPUT)
+