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
| 1 | cmake_minimum_required(VERSION 3.10) |
| 2 | |
| 3 | # Nome del progetto |
| 4 | project(DyMain) |
| 5 | |
| 6 | # Imposta il C++ standard |
| 7 | set(CMAKE_CXX_STANDARD 17) |
| 8 | set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 9 | |
| 10 | # Opzioni di compilazione |
| 11 | option(BUILD_SHARED_LIBS "Build shared libraries" ON) |
| 12 | |
| 13 | # Directory di output |
| 14 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) |
| 15 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 16 | set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
| 17 | |
| 18 | # Directory delle librerie |
| 19 | set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib") |
| 20 | set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") |
| 21 | |
| 22 | # Configura vcpkg |
| 23 | if(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() |
| 30 | endif() |
| 31 | |
| 32 | # Trova la libreria Capstone |
| 33 | find_library(CAPSTONE_LIBRARY |
| 34 | NAMES capstone |
| 35 | PATHS |
| 36 | ${LIB_DIR} |
| 37 | "${CMAKE_CURRENT_SOURCE_DIR}/lib" |
| 38 | NO_DEFAULT_PATH |
| 39 | ) |
| 40 | |
| 41 | find_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 | |
| 49 | if(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}") |
| 51 | endif() |
| 52 | |
| 53 | # Trova Microsoft Detours |
| 54 | find_library(DETOURS_LIBRARY |
| 55 | NAMES detours |
| 56 | PATHS |
| 57 | ${LIB_DIR} |
| 58 | "${CMAKE_CURRENT_SOURCE_DIR}/lib" |
| 59 | NO_DEFAULT_PATH |
| 60 | ) |
| 61 | |
| 62 | find_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 | |
| 70 | if(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}") |
| 72 | endif() |
| 73 | |
| 74 | # Aggiungi i file sorgente |
| 75 | set(SOURCES |
| 76 | dll_main.cpp |
| 77 | mongoose.c |
| 78 | ) |
| 79 | |
| 80 | # Aggiungi le directory di include |
| 81 | include_directories( |
| 82 | ${CMAKE_CURRENT_SOURCE_DIR}/include |
| 83 | ${CAPSTONE_INCLUDE_DIR} |
| 84 | ${DETOURS_INCLUDE_DIR} |
| 85 | ) |
| 86 | |
| 87 | # Crea la libreria condivisa |
| 88 | add_library(${PROJECT_NAME} SHARED ${SOURCES}) |
| 89 | |
| 90 | # Definisci il simbolo di esportazione |
| 91 | target_compile_definitions(${PROJECT_NAME} PRIVATE |
| 92 | "BUILDING_DLL" |
| 93 | "CAPSTONE_USE_SYS_DYN_MEM" |
| 94 | ) |
| 95 | |
| 96 | # Collega le librerie necessarie |
| 97 | target_link_libraries(${PROJECT_NAME} PRIVATE |
| 98 | ws2_32 |
| 99 | ${CAPSTONE_LIBRARY} |
| 100 | ${DETOURS_LIBRARY} |
| 101 | ) |
| 102 | |
| 103 | # Installa la libreria |
| 104 | install(TARGETS ${PROJECT_NAME} |
| 105 | RUNTIME DESTINATION bin |
| 106 | LIBRARY DESTINATION lib |
| 107 | ARCHIVE DESTINATION lib |
| 108 | ) |
| 109 | |
| 110 | # Installa gli header |
| 111 | install(DIRECTORY include/ |
| 112 | DESTINATION include |
| 113 | FILES_MATCHING PATTERN "*.h" |
| 114 | ) |