-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfrida.cmake
88 lines (76 loc) · 3.95 KB
/
frida.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# add frida as external project
set(FRIDA_DOWNLOAD_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/third_party/frida)
set(FRIDA_DOWNLOAD_URL_PREFIX "" CACHE STRING "The prefix added to the frida download url. For example, https://ghproxy.com/")
message(STATUS "System Name: ${CMAKE_SYSTEM_NAME}")
message(STATUS "System Version: ${CMAKE_SYSTEM_VERSION}")
message(STATUS "System Processor: ${CMAKE_SYSTEM_PROCESSOR}")
set(FRIDA_OS_ARCH_RAW "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
string(TOLOWER ${FRIDA_OS_ARCH_RAW} FRIDA_OS_ARCH)
set(FRIDA_VERSION "16.1.2")
message(STATUS "Using frida: arch=${FRIDA_OS_ARCH}, version=${FRIDA_VERSION}")
if(${FRIDA_OS_ARCH} STREQUAL "linux-x86_64")
set(FRIDA_CORE_DEVKIT_SHA256 "45a7e47c4181662611ce89c2891e5327676aaaf9e53ee205ef98f8d58a312a00")
set(FRIDA_GUM_DEVKIT_SHA256 "c20af106e089bbbdb9ed4d5dfc63ce9ae8f6643bbb76a6b0afb196726d9a241a")
elseif(${FRIDA_OS_ARCH} STREQUAL "linux-aarch64")
set(FRIDA_CORE_DEVKIT_SHA256 "38cfb73cf29c6a09918a86b342dc5eab59d311640ea2da5c5904f16cde9e1430")
set(FRIDA_GUM_DEVKIT_SHA256 "b8cdf63bfb9771320439b21fc97482c90bc230f95ae4b26e42a02393e6e85804")
# Cmake uses aarch64, but frida uses arm64
set(FRIDA_OS_ARCH "linux-arm64")
elseif(${FRIDA_OS_ARCH} MATCHES "linux-arm.*")
set(FRIDA_CORE_DEVKIT_SHA256 "b9b4af5f75d7261ed493fd91b97f2b17345c1cde31622e1250e7d78cd0ff2356")
set(FRIDA_GUM_DEVKIT_SHA256 "6b5963eb740062aec6c22c46ec2944a68006f72d290f714fb747ffe75b448a60")
# Frida only has armhf builds..
set(FRIDA_OS_ARCH "linux-armhf")
elseif(${FRIDA_OS_ARCH} MATCHES "darwin-arm.*")
set(FRIDA_CORE_DEVKIT_SHA256 "50aea2d5dfff000ed1f1dc1fdb2db67a02e4c4f44e782fa311f8afa31df327b6")
set(FRIDA_GUM_DEVKIT_SHA256 "b40c08bebd6958d41d91b7819171a457448cccad5faf417c9b4901be54b6c633")
# for macos-arm m* chip series
set(FRIDA_OS_ARCH "macos-arm64e")
else()
message(FATAL_ERROR "Unsupported frida arch ${FRIDA_OS_ARCH}")
endif()
set(FRIDA_CORE_FILE_NAME "frida-core-devkit-${FRIDA_VERSION}-${FRIDA_OS_ARCH}.tar.xz")
set(FRIDA_GUM_FILE_NAME "frida-gum-devkit-${FRIDA_VERSION}-${FRIDA_OS_ARCH}.tar.xz")
set(FRIDA_CORE_DEVKIT_URL "${FRIDA_DOWNLOAD_URL_PREFIX}https://github.com/frida/frida/releases/download/${FRIDA_VERSION}/${FRIDA_CORE_FILE_NAME}")
set(FRIDA_GUM_DEVKIT_URL "${FRIDA_DOWNLOAD_URL_PREFIX}https://github.com/frida/frida/releases/download/${FRIDA_VERSION}/${FRIDA_GUM_FILE_NAME}")
set(FRIDA_CORE_DEVKIT_PATH ${FRIDA_DOWNLOAD_LOCATION}/${FRIDA_CORE_FILE_NAME})
set(FRIDA_GUM_DEVKIT_PATH ${FRIDA_DOWNLOAD_LOCATION}/${FRIDA_GUM_FILE_NAME})
set(FRIDA_CORE_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/FridaCore-prefix/src/FridaCore)
set(FRIDA_GUM_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/FridaGum-prefix/src/FridaGum)
# if file exists, skip download
if(NOT EXISTS ${FRIDA_CORE_DEVKIT_PATH})
message(STATUS "Downloading Frida Core Devkit")
set(FRIDA_CORE_DOWNLOAD_URL ${FRIDA_CORE_DEVKIT_URL})
else()
message(STATUS "Frida Core Devkit already downloaded")
set(FRIDA_CORE_DOWNLOAD_URL ${FRIDA_CORE_DEVKIT_PATH})
endif()
# if file exists, skip download
if(NOT EXISTS ${FRIDA_GUM_DEVKIT_PATH})
message(STATUS "Downloading Frida GUM Devkit")
set(FRIDA_GUM_DOWNLOAD_URL ${FRIDA_GUM_DEVKIT_URL})
else()
message(STATUS "Frida GUM Devkit already downloaded")
set(FRIDA_GUM_DOWNLOAD_URL ${FRIDA_GUM_DEVKIT_PATH})
endif()
message(STATUS "Downloading FridaCore from ${FRIDA_CORE_DOWNLOAD_URL}")
include(ExternalProject)
ExternalProject_Add(FridaCore
URL ${FRIDA_CORE_DOWNLOAD_URL}
DOWNLOAD_DIR ${FRIDA_DOWNLOAD_LOCATION}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
BUILD_BYPRODUCTS ${FRIDA_CORE_INSTALL_DIR}/libfrida-core.a
URL_HASH SHA256=${FRIDA_CORE_DEVKIT_SHA256}
)
message(STATUS "Downloading FridaGum from ${FRIDA_GUM_DOWNLOAD_URL}")
ExternalProject_Add(FridaGum
URL ${FRIDA_GUM_DOWNLOAD_URL}
DOWNLOAD_DIR ${FRIDA_DOWNLOAD_LOCATION}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
BUILD_BYPRODUCTS ${FRIDA_GUM_INSTALL_DIR}/libfrida-gum.a
URL_HASH SHA256=${FRIDA_GUM_DEVKIT_SHA256}
)