-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathCMakeLists.txt
107 lines (100 loc) · 3.96 KB
/
CMakeLists.txt
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
if (NOT HIKARI_BUILD_IN_TREE)
project(LLVMObfuscation)
cmake_minimum_required(VERSION 3.4.3)
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
add_library(LLVMObfuscationCommon STATIC
src/Passes/FunctionCallObfuscate.cpp
src/CryptoUtils.cpp
src/Passes/BogusControlFlow.cpp
src/Passes/Substitution.cpp
src/Passes/Flattening.cpp
src/Utils.cpp
src/Passes/SplitBasicBlocks.cpp
src/Passes/AntiClassDump.cpp
src/Passes/StringEncryption.cpp
src/Passes/IndirectBranch.cpp
src/Passes/FunctionWrapper.cpp
src/PassScheduler.cpp
src/LegacyLowerSwitch.cpp
)
target_include_directories(LLVMObfuscationCommon PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
execute_process(
COMMAND git log -1 --format=%H
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE HIKARI_GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
target_compile_definitions(LLVMObfuscationCommon PRIVATE "-DGIT_COMMIT_HASH=\"${HIKARI_GIT_COMMIT_HASH}\"")
add_library(LLVMObfuscation SHARED
${CMAKE_CURRENT_LIST_DIR}/src/AddPasses/Register_Passes.cpp
)
target_link_libraries(LLVMObfuscation LLVMObfuscationCommon)
target_include_directories(LLVMObfuscation PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
else()
add_llvm_library(LLVMObfuscationCommon
src/Passes/FunctionCallObfuscate.cpp
src/CryptoUtils.cpp
src/Passes/BogusControlFlow.cpp
src/Passes/Substitution.cpp
src/Passes/Flattening.cpp
src/Utils.cpp
src/Passes/SplitBasicBlocks.cpp
src/Passes/AntiClassDump.cpp
src/Passes/StringEncryption.cpp
src/Passes/IndirectBranch.cpp
src/Passes/FunctionWrapper.cpp
src/PassScheduler.cpp
src/LegacyLowerSwitch.cpp
${CMAKE_CURRENT_LIST_DIR}/src/AddPasses/Register_Passes.cpp
DEPENDS
intrinsics_gen
)
target_include_directories(LLVMObfuscationCommon PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
execute_process(
COMMAND git log -1 --format=%H
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE HIKARI_GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
target_compile_definitions(LLVMObfuscationCommon PRIVATE "-DGIT_COMMIT_HASH=\"${HIKARI_GIT_COMMIT_HASH}\"")
endif()
if(APPLE)
SET(CMAKE_BUILD_WITH_INSTALL_NAME_DIR TRUE)
set(CMAKE_CXX_FLAGS "-std=c++14")
execute_process(
COMMAND cp ${CMAKE_CURRENT_LIST_DIR}/substitute/libsubstitute.dylib .
)
# LLVMObfuscationDeps handling
add_library(LLVMObfuscationDeps SHARED
${CMAKE_CURRENT_LIST_DIR}/src/Dummy.cpp
)
target_link_options(LLVMObfuscationDeps PRIVATE -undefined PRIVATE dynamic_lookup PRIVATE -all_load)
target_link_libraries(LLVMObfuscationDeps PRIVATE LLVMCore LLVMSupport)
# LLVMObfuscation
target_link_options(LLVMObfuscation PRIVATE -undefined PRIVATE dynamic_lookup PRIVATE -flat_namespace)
# LLVMObfuscation hooking mode
add_library(LLVMObfuscationHook SHARED
${CMAKE_CURRENT_LIST_DIR}/src/AddPasses/Loader_Hook.cpp
)
target_link_options(LLVMObfuscationHook PRIVATE -undefined PRIVATE dynamic_lookup PRIVATE -flat_namespace)
target_include_directories(LLVMObfuscationHook PRIVATE ${CMAKE_CURRENT_LIST_DIR}/substitute)
target_include_directories(LLVMObfuscationHook PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
target_link_directories(LLVMObfuscationHook PRIVATE ${CMAKE_CURRENT_LIST_DIR}/substitute)
target_link_libraries(LLVMObfuscationHook LLVMObfuscationDeps LLVMObfuscationCommon substitute)
add_custom_target(install_name_tool_substitute ALL
COMMAND install_name_tool -change @executable_path/libsubstitute.dylib @loader_path/libsubstitute.dylib ./libLLVMObfuscationHook.dylib
DEPENDS LLVMObfuscationHook
)
add_custom_target(install_name_tool_deps ALL
COMMAND install_name_tool -change @rpath/libLLVMObfuscationDeps.dylib @loader_path/libLLVMObfuscationDeps.dylib ./libLLVMObfuscationHook.dylib
DEPENDS LLVMObfuscationHook
)
else()
endif(APPLE)
if(UNIX AND NOT APPLE)
set(CMAKE_CXX_FLAGS "-fPIC")
endif()