Seregon/Hermes

Hermes/Dyforge is a program written in c++ allows you to inject a dll that can analyze all processes in a program, can be used for mod and reverse engeneering

C/3.8 KB/No license
DyMain/CMakeLists.txt
Hermes / DyMain / CMakeLists.txt
1cmake_minimum_required(VERSION 3.10)
2 
3# Nome del progetto
4project(DyMain)
5 
6# Imposta il C++ standard
7set(CMAKE_CXX_STANDARD 17)
8set(CMAKE_CXX_STANDARD_REQUIRED ON)
9 
10# Opzioni di compilazione
11option(BUILD_SHARED_LIBS "Build shared libraries" ON)
12 
13# Directory di output
14set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
15set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
16set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
17 
18# Directory delle librerie
19set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib")
20set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
21 
22# Configura vcpkg
23if(WIN32)
24 if(DEFINED ENV{VCPKG_ROOT})
25 set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "")
26 set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};$ENV{VCPKG_ROOT}/installed/x64-windows")
27 else()
28 message(WARNING "VCPKG_ROOT non impostato. Alcune librerie potrebbero non essere trovate.")
29 endif()
30endif()
31 
32# Trova la libreria Capstone
33find_library(CAPSTONE_LIBRARY
34 NAMES capstone
35 PATHS
36 ${LIB_DIR}
37 "${CMAKE_CURRENT_SOURCE_DIR}/lib"
38 NO_DEFAULT_PATH
39)
40 
41find_path(CAPSTONE_INCLUDE_DIR
42 NAMES capstone/capstone.h
43 PATHS
44 ${INCLUDE_DIR}
45 "${CMAKE_CURRENT_SOURCE_DIR}/include"
46 NO_DEFAULT_PATH
47)
48 
49if(NOT CAPSTONE_LIBRARY OR NOT CAPSTONE_INCLUDE_DIR)
50 message(FATAL_ERROR "Capstone non trovato. Verifica che capstone.lib sia presente in ${LIB_DIR} e capstone.h in ${INCLUDE_DIR}")
51endif()
52 
53# Trova Microsoft Detours
54find_library(DETOURS_LIBRARY
55 NAMES detours
56 PATHS
57 ${LIB_DIR}
58 "${CMAKE_CURRENT_SOURCE_DIR}/lib"
59 NO_DEFAULT_PATH
60)
61 
62find_path(DETOURS_INCLUDE_DIR
63 NAMES detours.h
64 PATHS
65 ${INCLUDE_DIR}
66 "${CMAKE_CURRENT_SOURCE_DIR}/include"
67 NO_DEFAULT_PATH
68)
69 
70if(NOT DETOURS_LIBRARY OR NOT DETOURS_INCLUDE_DIR)
71 message(FATAL_ERROR "Microsoft Detours non trovato. Verifica che detours.lib sia presente in ${LIB_DIR} e detours.h in ${INCLUDE_DIR}")
72endif()
73 
74# Aggiungi i file sorgente
75set(SOURCES
76 dll_main.cpp
77 mongoose.c
78)
79 
80# Aggiungi le directory di include
81include_directories(
82 ${CMAKE_CURRENT_SOURCE_DIR}/include
83 ${CAPSTONE_INCLUDE_DIR}
84 ${DETOURS_INCLUDE_DIR}
85)
86 
87# Crea la libreria condivisa
88add_library(${PROJECT_NAME} SHARED ${SOURCES})
89 
90# Definisci il simbolo di esportazione
91target_compile_definitions(${PROJECT_NAME} PRIVATE
92 "BUILDING_DLL"
93 "CAPSTONE_USE_SYS_DYN_MEM"
94)
95 
96# Collega le librerie necessarie
97target_link_libraries(${PROJECT_NAME} PRIVATE
98 ws2_32
99 ${CAPSTONE_LIBRARY}
100 ${DETOURS_LIBRARY}
101)
102 
103# Installa la libreria
104install(TARGETS ${PROJECT_NAME}
105 RUNTIME DESTINATION bin
106 LIBRARY DESTINATION lib
107 ARCHIVE DESTINATION lib
108)
109 
110# Installa gli header
111install(DIRECTORY include/
112 DESTINATION include
113 FILES_MATCHING PATTERN "*.h"
114)