8000 Merge pull request #2460 from AFLplusplus/dev · AFLplusplus/AFLplusplus@16cc444 · GitHub
[go: up one dir, main page]

Skip to content

Commit 16cc444

Browse files
Merge pull request #2460 from AFLplusplus/dev
update frida
2 parents 20348a6 + a9900f0 commit 16cc444

File tree

8 files changed

+28
-227
lines changed

8 files changed

+28
-227
lines changed

frida_mode/GNUmakefile

Lines changed: 20 additions & 130 deletions
10000
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ JS_OBJ:=$(BUILD_DIR)api.o
1515
SOURCES:=$(wildcard $(SRC_DIR)**/*.c) $(wildcard $(SRC_DIR)*.c)
1616
OBJS:=$(foreach src,$(SOURCES),$(OBJ_DIR)$(notdir $(patsubst %.c, %.o, $(src))))
1717

18+
XTOOLS_HOST?=x86_64-linux-gnu
1819
TARGET_CC?=$(CC)
1920
TARGET_CXX?=$(CXX)
2021
HOST_CC?=$(CC)
@@ -186,39 +187,13 @@ ifndef OS
186187
$(error "Operating system unsupported")
187188
endif
188189

189-
GUM_DEVKIT_VERSION=16.1.11
190+
GUM_DEVKIT_VERSION=17.0.7
190191
GUM_DEVKIT_FILENAME=frida-gumjs-devkit-$(GUM_DEVKIT_VERSION)-$(OS)-$(ARCH).tar.xz
191192
GUM_DEVKIT_URL="https://github.com/frida/frida/releases/download/$(GUM_DEVKIT_VERSION)/$(GUM_DEVKIT_FILENAME)"
192193

193-
ifeq ($(OS),macos)
194-
# Extract the major version
195-
GUM_VERSION_MAJOR := $(shell echo "$(GUM_DEVKIT_VERSION)" | sed -E 's/\..*//')
196-
# Extract the minor version (assumes format "MAJOR.MINOR[.PATCH...]")
197-
GUM_VERSION_MINOR := $(shell echo "$(GUM_DEVKIT_VERSION)" | sed -E 's/^[^.]*\.//; s/\..*//')
198-
199-
# Evaluate the version condition in a separate shell call
200-
IS_GUM_16_6_PLUS := $(shell \
201-
if (( $(GUM_VERSION_MAJOR) > 16 || ( $(GUM_VERSION_MAJOR) == 16 && $(GUM_VERSION_MINOR) >= 6 ) )); then \
202-
echo 1; \
203-
fi)
204-
else
205-
IS_GUM_16_6_PLUS := $(shell VERSION="$(GUM_DEVKIT_VERSION)"; \
206-
MAJOR=$${VERSION%%.*}; \
207-
MINOR=$${VERSION#*.}; MINOR=$${MINOR%%.*}; \
208-
if [ $$MAJOR -gt 16 ] || { [ $$MAJOR -eq 16 ] && [ $$MINOR -ge 6 ]; }; then \
209-
echo 1; \
210-
fi)
211-
endif
212-
213-
CFLAGS += $(if $(IS_GUM_16_6_PLUS),-DGUM_16_6_PLUS)
214-
215194
GUM_DEVKIT_TARBALL:=$(FRIDA_BUILD_DIR)$(GUM_DEVKIT_FILENAME)
216-
ifdef FRIDA_SOURCE
217-
GUM_DEVIT_LIBRARY=$(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/lib/libfrida-gumjs-1.0.a
218-
else
219-
GUM_DEVIT_LIBRARY=$(FRIDA_BUILD_DIR)libfrida-gumjs.a
220-
endif
221195
GUM_DEVIT_HEADER=$(FRIDA_BUILD_DIR)frida-gumjs.h
196+
GUM_DEVIT_LIBRARY=$(FRIDA_BUILD_DIR)libfrida-gumjs.a
222197

223198
FRIDA_DIR:=$(PWD)build/frida-source/
224199
FRIDA_MAKEFILE:=$(FRIDA_DIR)Makefile
@@ -252,13 +227,13 @@ BIN2C_SRC:=$(PWD)util/bin2c.c
252227
all: $(FRIDA_TRACE) $(FRIDA_TRACE_LIB 341A ) $(AFLPP_FRIDA_DRIVER_HOOK_OBJ) $(AFLPP_QEMU_DRIVER_HOOK_OBJ) $(ADDR_BIN)
253228

254229
32:
255-
CFLAGS="-m32" LDFLAGS="-m32" ARCH="x86" make all
230+
XTOOLS_HOST=i686-linux-gnu CFLAGS="-m32" LDFLAGS="-m32" ARCH="x86" make all
256231

257232
arm:
258-
CFLAGS="-marm" LDFLAGS="-marm" ARCH="armhf" TARGET_CC=arm-linux-gnueabihf-gcc TARGET_CXX=arm-linux-gnueabihf-g++ make all
233+
XTOOLS_HOST=arm-linux-gnueabihf CFLAGS="-marm" LDFLAGS="-marm" ARCH="armhf" TARGET_CC=arm-linux-gnueabihf-gcc TARGET_CXX=arm-linux-gnueabihf-g++ make all
259234

260235
arm64:
261-
ARCH="arm64" TARGET_CC=aarch64-linux-gnu-gcc TARGET_CXX=aarch64-linux-gnu-g++ make all
236+
XTOOLS_HOST=aarch64-linux-gnu ARCH="arm64" TARGET_CC=aarch64-linux-gnu-gcc TARGET_CXX=aarch64-linux-gnu-g++ make all
262237

263238
$(BUILD_DIR):
264239
mkdir -p $(BUILD_DIR)
@@ -271,114 +246,29 @@ $(OBJ_DIR): | $(BUILD_DIR)
271246
$(FRIDA_BUILD_DIR): | $(BUILD_DIR)
272247
mkdir -p $@
273248

249+
#TODO Set architecture
274250
ifdef FRIDA_SOURCE
275251
$(FRIDA_MAKEFILE): | $(BUILD_DIR)
276-
git clone --recursive https://github.com/frida/frida.git $(FRIDA_DIR)
252+
git clone https://github.com/frida/frida-gum.git $(FRIDA_DIR)
253+
cd $(FRIDA_DIR) && \
254+
./configure \
255+
--host=$(XTOOLS_HOST) \
256+
--enable-tests \
257+
--enable-gumpp \
258+
--enable-gumjs \
259+
--with-devkits=gum,gumjs
277260

278261
.PHONY: $(GUM_DEVIT_LIBRARY)
279262

280-
$(GUM_DEVIT_LIBRARY): $(FRIDA_MAKEFILE)
281-
cd $(FRIDA_DIR) && make gum-$(OS)$(GUM_ARCH) FRIDA_V8=disabled
282-
283-
$(GUM_DEVIT_HEADER): $(FRIDA_MAKEFILE) | $(FRIDA_BUILD_DIR)
284-
echo "#include <stdio.h>" > $@
285-
echo "#include <unistd.h>" >> $@
286-
echo "#include <gum/gumreturnaddress.h>" >> $@
287-
echo "#include <gum/gumbacktracer.h>" >> $@
288-
echo "#include <gum/gumsymbolutil.h>" >> $@
289-
echo "#include <gum/gumstalker.h>" >> $@
290-
echo "#include <gum/gumlibc.h>" >> $@
291-
echo "#include <gumjs/gumscriptbackend.h>" >> $@
292-
293-
ifeq "$(OS)" "macos"
294-
295-
CFLAGS+=-I $(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/include/frida-1.0 \
296-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
297-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
298-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/capstone/ \
299-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/ \
300-
301-
TRACE_LDFLAGS+=$(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/lib/libfrida-gum-1.0.a \
302-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsoup-2.4.a \
303-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsqlite3.a \
304-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libtcc.a \
305-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libjson-glib-1.0.a \
306-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libquickjs.a \
307-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libcapstone.a \
308-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libffi.a \
309-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgio-2.0.a \
310-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgobject-2.0.a \
311-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libglib-2.0.a \
312-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/liblzma.a \
313-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libz.a \
314-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libiconv.a \
315-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libv8-8.0.a \
316-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgmodule-2.0.a \
317-
318-
else ifeq "$(ARCH)" "arm64"
319-
320-
CFLAGS+=-I $(FRIDA_DIR)build/$(OS)-$(ARCH)/include/frida-1.0 \
321-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
322-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
323-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/capstone/ \
324-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/ \
263+
$(GUM_DEVIT_LIBRARY): $(FRIDA_MAKEFILE) | $(FRIDA_BUILD_DIR)
264+
echo $(GUM_DEVIT_LIBRARY) $(FRIDA_MAKEFILE) $(FRIDA_BUILD_DIR)
265+
cd $(FRIDA_DIR) && make FRIDA_V8=disabled
266+
cp $(FRIDA_DIR)build/bindings/gumjs/devkit/frida-gumjs.h $(GUM_DEVIT_HEADER)
267+
cp $(FRIDA_DIR)build/bindings/gumjs/devkit/libfrida-gumjs.a $(GUM_DEVIT_LIBRARY)
325268

326269
ifeq "$(OS)" "android"
327270
CFLAGS += -static-libstdc++
328271
endif
329-
else
330-
CFLAGS+=-I $(FRIDA_DIR)build/$(OS)-$(ARCH)/include/frida-1.0 \
331-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
332-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
333-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/capstone/ \
334-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/ \
335-
336-
endif
337-
338-
TRACE_LDFLAGS+=$(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/lib/libfrida-gum-1.0.a \
339-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsoup-2.4.a \
340-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsqlite3.a \
341-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libtcc.a \
342-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libjson-glib-1.0.a \
343-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libquickjs.a \
344-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libcapstone.a \
345-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libunwind.a \
346-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libffi.a \
347-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libdwarf.a \
348-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libelf.a \
349-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgio-2.0.a \
350-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgobject-2.0.a \
351-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libglib-2.0.a \
352-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/liblzma.a \
353-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libz.a \
354-
355-
CFLAGS+=-I $(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/include/frida-1.0 \
356-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/glib-2.0/ \
357-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/glib-2.0/include/ \
358-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/capstone/ \
359-
-I $(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/include/json-glib-1.0/
360-
361-
ifeq "$(OS)" "android"
362-
CFLAGS += -static-libstdc++
363-
endif
364-
365-
TRACE_LDFLAGS+=$(FRIDA_DIR)build/frida-$(OS)-$(ARCH)/lib/libfrida-gum-1.0.a \
366-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsoup-2.4.a \
367-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libsqlite3.a \
368-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libtcc.a \
369-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libjson-glib-1.0.a \
370-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libquickjs.a \
371-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libcapstone.a \
372-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libunwind.a \
373-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libffi.a \
374-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libdwarf.a \
375-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libelf.a \
376-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgio-2.0.a \
377-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libgobject-2.0.a \
378-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libglib-2.0.a \
379-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/liblzma.a \
380-
$(FRIDA_DIR)build/sdk-$(OS)-$(ARCH)/lib/libz.a \
381-
382272

383273
else
384274
$(GUM_DEVKIT_TARBALL): | $(FRIDA_BUILD_DIR)

frida_mode/src/asan/asan.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ void asan_init(void) {
2727

2828
}
2929

30-
#ifdef GUM_16_6_PLUS
3130
static gboolean asan_exclude_module(GumModule *module, gpointer user_data) {
3231

3332
gchar *symbol_name = (gchar *)user_data;
@@ -47,32 +46,6 @@ static gboolean asan_exclude_module(GumModule *module, gpointer user_data) {
4746

4847
}
4948

50-
#else
51-
static gboolean asan_exclude_module(const GumModuleDetails *details,
52-
gpointer user_data) {
53-
54-
gchar *symbol_name = (gchar *)user_data;
55-
GumAddress address;
56-
57-
address = gum_module_find_export_by_name(details->name, symbol_name);
58-
if (address == 0) { return TRUE; }
59-
60-
/* If the reported address of the symbol is outside of the range of the module
61-
* then ignore it */
62-
if (address < details->range->base_address) { return TRUE; }
63-
if (address > (details->range->base_address + details->range->size)) {
64-
65-
return TRUE;
66-
67-
}
68-
69-
ranges_add_exclude((GumMemoryRange *)details->range);
70-
return FALSE;
71-
72-
}
73-
74-
#endif
75-
7649
void asan_exclude_module_by_symbol(gchar *symbol_name) {
7750

7851
gum_process_enumerate_modules(asan_exclude_module, symbol_name);

frida_mode/src/js/api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,5 +382,5 @@ Afl.jsApiSetTraceable = Afl.jsApiGetFunction("js_api_set_traceable", "void", [])
382382
Afl.jsApiSetVerbose = Afl.jsApiGetFunction("js_api_set_verbose", "void", []);
383383
Afl.jsApiWrite = new NativeFunction(
384384
/* tslint:disable-next-line:no-null-keyword */
385-
Module.getExportByName(null, "write"), "int", ["int", "pointer", "int"]);
385+
Module.getGlobalExportByName("write"), "int", ["int", "pointer", "int"]);
386386
Afl.jsApiIjonSet = Afl.jsApiGetFunction("js_api_ijon_set", "void", ["uint32"]);

frida_mode/src/lib/lib.c

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ typedef struct {
3939
static guint64 text_base = 0;
4040
static guint64 text_limit = 0;
4141

42-
#ifdef GUM_16_6_PLUS
4342
static gboolean lib_find_exe(GumModule *module, gpointer user_data) {
4443

4544
lib_details_t *lib_details = (lib_details_t *)user_data;
@@ -57,24 +56,6 @@ static gboolean lib_find_exe(GumModule *module, gpointer user_data) {
5756

5857
}
5958

60-
#else
61-
static gboolean lib_find_exe(const GumModuleDetails *details,
62-
gpointer user_data) {
63-
64-
lib_details_t *lib_details = (lib_details_t *)user_data;
65-
66-
strncpy(lib_details->name, details->name, PATH_MAX);
67-
strncpy(lib_details->path, details->path, PATH_MAX);
68-
lib_details->name[PATH_MAX] = '\0';
69-
lib_details->path[PATH_MAX] = '\0';
70-
lib_details->base_address = details->range->base_address;
71-
lib_details->size = details->range->size;
72-
return FALSE;
73-
74-
}
75-
76-
#endif
77-
7859
static void lib_validate_hdr(Elf_Ehdr *hdr) {
7960

8061
if (hdr->e_ident[0] != ELFMAG0) FFATAL("Invalid e_ident[0]");

frida_mode/src/lib/lib_apple.c

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ extern void gum_darwin_enumerate_modules(mach_port_t task,
1212
static guint64 text_base = 0;
1313
static guint64 text_limit = 0;
1414

15-
#ifdef GUM_16_6_PLUS
1615
static gboolean lib_get_main_module(GumModule *module, gpointer user_data) {
1716

1817
GumDarwinModule **ret = (GumDarwinModule **)user_data;
@@ -30,25 +29,6 @@ static gboolean lib_get_main_module(GumModule *module, gpointer user_data) {
3029

3130
}
3231

33-
#else
34-
static gboolean lib_get_main_module(const GumModuleDetails *details,
35-
gpointer user_data) {
36-
37-
GumDarwinModule **ret = (GumDarwinModule **)user_data;
38-
GumDarwinModule *module = gum_darwin_module_new_from_memory(
39-
details->path, mach_task_self(), details->range->base_address,
40-
GUM_DARWIN_MODULE_FLAGS_NONE, NULL);
41-
42-
FVERBOSE("Found main module: %s", module->name);
43-
44-
*ret = module;
45-
46-
return FALSE;
47-
48-
}
49-
50-
#endif
51-
5232
gboolean lib_get_text_section(const GumDarwinSectionDetails *details,
5333
gpointer user_data) {
5434

frida_mode/src/module.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ gboolean found_range(const GumRangeDetails *details, gpointer user_data) {
4646
static int on_dlclose(void *handle) {
4747

4848
GArray *ranges = NULL;
49+
GumModule *module = NULL;
4950
struct link_map *lm = NULL;
5051
gum_range_t *range = NULL;
5152
GumAddress base;
@@ -61,8 +62,12 @@ static int on_dlclose(void *handle) {
6162
FVERBOSE("on_dlclose: %s", lm->l_name);
6263

6364
ranges = g_array_new(FALSE, TRUE, sizeof(gum_range_t));
64-
gum_module_enumerate_ranges(lm->l_name, GUM_PAGE_EXECUTE, found_range,
65-
ranges);
65+
66+
module = gum_process_find_module_by_name(lm->l_name);
67+
68+
if (module == NULL) { FATAL("Failed to find module: %s", lm->l_name); }
69+
70+
gum_module_enumerate_ranges(module, GUM_PAGE_EXECUTE, found_range, ranges);
6671

6772
int ret = dlclose(handle);
6873
if (ret != 0) {

frida_mode/src/prefetch.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,8 @@ static int prefetch_on_fork(void) {
263263

264264
static void prefetch_hook_fork(void) {
265265

266-
#ifdef GUM_16_6_PLUS
267266
void *fork_addr =
268267
GSIZE_TO_POINTER(gum_module_find_global_export_by_name("fork"));
269-
#else
270-
void *fork_addr =
271-
GSIZE_TO_POINTER(gum_module_find_export_by_name(NULL, "fork"));
272-
#endif
273268
intercept_hook(fork_addr, prefetch_on_fork, NULL);
274269

275270
}

frida_mode/src/ranges.c

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ static void convert_address_token(gchar *token, GumMemoryRange *range) {
116116

117117
}
118118

119-
#ifdef GUM_16_6_PLUS
120119
static gboolean convert_name_token_for_module(GumModule *module,
121120
gpointer user_data) {
122121

@@ -138,28 +137,6 @@ static gboolean convert_name_token_for_module(GumModule *module,
138137

139138
}
140139

141-
#else
142-
static gboolean convert_name_token_for_module(const GumModuleDetails *details,
143-
gpointer user_data) {
144-
145-
convert_name_ctx_t *ctx = (convert_name_ctx_t *)user_data;
146-
if (details->path == NULL) { return true; };
147-
148-
if (!g_str_has_suffix(details->path, ctx->suffix)) { return true; };
149-
150-
FVERBOSE("Found module - prefix: %s, 0x%016" G_GINT64_MODIFIER
151-
"x-0x%016" G_GINT64_MODIFIER "x %s",
152-
ctx->suffix, details->range->base_address,
153-
details->range->base_address + details->range->size, details->path);
154-
155-
*ctx->range = *details->range;
156-
ctx->done = true;
157-
return false;
158-
159-
}
160-
161-
#endif
162-
163140
static void convert_name_token(gchar *token, GumMemoryRange *range) {
164141

165142
gchar *suffix = g_strconcat("/", token, NULL);

0 commit comments

Comments
 (0)
0