diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..1ff0c423 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore index b5a68d43..047689a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,304 @@ -# C extensions -*.so - -# Unit test / coverage reports -.coverage -.tox -nosetests.xml - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject - -# vim -*~ -*.swp - -# Visual Studio build -*.ipch -.vs/ -output/ -include/ -*.exp -*.pdb -*.lib -*.dll -*.exe -obj.* -*.ipdb -*.iobj -*.tlog -*.log -*.obj -*.user -*.recipe -/bin.* -*.vcxproj.FileListAbsolute.txt -*.vcxprojAssemblyReference.cache +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +[Xx]64/ +[Xx]86/ +[Bb]uild/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ +.vscode/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml + +# TODO: Un-comment the next line if you do not want to checkin +# your web deploy settings because they may include unencrypted +# passwords +#*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# LightSwitch generated files +GeneratedArtifacts/ +ModelManifest.xml + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ +/src/presentations/web/wwwroot +/src/services/webjob/lucene +appsettings.Development.json + +# CMake +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +build/ +build.*/ + +# C extensions +*.so + +# Unit test / coverage reports +.coverage +.tox +nosetests.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# vim +*~ +*.swp + +# Visual Studio build +*.ipch +.vs/ +output/ +include/ +*.exp +*.pdb +*.lib +*.dll +*.exe +obj.* +*.ipdb +*.iobj +*.tlog +*.log +*.obj +*.user +*.recipe +/bin.* +*.vcxproj.FileListAbsolute.txt +*.vcxprojAssemblyReference.cache diff --git a/CMake.rst b/CMake.rst new file mode 100644 index 00000000..8cc31db9 --- /dev/null +++ b/CMake.rst @@ -0,0 +1,24 @@ +# CMake support + +CMake support for the main project has been done for a while, but some sample projects are excluded for some interop reasons. + +* cping +* disas +* dtest +* dumpe +* dumpi +* echo +* einst +* excep +* findfunc +* impmunge +* member +* opengl +* slept +* talloc +* tryman + +Other TODOs: + +* ARM/ARM64/IA64 support +* Improve Sample project debugging experiences \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..14db9b9a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,79 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(detours LANGUAGES C CXX) + +MACRO(GET_WIN32_WINNT version) + IF(WIN32 AND CMAKE_SYSTEM_VERSION) + SET(ver ${CMAKE_SYSTEM_VERSION}) + STRING(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver}) + STRING(REGEX MATCH "^([0-9]+)" verMajor ${ver}) + # Check for Windows 10, b/c we'll need to convert to hex 'A'. + IF("${verMajor}" MATCHES "10") + SET(verMajor "A") + STRING(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver}) + ENDIF("${verMajor}" MATCHES "10") + # Remove all remaining '.' characters. + STRING(REPLACE "." "" ver ${ver}) + # Prepend each digit with a zero. + STRING(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver}) + SET(${version} "0x${ver}") + ENDIF() +ENDMACRO() + +SET(LIB_MAJOR_VERSION "4") +SET(LIB_MINOR_VERSION "0") +SET(LIB_PATCH_VERSION "1") +SET(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VERSION}") + +# compile in release with debug info mode by default +IF(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) +ENDIF() + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/src") + +SET(DETOURS_COMPILE_DEFINITIONS) +SET(DETOURS_COMPILE_OPTIONS) + +IF(ENABLE_VERBOSELOG) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS ENABLE_VERBOSELOG) +ENDIF(ENABLE_VERBOSELOG) + +IF(WIN32) + IF(MSVC_VERSION GREATER_EQUAL 1700) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS DETOURS_CL_17_OR_NEWER) + ENDIF(MSVC_VERSION GREATER_EQUAL 1700) + GET_WIN32_WINNT(ver) + MESSAGE(STATUS "Windows OS Version: ${ver}") + IF(ver EQUAL 0x0700) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS _USING_V110_SDK71_) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS DETOURS_WIN_7) + ENDIF(ver EQUAL 0x0700) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS "_WIN32_WINNT=${ver}") +ELSE(WIN32) + MESSAGE(FATAL_ERROR "Only Win32 platforms are supported.") +ENDIF(WIN32) + +# TODO: What about Windows on ARM, or IA64 systems? +IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + LIST(APPEND DETOURS_COMPILE_DEFINITIONS "DETOURS_TARGET_PROCESSOR=X64") + LIST(APPEND DETOURS_COMPILE_DEFINITIONS DETOURS_X64) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS DETOURS_64BIT) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS _AMD64_) +ELSE("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + LIST(APPEND DETOURS_COMPILE_DEFINITIONS "DETOURS_TARGET_PROCESSOR=X86") + LIST(APPEND DETOURS_COMPILE_DEFINITIONS DETOURS_X86) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS _X86_) +ENDIF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + +LIST(APPEND DETOURS_COMPILE_DEFINITIONS "DETOURS_VERSION=0x4c0c1") +LIST(APPEND DETOURS_COMPILE_DEFINITIONS WIN32_LEAN_AND_MEAN) + +IF(MSVC) + LIST(APPEND DETOURS_COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS=1") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") +ELSE() + # TODO: Shall we support gcc with MinGW, Cygwin or Clang based building system on Windows? +ENDIF() + +ADD_SUBDIRECTORY("src") +ADD_SUBDIRECTORY("samples") diff --git a/cmake/FindCSharp.cmake b/cmake/FindCSharp.cmake new file mode 100644 index 00000000..2264e4d8 --- /dev/null +++ b/cmake/FindCSharp.cmake @@ -0,0 +1,87 @@ +## +## $Id$ +## It is part of the SolidOpt Copyright Policy (see Copyright.txt) +## For further details see the nearest License.txt +## + +## This file is based on the work of SimpleITK: +## https://github.com/SimpleITK/SimpleITK/blob/master/CMake/FindCSharp.cmake + +# +# A CMake Module for finding and using C# (.NET and Mono). +# +# The following variables are set: +# CSHARP_FOUND - set to ON if C# is found +# CSHARP_USE_FILE - the path to the C# use file +# CSHARP_TYPE - the type of the C# compiler (eg. ".NET" or "Mono") +# CSHARP_VERSION - the version of the C# compiler (eg. "v4.0" or "2.10.2") +# CSHARP_COMPILER - the path to the C# compiler executable (eg. "C:/Windows/Microsoft.NET/Framework/v4.0.30319/csc.exe" or "/usr/bin/gmcs") +# CSHARP_INTERPRETER - the path to interpreter needed to run CSharp executables +# CSHARP_PLATFORM - the C# target platform +# CSHARP_SDK_COMPILER - the SDK commandline switch (empty for .NET, for Mono eg. "/sdk:2" or "/sdk:4") +# CSHARP_FRAMEWORK_VERSION - the Framework version (1.0, 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, ...) +# CSHARP_FRAMEWORK_PROFILE - the Framework profile (empty, "Client", ...) +# + +# TODO: ADD ABILITY TO SELECT WHICH C# COMPILER eg. .NET or Mono (if both exist). For the moment, .NET is selected above Mono. + +# Make sure find package macros are included +include( FindPackageHandleStandardArgs ) + +unset( CSHARP_COMPILER CACHE ) +unset( CSHARP_INTERPRETER CACHE ) +unset( CSHARP_TYPE CACHE ) +unset( CSHARP_VERSION CACHE ) +unset( CSHARP_FOUND CACHE ) + +# By default use anycpu platform, allow the user to override +set( CSHARP_PLATFORM "anycpu" CACHE STRING "C# target platform: x86, x64, anycpu, or itanium" ) +if( NOT ${CSHARP_PLATFORM} MATCHES "x86|x64|anycpu|itanium" ) + message( FATAL_ERROR "The C# target platform '${CSHARP_PLATFORM}' is not valid. Please enter one of the following: x86, x64, anycpu, or itanium" ) +endif( ) + +if( WIN32 ) + find_package( DotNetFrameworkSdk ) + if( NOT CSHARP_DOTNET_FOUND ) + find_package( Mono ) + endif( ) +else( UNIX ) + find_package( Mono ) +endif( ) + +if( CSHARP_DOTNET_FOUND ) + set( CSHARP_TYPE ".NET" CACHE STRING "Using the .NET compiler" ) + set( CSHARP_VERSION ${CSHARP_DOTNET_VERSION} CACHE STRING "C# .NET compiler version" FORCE ) + set( CSHARP_COMPILER ${CSHARP_DOTNET_COMPILER_${CSHARP_DOTNET_VERSION}} CACHE STRING "Full path to .NET compiler" FORCE ) + set( CSHARP_INTERPRETER "" CACHE INTERNAL "Interpretor not required for .NET" FORCE ) + set( CSHARP_FRAMEWORK_VERSION "4.0" CACHE STRING "C# .NET SDK version (e.g. 1.0, 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, ...)" ) + set( CSHARP_FRAMEWORK_PROFILE "" CACHE STRING "C# .NET SDK profile (e.g. '', 'Client', ...)" ) +elseif( CSHARP_MONO_FOUND ) + set( CSHARP_TYPE "Mono" CACHE STRING "Using the Mono compiler" ) + set( CSHARP_VERSION ${CSHARP_MONO_VERSION} CACHE STRING "C# Mono compiler version" FORCE ) + set( CSHARP_COMPILER ${CSHARP_MONO_COMPILER_${CSHARP_MONO_VERSION}} CACHE STRING "Full path to Mono compiler" FORCE ) + set( CSHARP_INTERPRETER ${CSHARP_MONO_INTERPRETER_${CSHARP_MONO_VERSION}} CACHE INTERNAL "Full path to Mono interpretor" FORCE ) + if (${CSHARP_VERSION} VERSION_LESS "2.10") + set( CSHARP_SDK_COMPILER "" CACHE STRING "C# Mono SDK commandline switch (e.g. /sdk:2, /sdk:4, /sdk:5)" ) + else() + set( CSHARP_SDK_COMPILER "/sdk:4" CACHE STRING "C# Mono SDK commandline switch (e.g. /sdk:2, /sdk:4, /sdk:5)" ) + endif() + set( CSHARP_FRAMEWORK_VERSION "4.0" CACHE STRING "C# Mono SDK version (e.g. 1.0, 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, ...)" ) + set( CSHARP_FRAMEWORK_PROFILE "" CACHE STRING "C# Mono SDK profile (e.g. '', 'Client', ...)" ) +endif( ) + +# Handle WIN32 specific issues +if ( WIN32 ) + if ( CSHARP_COMPILER MATCHES "bat" ) + set( CSHARP_COMPILER "call ${CSHARP_COMPILER}" ) + endif ( ) +endif( ) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(CSharp DEFAULT_MSG CSHARP_TYPE CSHARP_VERSION CSHARP_COMPILER) + +mark_as_advanced( CSHARP_TYPE CSHARP_VERSION CSHARP_COMPILER CSHARP_INTERPRETER CSHARP_PLATFORM CSHARP_SDK_COMPILER CSHARP_FRAMEWORK_VERSION CSHARP_FRAMEWORK_PROFILE ) + +# Set the USE_FILE path +# http://public.kitware.com/Bug/view.php?id=7757 +get_filename_component( current_list_path ${CMAKE_CURRENT_LIST_FILE} PATH ) +set( CSHARP_USE_FILE ${current_list_path}/UseCSharp.cmake ) \ No newline at end of file diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt new file mode 100644 index 00000000..a8eee1dc --- /dev/null +++ b/samples/CMakeLists.txt @@ -0,0 +1,33 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(detours_samples LANGUAGES C CXX) + +ADD_SUBDIRECTORY("comeasy") +ADD_SUBDIRECTORY("commem") +# ADD_SUBDIRECTORY("cping") +# ADD_SUBDIRECTORY("disas") +# ADD_SUBDIRECTORY("dtest") +# ADD_SUBDIRECTORY("dumpe") +# ADD_SUBDIRECTORY("dumpi") +# ADD_SUBDIRECTORY("echo") +# ADD_SUBDIRECTORY("einst") +# ADD_SUBDIRECTORY("excep") +# ADD_SUBDIRECTORY("findfunc") +# ADD_SUBDIRECTORY("impmunge") +# ADD_SUBDIRECTORY("member") +# ADD_SUBDIRECTORY("opengl") +ADD_SUBDIRECTORY("region") +ADD_SUBDIRECTORY("setdll") +ADD_SUBDIRECTORY("simple") +# ADD_SUBDIRECTORY("slept") +ADD_SUBDIRECTORY("syelog") +# ADD_SUBDIRECTORY("talloc") +ADD_SUBDIRECTORY("traceapi") +ADD_SUBDIRECTORY("tracebld") +ADD_SUBDIRECTORY("tracelnk") +ADD_SUBDIRECTORY("tracemem") +ADD_SUBDIRECTORY("tracereg") +ADD_SUBDIRECTORY("traceser") +ADD_SUBDIRECTORY("tracessl") +ADD_SUBDIRECTORY("tracetcp") +# ADD_SUBDIRECTORY("tryman") +ADD_SUBDIRECTORY("withdll") \ No newline at end of file diff --git a/samples/comeasy/CMakeLists.txt b/samples/comeasy/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/comeasy/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/commem/CMakeLists.txt b/samples/commem/CMakeLists.txt new file mode 100644 index 00000000..4d09c09d --- /dev/null +++ b/samples/commem/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(commem LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp +) + +ADD_EXECUTABLE(commem ${src}) +TARGET_LINK_LIBRARIES(commem PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(commem PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(commem PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/cping/CMakeLists.txt b/samples/cping/CMakeLists.txt new file mode 100644 index 00000000..ab9cefcc --- /dev/null +++ b/samples/cping/CMakeLists.txt @@ -0,0 +1,19 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(cping LANGUAGES C CXX) + +# TODO: Is there any smart way to find Win32 Standard Libraries? +# It is Visual C++ Compiler only way. +# For MinGW or Clang based compilers, it should not work. +SET(CMAKE_CXX_STANDARD_LIBRARIES + "${CMAKE_CXX_STANDARD_LIBRARIES} user32.lib shell32.lib uuid.lib ole32.lib rpcrt4.lib advapi32.lib wsock32.lib") + +LIST(APPEND DETOURS_COMPILE_DEFINITIONS CONST_VTABLE) +LIST(APPEND DETOURS_COMPILE_DEFINITIONS COBJMACROS) +LIST(APPEND DETOURS_COMPILE_DEFINITIONS WIN32) +LIST(APPEND DETOURS_COMPILE_DEFINITIONS NT) + +ADD_EXECUTABLE(cping "cping.cpp") +TARGET_LINK_LIBRARIES(cping PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(cping PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(cping PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/disas/CMakeLists.txt b/samples/disas/CMakeLists.txt new file mode 100644 index 00000000..97441a4c --- /dev/null +++ b/samples/disas/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(disas LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(disas ${src}) +TARGET_LINK_LIBRARIES(disas PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(disas PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(disas PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/dtest/CMakeLists.txt b/samples/dtest/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/dtest/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/dumpe/CMakeLists.txt b/samples/dumpe/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/dumpe/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/dumpi/CMakeLists.txt b/samples/dumpi/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/dumpi/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/echo/CMakeLists.txt b/samples/echo/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/echo/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/einst/CMakeLists.txt b/samples/einst/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/einst/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/excep/CMakeLists.txt b/samples/excep/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/excep/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/findfunc/CMakeLists.txt b/samples/findfunc/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/findfunc/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/impmunge/CMakeLists.txt b/samples/impmunge/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/impmunge/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/member/CMakeLists.txt b/samples/member/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/member/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/opengl/CMakeLists.txt b/samples/opengl/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/opengl/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/region/CMakeLists.txt b/samples/region/CMakeLists.txt new file mode 100644 index 00000000..79009e3b --- /dev/null +++ b/samples/region/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(region LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp +) + +ADD_EXECUTABLE(region ${src}) +TARGET_LINK_LIBRARIES(region PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(region PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(region PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/setdll/CMakeLists.txt b/samples/setdll/CMakeLists.txt new file mode 100644 index 00000000..5bda4be2 --- /dev/null +++ b/samples/setdll/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(setdll LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp +) + +ADD_EXECUTABLE(setdll ${src}) +TARGET_LINK_LIBRARIES(setdll PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(setdll PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(setdll PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/simple/CMakeLists.txt b/samples/simple/CMakeLists.txt new file mode 100644 index 00000000..373fff66 --- /dev/null +++ b/samples/simple/CMakeLists.txt @@ -0,0 +1,18 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(simple LANGUAGES C CXX) + +# TODO: Exporting all functions sounds not quite good, +# but since I dont't want to change the original source code, +# this is the only two options —— +# another one is setting CXX_FLAGS /export switch manually, +# which is also not clean enough. +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +ADD_LIBRARY(simple SHARED "simple.cpp" "simple.rc") +TARGET_LINK_LIBRARIES(simple PUBLIC detours_static) +TARGET_COMPILE_DEFINITIONS(simple PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(simple PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(sleep5 "sleep5.cpp") +TARGET_COMPILE_DEFINITIONS(sleep5 PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(sleep5 PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/slept/CMakeLists.txt b/samples/slept/CMakeLists.txt new file mode 100644 index 00000000..870fefb4 --- /dev/null +++ b/samples/slept/CMakeLists.txt @@ -0,0 +1,33 @@ +# CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +# PROJECT(slept LANGUAGES C CXX) + +# INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}") + +# # TODO: Exporting all functions sounds not quite good, +# # but since I dont't want to change the original source code, +# # this is the only two options —— +# # another one is setting CXX_FLAGS /export switch manually, +# # which is also not clean enough. +# SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +# ADD_LIBRARY(slept SHARED "dslept.cpp" "verify.cpp" "slept.rc") +# TARGET_LINK_LIBRARIES(slept PUBLIC detours_static) +# TARGET_COMPILE_DEFINITIONS(slept PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +# TARGET_COMPILE_OPTIONS(slept PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +# ADD_LIBRARY(dslept SHARED "slept.cpp" "verify.cpp") +# TARGET_LINK_LIBRARIES(dslept PUBLIC detours_static) +# TARGET_COMPILE_DEFINITIONS(dslept PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +# TARGET_COMPILE_OPTIONS(dslept PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +# ADD_EXECUTABLE(sleepold "sleepold.cpp" "verify.cpp") +# TARGET_COMPILE_DEFINITIONS(sleepold PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +# TARGET_COMPILE_OPTIONS(sleepold PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +# ADD_EXECUTABLE(sleepnew "sleepnew.cpp" "verify.cpp") +# TARGET_COMPILE_DEFINITIONS(sleepnew PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +# TARGET_COMPILE_OPTIONS(sleepnew PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +# ADD_EXECUTABLE(sleepbed "sleepbed.cpp" "verify.cpp") +# TARGET_COMPILE_DEFINITIONS(sleepbed PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +# TARGET_COMPILE_OPTIONS(sleepbed PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/syelog/CMakeLists.txt b/samples/syelog/CMakeLists.txt new file mode 100644 index 00000000..bf8cdc2d --- /dev/null +++ b/samples/syelog/CMakeLists.txt @@ -0,0 +1,24 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(syelog LANGUAGES C CXX) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}") + +ADD_LIBRARY(syelog STATIC "syelog.cpp") +TARGET_COMPILE_DEFINITIONS(syelog PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(syelog PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(sltest "sltest.cpp") +TARGET_LINK_LIBRARIES(sltest PUBLIC detours_static) +TARGET_LINK_LIBRARIES(sltest PUBLIC syelog) +TARGET_COMPILE_DEFINITIONS(sltest PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(sltest PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(syelogd "syelogd.cpp") +TARGET_LINK_LIBRARIES(syelogd PUBLIC syelog) +TARGET_COMPILE_DEFINITIONS(syelogd PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(syelogd PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(sltestp "sltestp.cpp") +TARGET_LINK_LIBRARIES(sltestp PUBLIC syelog) +TARGET_COMPILE_DEFINITIONS(sltestp PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(sltestp PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/talloc/CMakeLists.txt b/samples/talloc/CMakeLists.txt new file mode 100644 index 00000000..09c0c7f6 --- /dev/null +++ b/samples/talloc/CMakeLists.txt @@ -0,0 +1,13 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(comeasy LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_EXECUTABLE(comeasy ${src}) +TARGET_LINK_LIBRARIES(comeasy PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(comeasy PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(comeasy PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/traceapi/CMakeLists.txt b/samples/traceapi/CMakeLists.txt new file mode 100644 index 00000000..55021681 --- /dev/null +++ b/samples/traceapi/CMakeLists.txt @@ -0,0 +1,30 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(traceapi LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}") +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +# TODO: Is there any smart way to find Win32 Standard Libraries? +# It is Visual C++ Compiler only way. +# For MinGW or Clang based compilers, it should not work. +SET(CMAKE_CXX_STANDARD_LIBRARIES + "${CMAKE_CXX_STANDARD_LIBRARIES} gdi32.lib user32.lib shell32.lib advapi32.lib ole32.lib ws2_32.lib") + +ADD_LIBRARY(traceapi SHARED "trcapi.cpp" "trcapi.rc") +TARGET_LINK_LIBRARIES(traceapi PUBLIC detours_static) +TARGET_LINK_LIBRARIES(traceapi PUBLIC syelog) +TARGET_COMPILE_DEFINITIONS(traceapi PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(traceapi PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(testapi "testapi.cpp") +TARGET_LINK_LIBRARIES(testapi PUBLIC detours_static) +TARGET_LINK_LIBRARIES(testapi PUBLIC syelog) +TARGET_COMPILE_DEFINITIONS(testapi PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(testapi PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracebld/CMakeLists.txt b/samples/tracebld/CMakeLists.txt new file mode 100644 index 00000000..24543ee6 --- /dev/null +++ b/samples/tracebld/CMakeLists.txt @@ -0,0 +1,23 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracebld LANGUAGES C CXX) + +# TODO: Exporting all functions sounds not quite good, +# but since I dont't want to change the original source code, +# this is the only two options —— +# another one is setting CXX_FLAGS /export switch manually, +# which is also not clean enough. +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}") +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_LIBRARY(tracebld SHARED ${src}) +TARGET_LINK_LIBRARIES(tracebld PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(tracebld PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracebld PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracelnk/CMakeLists.txt b/samples/tracelnk/CMakeLists.txt new file mode 100644 index 00000000..58159308 --- /dev/null +++ b/samples/tracelnk/CMakeLists.txt @@ -0,0 +1,18 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracelnk LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_LIBRARY(tracelnk SHARED ${src}) +TARGET_LINK_LIBRARIES(tracelnk PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tracelnk PUBLIC syelog) + +TARGET_COMPILE_DEFINITIONS(tracelnk PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracelnk PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracemem/CMakeLists.txt b/samples/tracemem/CMakeLists.txt new file mode 100644 index 00000000..7cdbd59a --- /dev/null +++ b/samples/tracemem/CMakeLists.txt @@ -0,0 +1,18 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracemem LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_LIBRARY(tracemem SHARED ${src}) +TARGET_LINK_LIBRARIES(tracemem PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tracemem PUBLIC syelog) + +TARGET_COMPILE_DEFINITIONS(tracemem PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracemem PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracereg/CMakeLists.txt b/samples/tracereg/CMakeLists.txt new file mode 100644 index 00000000..ee9b7a3d --- /dev/null +++ b/samples/tracereg/CMakeLists.txt @@ -0,0 +1,24 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracereg LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +# TODO: Is there any smart way to find Win32 Standard Libraries? +# It is Visual C++ Compiler only way. +# For MinGW or Clang based compilers, it should not work. +SET(CMAKE_CXX_STANDARD_LIBRARIES + "${CMAKE_CXX_STANDARD_LIBRARIES} advapi32.lib") + +ADD_LIBRARY(tracereg SHARED ${src}) +TARGET_LINK_LIBRARIES(tracereg PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tracereg PUBLIC syelog) + +TARGET_COMPILE_DEFINITIONS(tracereg PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracereg PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/traceser/CMakeLists.txt b/samples/traceser/CMakeLists.txt new file mode 100644 index 00000000..13ec2c4f --- /dev/null +++ b/samples/traceser/CMakeLists.txt @@ -0,0 +1,18 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(traceser LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +ADD_LIBRARY(traceser SHARED ${src}) +TARGET_LINK_LIBRARIES(traceser PUBLIC detours_static) +TARGET_LINK_LIBRARIES(traceser PUBLIC syelog) + +TARGET_COMPILE_DEFINITIONS(traceser PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(traceser PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracessl/CMakeLists.txt b/samples/tracessl/CMakeLists.txt new file mode 100644 index 00000000..b4262784 --- /dev/null +++ b/samples/tracessl/CMakeLists.txt @@ -0,0 +1,24 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracessl LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +# TODO: Is there any smart way to find Win32 Standard Libraries? +# It is Visual C++ Compiler only way. +# For MinGW or Clang based compilers, it should not work. +SET(CMAKE_CXX_STANDARD_LIBRARIES + "${CMAKE_CXX_STANDARD_LIBRARIES} secur32.lib ws2_32.lib") + +ADD_LIBRARY(tracessl SHARED ${src}) +TARGET_LINK_LIBRARIES(tracessl PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tracessl PUBLIC syelog) + +TARGET_COMPILE_DEFINITIONS(tracessl PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracessl PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tracetcp/CMakeLists.txt b/samples/tracetcp/CMakeLists.txt new file mode 100644 index 00000000..054ecbbe --- /dev/null +++ b/samples/tracetcp/CMakeLists.txt @@ -0,0 +1,21 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tracetcp LANGUAGES C CXX) + +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../syelog") + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp + ${CMAKE_CURRENT_LIST_DIR}/*.rc +) + +FIND_LIBRARY(WS2_32 ws2_32) + +ADD_LIBRARY(tracetcp SHARED ${src}) +TARGET_LINK_LIBRARIES(tracetcp PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tracetcp PUBLIC syelog) +TARGET_LINK_LIBRARIES(tracetcp PUBLIC ws2_32) + +TARGET_COMPILE_DEFINITIONS(tracetcp PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tracetcp PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/samples/tryman/CMakeLists.txt b/samples/tryman/CMakeLists.txt new file mode 100644 index 00000000..655f52d5 --- /dev/null +++ b/samples/tryman/CMakeLists.txt @@ -0,0 +1,34 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(tryman LANGUAGES C CXX CSharp) + +# TODO: Exporting all functions sounds not quite good, +# but since I dont't want to change the original source code, +# this is the only two options —— +# another one is setting CXX_FLAGS /export switch manually, +# which is also not clean enough. +SET(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +ADD_EXECUTABLE(size "size.cpp") +TARGET_LINK_LIBRARIES(size PUBLIC detours_static) +TARGET_COMPILE_DEFINITIONS(size PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(size PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_LIBRARY(tstman SHARED "tstman.cpp" "tstman.rc") +TARGET_LINK_LIBRARIES(tstman PUBLIC detours_static) +TARGET_COMPILE_DEFINITIONS(tstman PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tstman PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +ADD_EXECUTABLE(tryman "tryman.cpp") +TARGET_LINK_LIBRARIES(tryman PUBLIC detours_static) +TARGET_LINK_LIBRARIES(tryman PUBLIC tstman) +TARGET_COMPILE_DEFINITIONS(tryman PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(tryman PUBLIC ${DETOURS_COMPILE_OPTIONS}) + +# For Managed part +ADD_EXECUTABLE(tryman_managed "managed.cs") +SET_PROPERTY(TARGET tryman_managed PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.6.1") +SET_PROPERTY(TARGET tryman_managed PROPERTY WIN32_EXECUTABLE TRUE) +set_property(TARGET tryman_managed PROPERTY VS_DOTNET_REFERENCES + "Microsoft.CSharp" + "System" + "System.Core") \ No newline at end of file diff --git a/samples/withdll/CMakeLists.txt b/samples/withdll/CMakeLists.txt new file mode 100644 index 00000000..12569c40 --- /dev/null +++ b/samples/withdll/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(withdll LANGUAGES C CXX) + +FILE(GLOB src + ${CMAKE_CURRENT_LIST_DIR}/*.cpp +) + +ADD_EXECUTABLE(withdll ${src}) +TARGET_LINK_LIBRARIES(withdll PUBLIC detours_static) + +TARGET_COMPILE_DEFINITIONS(withdll PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(withdll PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..8b3e99d3 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,20 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +PROJECT(libdetours LANGUAGES C CXX) + +FILE(GLOB detours_src + ${CMAKE_CURRENT_LIST_DIR}/creatwth.cpp + ${CMAKE_CURRENT_LIST_DIR}/detours.cpp + ${CMAKE_CURRENT_LIST_DIR}/disasm.cpp + ${CMAKE_CURRENT_LIST_DIR}/disolarm.cpp + ${CMAKE_CURRENT_LIST_DIR}/disolarm64.cpp + ${CMAKE_CURRENT_LIST_DIR}/disolia64.cpp + ${CMAKE_CURRENT_LIST_DIR}/disolx64.cpp + ${CMAKE_CURRENT_LIST_DIR}/disolx86.cpp + ${CMAKE_CURRENT_LIST_DIR}/image.cpp + ${CMAKE_CURRENT_LIST_DIR}/modules.cpp +) + +ADD_LIBRARY(detours_static STATIC ${detours_src}) + +TARGET_COMPILE_DEFINITIONS(detours_static PUBLIC ${DETOURS_COMPILE_DEFINITIONS}) +TARGET_COMPILE_OPTIONS(detours_static PUBLIC ${DETOURS_COMPILE_OPTIONS}) \ No newline at end of file