aboutsummaryrefslogtreecommitdiff
path: root/frida_mode
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2022-08-25 15:56:36 +0200
committerGitHub <noreply@github.com>2022-08-25 15:56:36 +0200
commit413e68ab6d588b12976c5ff34e1a27eae48c26d8 (patch)
tree24ac9dc2eb3bf5c3f114e9e0abb52729f893b8ed /frida_mode
parent3e2986dd78dbc45035b47a34eedd7dd1b9a4d0b3 (diff)
parenteb5a914ef670d43cc41ce130edb4e0586d97e278 (diff)
downloadafl++-413e68ab6d588b12976c5ff34e1a27eae48c26d8.tar.gz
Merge pull request #1499 from AFLplusplus/dev
push to stable
Diffstat (limited to 'frida_mode')
-rw-r--r--frida_mode/GNUmakefile16
-rw-r--r--frida_mode/src/module.c4
-rw-r--r--frida_mode/test/png/GNUmakefile74
-rw-r--r--frida_mode/test/unstable/GNUmakefile24
4 files changed, 91 insertions, 27 deletions
diff --git a/frida_mode/GNUmakefile b/frida_mode/GNUmakefile
index 43b8932a..39c96d5b 100644
--- a/frida_mode/GNUmakefile
+++ b/frida_mode/GNUmakefile
@@ -32,7 +32,7 @@ CFLAGS+=-fPIC \
-ffunction-sections \
ifdef IS_ANDROID
-CFLAGS+=-DANDROID
+CFLAGS+=-DANDROID
endif
AFL_CFLAGS:=-Wno-unused-parameter \
@@ -47,7 +47,7 @@ LDFLAGS+= -static-libstdc++ \
-DANDROID \
-llog \
-shared
-else
+else
LDFLAGS+=-shared \
-lpthread \
-lresolv
@@ -103,7 +103,7 @@ endif
LDFLAGS+= -z noexecstack \
-Wl,--gc-sections \
-Wl,--exclude-libs,ALL \
- -ldl
+ -ldl
LDSCRIPT:=-Wl,--version-script=$(PWD)frida.map
endif
@@ -118,7 +118,7 @@ endif
ifdef IS_ANDROID
OS:=android
ifdef IS_x86
- ARCH:=x86
+ ARCH:=x86
endif
ifdef IS_x86
ARCH:=x86_64
@@ -247,17 +247,17 @@ else ifeq "$(ARCH)" "arm64"
CFLAGS+=-I $(FRIDA_DIR)build/frida_thin-$(OS)-$(ARCH)/include/frida-1.0 \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
- -I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
+ -I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/capstone/ \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/json-glib-1.0/ \
ifeq "$(OS)" "android"
- CFLAGS += -static-libstdc++
+CFLAGS += -static-libstdc++
endif
else
CFLAGS+=-I $(FRIDA_DIR)build/frida_thin-$(OS)-$(ARCH)/include/frida-1.0 \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
- -I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
+ -I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/capstone/ \
-I $(FRIDA_DIR)build/frida_thin-sdk-$(OS)-$(ARCH)/include/json-glib-1.0/ \
@@ -284,7 +284,7 @@ CFLAGS+=-I $(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/include/frida-1.0 \
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/capstone/ \
- -I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/
+ -I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/
ifeq "$(OS)" "android"
CFLAGS += -static-libstdc++
diff --git a/frida_mode/src/module.c b/frida_mode/src/module.c
index 4b6b2b3f..2e4a4175 100644
--- a/frida_mode/src/module.c
+++ b/frida_mode/src/module.c
@@ -77,7 +77,9 @@ static int on_dlclose(void *handle) {
range = &g_array_index(ranges, gum_range_t, i);
base = range->range.base_address;
limit = base + range->range.size;
- FVERBOSE("Reserving range: 0x%016lx, 0x%016lX", base, limit);
+ FVERBOSE("Reserving range: 0x%016" G_GINT64_MODIFIER
+ "x, 0x%016" G_GINT64_MODIFIER "X",
+ base, limit);
mem = gum_memory_allocate(GSIZE_TO_POINTER(base), range->range.size,
page_size, GUM_PAGE_NO_ACCESS);
if (mem == NULL) { FATAL("Failed to allocate %p (%d)", mem, errno); }
diff --git a/frida_mode/test/png/GNUmakefile b/frida_mode/test/png/GNUmakefile
index 0f591508..864265e0 100644
--- a/frida_mode/test/png/GNUmakefile
+++ b/frida_mode/test/png/GNUmakefile
@@ -2,10 +2,17 @@ PWD:=$(shell pwd)/
ROOT:=$(PWD)../../../
BUILD_DIR:=$(PWD)build/
+LIBZ_BUILD_DIR:=$(BUILD_DIR)libz/
LIBPNG_BUILD_DIR:=$(BUILD_DIR)libpng/
HARNESS_BUILD_DIR:=$(BUILD_DIR)harness/
PNGTEST_BUILD_DIR:=$(BUILD_DIR)pngtest/
+LIBZ_FILE:=$(LIBZ_BUILD_DIR)zlib-1.2.12.tar.gz
+LIBZ_URL:=http://www.zlib.net/zlib-1.2.12.tar.gz
+LIBZ_DIR:=$(LIBZ_BUILD_DIR)zlib-1.2.12/
+LIBZ_PC:=$(ZLIB_DIR)zlib.pc
+LIBZ_LIB:=$(LIBZ_DIR)libz.a
+
LIBPNG_FILE:=$(LIBPNG_BUILD_DIR)libpng-1.2.56.tar.gz
LIBPNG_URL:=https://downloads.sourceforge.net/project/libpng/libpng12/older-releases/1.2.56/libpng-1.2.56.tar.gz
LIBPNG_DIR:=$(LIBPNG_BUILD_DIR)libpng-1.2.56/
@@ -32,11 +39,16 @@ FRIDA_OUT:=$(BUILD_DIR)frida-out
.PHONY: all clean qemu frida
+ARCH?=""
+
all: $(TEST_BIN)
make -C $(ROOT)frida_mode/
32:
- CFLAGS="-m32" LDFLAGS="-m32" ARCH="x86" make all
+ CFLAGS="-m32" LDFLAGS="-m32" make $(TEST_BIN)
+
+arm:
+ ARCH="arm" CC="arm-linux-gnueabihf-gcc" CXX="arm-linux-gnueabihf-g++" make $(TEST_BIN)
$(BUILD_DIR):
mkdir -p $@
@@ -51,6 +63,8 @@ $(HARNESS_FILE): | $(HARNESS_BUILD_DIR)
$(HARNESS_OBJ): $(HARNESS_FILE)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ -c $<
+harness: $(HARNESS_OBJ)
+
######### PNGTEST ########
$(PNGTEST_BUILD_DIR): | $(BUILD_DIR)
@@ -62,6 +76,34 @@ $(PNGTEST_FILE): | $(PNGTEST_BUILD_DIR)
$(PNGTEST_OBJ): $(PNGTEST_FILE) | $(LIBPNG_DIR)
$(CXX) $(CFLAGS) $(LDFLAGS) -std=c++11 -I $(LIBPNG_DIR) -o $@ -c $<
+pngtest: $(PNGTEST_OBJ)
+
+######### LIBZ ########
+
+$(LIBZ_BUILD_DIR): | $(BUILD_DIR)
+ mkdir -p $@
+
+$(LIBZ_FILE): | $(LIBZ_BUILD_DIR)
+ wget -O $@ $(LIBZ_URL)
+
+$(LIBZ_DIR): $(LIBZ_FILE)
+ tar zxvf $(LIBZ_FILE) -C $(LIBZ_BUILD_DIR)
+
+$(LIBZ_PC): | $(LIBZ_DIR)
+ cd $(LIBZ_DIR) && \
+ CFLAGS="$(CFLAGS) -fPIC" \
+ ./configure \
+ --static \
+ --archs="$(ARCH)"
+
+$(LIBZ_LIB): $(LIBZ_PC)
+ CFLAGS="$(CFLAGS) -fPIC" \
+ make \
+ -C $(LIBZ_DIR) \
+ -j
+
+libz: $(LIBZ_LIB)
+
######### LIBPNG ########
$(LIBPNG_BUILD_DIR): | $(BUILD_DIR)
@@ -73,11 +115,21 @@ $(LIBPNG_FILE): | $(LIBPNG_BUILD_DIR)
$(LIBPNG_DIR): $(LIBPNG_FILE)
tar zxvf $(LIBPNG_FILE) -C $(LIBPNG_BUILD_DIR)
-$(LIBPNG_MAKEFILE): | $(LIBPNG_DIR)
- cd $(LIBPNG_DIR) && ./configure
+$(LIBPNG_MAKEFILE): $(LIBZ_LIB) | $(LIBPNG_DIR)
+ cd $(LIBPNG_DIR) && \
+ CFLAGS="$(CFLAGS) -I$(LIBZ_DIR)" \
+ LDFLAGS="-L$(LIBZ_DIR)" \
+ ./configure \
+ --host="$(ARCH)"
$(LIBPNG_LIB): $(LIBPNG_MAKEFILE)
- make -C $(LIBPNG_DIR)
+ CFLAGS="$(CFLAGS) -I$(LIBZ_DIR)" \
+ LDFLAGS="-L$(LIBZ_DIR)" \
+ make \
+ -C $(LIBPNG_DIR) \
+ -j
+
+png: $(LIBPNG_LIB)
######### TEST ########
@@ -86,11 +138,21 @@ $(TEST_BIN): $(HARNESS_OBJ) $(PNGTEST_OBJ) $(LIBPNG_LIB)
$(CFLAGS) \
$(LDFLAGS) \
-o $@ \
- $(HARNESS_OBJ) $(PNGTEST_OBJ) $(LIBPNG_LIB) \
- -lz \
+ $(HARNESS_OBJ) $(PNGTEST_OBJ) $(LIBPNG_LIB) $(LIBZ_LIB) \
$(TEST_BIN_LDFLAGS) \
+test_bin: $(TEST_BIN)
+
+dowload: $(LIBZ_FILE) $(LIBPNG_FILE) $(HARNESS_FILE) $(PNGTEST_FILE)
+
clean:
+ rm -rf $(LIBZ_DIR)
+ rm -rf $(LIBPNG_DIR)
+ rm -f $(HARNESS_OBJ)
+ rm -f $(PNGTEST_OBJ)
+ rm -f $(TEST_BIN)
+
+clean_all:
rm -rf $(BUILD_DIR)
qemu: $(TEST_BIN)
diff --git a/frida_mode/test/unstable/GNUmakefile b/frida_mode/test/unstable/GNUmakefile
index ed91da40..59b49449 100644
--- a/frida_mode/test/unstable/GNUmakefile
+++ b/frida_mode/test/unstable/GNUmakefile
@@ -4,7 +4,7 @@ BUILD_DIR:=$(PWD)build/
UNSTABLE_DATA_DIR:=$(BUILD_DIR)in/
UNSTABLE_DATA_FILE:=$(UNSTABLE_DATA_DIR)in
-UNSTABLE_BIN:=$(BUILD_DIR)unstable
+TEST_BIN:=$(BUILD_DIR)unstable
UNSTABLE_SRC:=$(PWD)unstable.c
QEMU_OUT:=$(BUILD_DIR)qemu-out
@@ -42,7 +42,7 @@ endif
.PHONY: all 32 clean qemu frida
-all: $(UNSTABLE_BIN)
+all: $(TEST_BIN)
make -C $(ROOT)frida_mode/
32:
@@ -57,14 +57,14 @@ $(UNSTABLE_DATA_DIR): | $(BUILD_DIR)
$(UNSTABLE_DATA_FILE): | $(UNSTABLE_DATA_DIR)
echo -n "000" > $@
-$(UNSTABLE_BIN): $(UNSTABLE_SRC) | $(BUILD_DIR)
+$(TEST_BIN): $(UNSTABLE_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
clean:
rm -rf $(BUILD_DIR)
-qemu: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
+qemu: $(TEST_BIN) $(UNSTABLE_DATA_FILE)
AFL_QEMU_PERSISTENT_ADDR=$(AFL_QEMU_PERSISTENT_ADDR) \
$(ROOT)afl-fuzz \
-D \
@@ -72,9 +72,9 @@ qemu: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
-i $(UNSTABLE_DATA_DIR) \
-o $(QEMU_OUT) \
-- \
- $(UNSTABLE_BIN) @@
+ $(TEST_BIN) @@
-frida: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
+frida: $(TEST_BIN) $(UNSTABLE_DATA_FILE)
AFL_DEBUG=1 \
AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_PERSISTENT_ADDR) \
AFL_FRIDA_INST_TRACE_UNIQUE=1 \
@@ -85,9 +85,9 @@ frida: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
-i $(UNSTABLE_DATA_DIR) \
-o $(FRIDA_OUT) \
-- \
- $(UNSTABLE_BIN) @@
+ $(TEST_BIN) @@
-frida_coverage: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
+frida_coverage: $(TEST_BIN) $(UNSTABLE_DATA_FILE)
AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_PERSISTENT_ADDR) \
AFL_FRIDA_OUTPUT_STDOUT=/tmp/stdout.txt \
AFL_FRIDA_OUTPUT_STDERR=/tmp/stderr.txt \
@@ -98,9 +98,9 @@ frida_coverage: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
-i $(UNSTABLE_DATA_DIR) \
-o $(FRIDA_OUT) \
-- \
- $(UNSTABLE_BIN) @@
+ $(TEST_BIN) @@
-frida_unstable: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
+frida_unstable: $(TEST_BIN) $(UNSTABLE_DATA_FILE)
AFL_DEBUG=1 \
AFL_FRIDA_PERSISTENT_ADDR=$(AFL_FRIDA_PERSISTENT_ADDR) \
AFL_FRIDA_OUTPUT_STDOUT=/tmp/stdout.txt \
@@ -112,10 +112,10 @@ frida_unstable: $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
-i $(UNSTABLE_DATA_DIR) \
-o $(FRIDA_OUT) \
-- \
- $(UNSTABLE_BIN) @@
+ $(TEST_BIN) @@
debug:
gdb \
--ex 'set environment LD_PRELOAD=$(ROOT)afl-frida-trace.so' \
--ex 'set disassembly-flavor intel' \
- --args $(UNSTABLE_BIN) $(UNSTABLE_DATA_FILE)
+ --args $(TEST_BIN) $(UNSTABLE_DATA_FILE)