@@ -15,6 +15,7 @@ JS_OBJ:=$(BUILD_DIR)api.o
15
15
SOURCES: =$(wildcard $(SRC_DIR ) ** /* .c) $(wildcard $(SRC_DIR ) * .c)
16
16
OBJS: =$(foreach src,$(SOURCES ) ,$(OBJ_DIR )$(notdir $(patsubst % .c, % .o, $(src ) ) ) )
17
17
18
+ XTOOLS_HOST? =x86_64-linux-gnu
18
19
TARGET_CC? =$(CC )
19
20
TARGET_CXX? =$(CXX )
20
21
HOST_CC? =$(CC )
@@ -186,39 +187,13 @@ ifndef OS
186
187
$(error "Operating system unsupported")
187
188
endif
188
189
189
- GUM_DEVKIT_VERSION =16.1.11
190
+ GUM_DEVKIT_VERSION =17.0.7
190
191
GUM_DEVKIT_FILENAME =frida-gumjs-devkit-$(GUM_DEVKIT_VERSION ) -$(OS ) -$(ARCH ) .tar.xz
191
192
GUM_DEVKIT_URL ="https://github.com/frida/frida/releases/download/$(GUM_DEVKIT_VERSION ) /$(GUM_DEVKIT_FILENAME ) "
192
193
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
-
215
194
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
221
195
GUM_DEVIT_HEADER =$(FRIDA_BUILD_DIR ) frida-gumjs.h
196
+ GUM_DEVIT_LIBRARY =$(FRIDA_BUILD_DIR ) libfrida-gumjs.a
222
197
223
198
FRIDA_DIR: =$(PWD ) build/frida-source/
224
199
FRIDA_MAKEFILE: =$(FRIDA_DIR ) Makefile
@@ -252,13 +227,13 @@ BIN2C_SRC:=$(PWD)util/bin2c.c
252
227
all : $(FRIDA_TRACE ) $(FRIDA_TRACE_LIB
341A
) $(AFLPP_FRIDA_DRIVER_HOOK_OBJ ) $(AFLPP_QEMU_DRIVER_HOOK_OBJ ) $(ADDR_BIN )
253
228
254
229
32 :
255
- CFLAGS=" -m32" LDFLAGS=" -m32" ARCH=" x86" make all
230
+ XTOOLS_HOST=i686-linux-gnu CFLAGS=" -m32" LDFLAGS=" -m32" ARCH=" x86" make all
256
231
257
232
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
259
234
260
235
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
262
237
263
238
$(BUILD_DIR ) :
264
239
mkdir -p $(BUILD_DIR )
@@ -271,114 +246,29 @@ $(OBJ_DIR): | $(BUILD_DIR)
271
246
$(FRIDA_BUILD_DIR ) : | $(BUILD_DIR )
272
247
mkdir -p $@
273
248
249
+ # TODO Set architecture
274
250
ifdef FRIDA_SOURCE
275
251
$(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
277
260
278
261
.PHONY : $(GUM_DEVIT_LIBRARY )
279
262
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 )
325
268
326
269
ifeq "$(OS ) " "android"
327
270
CFLAGS += -static-libstdc++
328
271
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
10000
- -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
-
382
272
383
273
else
384
274
$(GUM_DEVKIT_TARBALL ) : | $(FRIDA_BUILD_DIR )
0 commit comments