From 1fc9d27de58a4d892b731be78013ace8b2488f17 Mon Sep 17 00:00:00 2001 From: jpr42 <109434725+jpr42@users.noreply.github.com> Date: Mon, 17 Aug 2026 10:16:02 -0700 Subject: [PATCH] Add CMake build support and remove NMake/vc/.sln Replaces the NMake Makefiles and vc/Detours.sln with a single CMake build covering the library, unit/integration tests, and every sample NMake built (opengl excluded, as NMake never built it either). find_package(Detours) is supported and tested against a real staged install, not just an in-tree build. .github/workflows/cmake.yml replaces main.yml's NMake-driven CI with a matrix across VS2022/VS2026, Ninja, x86/x64, Debug/Release, plus a real-hardware ARM64EC job, and keeps CodeQL coverage. NMake and the VS project are removed outright now that CMake has full parity, per the maintainer's own note that CMake would obsolete both: https://github.com/microsoft/Detours/pull/48#issuecomment-918464211 Successor to https://github.com/microsoft/Detours/pull/48 --- .github/workflows/cmake.yml | 109 +++ .github/workflows/main.yml | 74 -- .gitignore | 11 +- CMakeLists.txt | 84 +++ Makefile | 63 -- cmake/DetoursConfig.cmake.in | 5 + samples/CMakeLists.txt | 565 ++++++++++++++ samples/Makefile | 323 -------- samples/README.TXT | 30 +- samples/comeasy/Makefile | 116 --- samples/commem/Makefile | 48 -- samples/common.mak | 97 --- samples/cping/Makefile | 132 ---- samples/disas/Makefile | 76 -- samples/dtest/Makefile | 107 --- samples/dumpe/Makefile | 53 -- samples/dumpi/Makefile | 47 -- samples/dynamic_alloc/Makefile | 77 -- samples/echo/Makefile | 108 --- samples/einst/Makefile | 148 ---- samples/excep/Makefile | 47 -- samples/findfunc/Makefile | 178 ----- samples/impmunge/Makefile | 56 -- samples/member/Makefile | 48 -- samples/opengl/Makefile | 112 --- samples/payload/Makefile | 59 -- samples/region/Makefile | 48 -- samples/setdll/Makefile | 62 -- samples/simple/Makefile | 120 --- samples/simple_safe/Makefile | 121 --- samples/slept/Makefile | 194 ----- samples/syelog/Makefile | 101 --- samples/talloc/Makefile | 332 -------- samples/traceapi/Makefile | 153 ---- samples/tracebld/Makefile | 157 ---- samples/tracelnk/Makefile | 103 --- samples/tracemem/Makefile | 82 -- samples/tracereg/Makefile | 82 -- samples/traceser/Makefile | 82 -- samples/tracessl/Makefile | 94 --- samples/tracetcp/Makefile | 98 --- samples/tryman/Makefile | 248 ------ samples/withdll/Makefile | 60 -- src/CMakeLists.txt | 42 ++ src/Makefile | 127 ---- src/detours.h | 2 + system.mak | 146 ---- tests/CMakeLists.txt | 63 ++ tests/Makefile | 72 -- tests/integration/CMakeLists.txt | 62 ++ .../add_subdirectory_dll/CMakeLists.txt | 32 + .../integration/add_subdirectory_dll/main.cpp | 12 + .../add_subdirectory_mt/CMakeLists.txt | 27 + .../integration/add_subdirectory_mt/main.cpp | 12 + tests/integration/find_package/CMakeLists.txt | 23 + tests/integration/find_package/main.cpp | 12 + tests/integration/run_consumer.cmake | 38 + tests/version_check.cpp | 22 + vc/Detours.sln | 47 -- vc/Detours.vcxproj | 708 ------------------ vc/Detours.vcxproj.filters | 605 --------------- 61 files changed, 1134 insertions(+), 5828 deletions(-) create mode 100644 .github/workflows/cmake.yml delete mode 100644 .github/workflows/main.yml create mode 100644 CMakeLists.txt delete mode 100644 Makefile create mode 100644 cmake/DetoursConfig.cmake.in create mode 100644 samples/CMakeLists.txt delete mode 100644 samples/Makefile delete mode 100644 samples/comeasy/Makefile delete mode 100644 samples/commem/Makefile delete mode 100644 samples/common.mak delete mode 100644 samples/cping/Makefile delete mode 100644 samples/disas/Makefile delete mode 100644 samples/dtest/Makefile delete mode 100644 samples/dumpe/Makefile delete mode 100644 samples/dumpi/Makefile delete mode 100644 samples/dynamic_alloc/Makefile delete mode 100644 samples/echo/Makefile delete mode 100644 samples/einst/Makefile delete mode 100644 samples/excep/Makefile delete mode 100644 samples/findfunc/Makefile delete mode 100644 samples/impmunge/Makefile delete mode 100644 samples/member/Makefile delete mode 100644 samples/opengl/Makefile delete mode 100644 samples/payload/Makefile delete mode 100644 samples/region/Makefile delete mode 100644 samples/setdll/Makefile delete mode 100644 samples/simple/Makefile delete mode 100644 samples/simple_safe/Makefile delete mode 100644 samples/slept/Makefile delete mode 100644 samples/syelog/Makefile delete mode 100644 samples/talloc/Makefile delete mode 100644 samples/traceapi/Makefile delete mode 100644 samples/tracebld/Makefile delete mode 100644 samples/tracelnk/Makefile delete mode 100644 samples/tracemem/Makefile delete mode 100644 samples/tracereg/Makefile delete mode 100644 samples/traceser/Makefile delete mode 100644 samples/tracessl/Makefile delete mode 100644 samples/tracetcp/Makefile delete mode 100644 samples/tryman/Makefile delete mode 100644 samples/withdll/Makefile create mode 100644 src/CMakeLists.txt delete mode 100644 src/Makefile delete mode 100644 system.mak create mode 100644 tests/CMakeLists.txt delete mode 100644 tests/Makefile create mode 100644 tests/integration/CMakeLists.txt create mode 100644 tests/integration/add_subdirectory_dll/CMakeLists.txt create mode 100644 tests/integration/add_subdirectory_dll/main.cpp create mode 100644 tests/integration/add_subdirectory_mt/CMakeLists.txt create mode 100644 tests/integration/add_subdirectory_mt/main.cpp create mode 100644 tests/integration/find_package/CMakeLists.txt create mode 100644 tests/integration/find_package/main.cpp create mode 100644 tests/integration/run_consumer.cmake create mode 100644 tests/version_check.cpp delete mode 100644 vc/Detours.sln delete mode 100644 vc/Detours.vcxproj delete mode 100644 vc/Detours.vcxproj.filters diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 00000000..0943fa93 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,109 @@ +name: CI-CMake + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: + +permissions: + contents: read + actions: read + security-events: write + +jobs: + build: + strategy: + fail-fast: false + matrix: + # windows-2022 ships VS 2022 (17.x); windows-2025 ships VS 2026 (18.x) + # -- each runner image only has one VS version installed, so the + # generator must be paired with its matching os, not cross-produced. + toolset: + - { os: windows-2022, generator: "Visual Studio 17 2022" } + - { os: windows-2022, generator: "Ninja Multi-Config" } + - { os: windows-2025, generator: "Visual Studio 18 2026" } + - { os: windows-2025, generator: "Ninja Multi-Config" } + arch: [x86, x64] + config: [Debug, Release] + + runs-on: ${{ matrix.toolset.os }} + steps: + - name: Clone Repository + uses: actions/checkout@v6 + + - name: Configure MSVC Compiler + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + + # Runs once, on the same job/matrix leg the old NMake-driven CI-Build + # workflow used (windows-2022, Debug) -- ported here since main.yml + # (and the NMake build it drove) has been removed. + - name: Initialize CodeQL for C++ + uses: github/codeql-action/init@v4 + if: ${{ matrix.toolset.os == 'windows-2022' && matrix.toolset.generator == 'Ninja Multi-Config' && matrix.arch == 'x64' && matrix.config == 'Debug' }} + with: + languages: cpp + config-file: ./.github/codeql/codeql-config.yml + + - name: Configure + run: | + $platformArg = @() + if ('${{ matrix.toolset.generator }}' -ne 'Ninja Multi-Config') { + $platformArg = @('-A', '${{ matrix.arch == 'x86' && 'Win32' || 'x64' }}') + } + cmake -S . -B build -G '${{ matrix.toolset.generator }}' @platformArg -DDETOURS_BUILD_INTEGRATION_TESTS=ON -DDETOURS_BUILD_SAMPLES=ON + + - name: Build + run: cmake --build build --config ${{ matrix.config }} --parallel + + - name: Test + run: ctest --test-dir build -C ${{ matrix.config }} --output-on-failure + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v4 + if: ${{ matrix.toolset.os == 'windows-2022' && matrix.toolset.generator == 'Ninja Multi-Config' && matrix.arch == 'x64' && matrix.config == 'Debug' }} + + # Builds and runs on real ARM64 hardware (windows-11-arm) using cl.exe's + # /arm64EC switch. CFLAGS/CXXFLAGS force /arm64EC because only the Visual + # Studio generator's "-A ARM64EC" configures this automatically -- Ninja + # has no equivalent mechanism. See: + # https://devblogs.microsoft.com/cppblog/arm64ec-support-in-visual-studio/ + test-arm64ec: + strategy: + fail-fast: false + matrix: + config: [Debug, Release] + runs-on: windows-11-arm + env: + # Also needed by Test: the find_package integration test spawns its own + # nested CMake configure via ctest, which must be forced to /arm64EC too. + CFLAGS: /arm64EC + CXXFLAGS: /arm64EC + steps: + - name: Clone Repository + uses: actions/checkout@v6 + + - name: Configure MSVC Compiler + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: arm64 + + - name: Configure + run: | + # vcvarsarm64.bat doesn't reliably put ml64.exe on PATH (it lives in a + # Host*\x64 tools dir that the arm64-hosted dev environment doesn't add), + # so CMake's default ASM_MASM search falls back to a nonexistent "ml.exe" + # and disas/x64.asm fails with "CreateProcess failed". Locate ml64.exe + # explicitly via vswhere and hand it to CMake instead. + $vsPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath + $ml64 = Get-ChildItem -Path "$vsPath\VC\Tools\MSVC" -Recurse -Filter ml64.exe -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName + cmake -S . -B build -G "Ninja Multi-Config" -DDETOURS_BUILD_INTEGRATION_TESTS=ON -DDETOURS_BUILD_SAMPLES=ON -DCMAKE_ASM_MASM_COMPILER="$ml64" + + - name: Build + run: cmake --build build --config ${{ matrix.config }} --parallel + + - name: Test + run: ctest --test-dir build -C ${{ matrix.config }} --output-on-failure diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 7886fb1e..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: CI-Build - -env: - # Turn on msvc analysis during build, enable once warnings are clean. - DETOURS_ANALYZE: true - - # Compile in parallel where possible. - CL: /MP - -# Triggers the workflow on push or pull request events for the main branch. -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -permissions: - actions: read - contents: read - security-events: write - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [windows-2022] - arch: [x86, x64, x64_arm64] - conf: [Release, Debug] - - steps: - - name: Clone Repository - uses: actions/checkout@v6 - - # Setup build environment variables using vcvarsall.bat. - - name: Configure MSVC Compiler for ${{ matrix.arch }} - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.arch }} - - - name: Initialize CodeQL for C++ - uses: github/codeql-action/init@v4 - if: ${{ matrix.os == 'windows-2019' && matrix.conf == 'Debug' }} - with: - languages: cpp - config-file: ./.github/codeql/codeql-config.yml - - - name: Build Detours for ${{ matrix.arch }} on ${{ matrix.os }} - env: - # Tell detours what process to target - DETOURS_TARGET_PROCESSOR: ${{ env.VSCMD_ARG_TGT_ARCH }} - DETOURS_CONFIG: ${{ matrix.conf }} - run: nmake - - - name: Run unit tests for ${{ matrix.arch }} on ${{ matrix.os }} - id: run-unit-tests - env: - DETOURS_CONFIG: ${{ matrix.conf }} - run: cd tests && nmake test - if: ${{ matrix.arch == 'x86' || matrix.arch == 'x64' }} - - - name: Upload artifacts for ${{ matrix.arch }} on ${{ matrix.os }} - uses: actions/upload-artifact@v7 - with: - name: artifacts-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.conf }} - path: | - lib.*/ - bin.*/ - include/ - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 - if: ${{ matrix.os == 'windows-2019' && matrix.conf == 'Debug' }} diff --git a/.gitignore b/.gitignore index b5a68d43..2f206502 100644 --- a/.gitignore +++ b/.gitignore @@ -37,5 +37,12 @@ obj.* *.user *.recipe /bin.* -*.vcxproj.FileListAbsolute.txt -*.vcxprojAssemblyReference.cache + +# CMake +build*/ +CMakeFiles/ +CMakeCache.txt +CMakeUserPresets.json +cmake_install.cmake +CTestTestfile.cmake +install_manifest.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..95cc485a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,84 @@ +############################################################################## +## +## CMakeLists.txt for Detours. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## +## This is the sole build system for Detours, covering the full build/test/sample surface. +## + +cmake_minimum_required(VERSION 3.28.3) + +project(DETOURS + VERSION 4.0.1 + DESCRIPTION "Detours is a software package for monitoring and instrumenting API calls on Windows." + HOMEPAGE_URL "https://github.com/microsoft/Detours" + LANGUAGES CXX +) + +if(NOT WIN32) + message(FATAL_ERROR "Detours only targets Windows; see https://github.com/microsoft/Detours/wiki/FAQ") +endif() + +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +set(CMAKE_COMPILE_WARNING_AS_ERROR ON) + +# CMake's MSVC Debug default injects /RTC1 (runtime checks), which actively conflicts with +# samples that need /Zl (no default CRT lib reference) or a non-default optimization level. +# Detours' own Debug behavior is controlled separately via the DETOUR_DEBUG=1 tracing macro, +# not compiler runtime checks. +string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + +option(DETOURS_BUILD_TESTS "Build the Detours unit test suite" ${PROJECT_IS_TOP_LEVEL}) +option(DETOURS_BUILD_SAMPLES "Build the Detours samples" OFF) +option(DETOURS_INSTALL "Generate install/export rules for the Detours package" ${PROJECT_IS_TOP_LEVEL}) + +add_library(detours STATIC) +add_library(Microsoft::detours ALIAS detours) +add_subdirectory(src) + +if(DETOURS_BUILD_TESTS) + enable_testing() + add_subdirectory(tests) +endif() + +if(DETOURS_BUILD_SAMPLES) + add_subdirectory(samples) +endif() + +if(DETOURS_INSTALL) + include(GNUInstallDirs) + include(CMakePackageConfigHelpers) + + install(TARGETS detours + EXPORT DetoursTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + + install(EXPORT DetoursTargets + FILE DetoursTargets.cmake + NAMESPACE Microsoft:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Detours + ) + + configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DetoursConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/DetoursConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Detours + ) + + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/DetoursConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion + ) + + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/DetoursConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/DetoursConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Detours + ) +endif() diff --git a/Makefile b/Makefile deleted file mode 100644 index 78ef9d04..00000000 --- a/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################## -## -## Makefile for Detours. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -ROOT = . -!include "$(ROOT)\system.mak" - -all: - cd "$(MAKEDIR)" - @if exist "$(MAKEDIR)\core\makefile" cd "$(MAKEDIR)\core" && $(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\src" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\samples" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tests" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - @if exist "$(MAKEDIR)\bugs\makefile" cd "$(MAKEDIR)\bugs" && $(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)" - -clean: - cd "$(MAKEDIR)" - @if exist "$(MAKEDIR)\core\makefile" cd "$(MAKEDIR)\core" && $(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\src" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\samples" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tests" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - @if exist "$(MAKEDIR)\bugs\makefile" cd "$(MAKEDIR)\bugs" && $(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)" - -realclean: clean - cd "$(MAKEDIR)" - @if exist "$(MAKEDIR)\core\makefile" cd "$(MAKEDIR)\core" && $(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\src" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\samples" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tests" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - @if exist "$(MAKEDIR)\bugs\makefile" cd "$(MAKEDIR)\bugs" && $(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)" - -rmdir /q /s $(INCDS) 2> nul - -rmdir /q /s $(LIBDS) 2> nul - -rmdir /q /s $(BINDS) 2> nul - -rmdir /q /s dist 2> nul - -del docsrc\detours.chm 2> nul - -del /q *.msi 2>nul - -del /q /f /s *~ 2>nul - -test: - cd "$(MAKEDIR)\samples" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\tests" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)" - -################################################################# End of File. diff --git a/cmake/DetoursConfig.cmake.in b/cmake/DetoursConfig.cmake.in new file mode 100644 index 00000000..3c21fd00 --- /dev/null +++ b/cmake/DetoursConfig.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/DetoursTargets.cmake") + +check_required_components(Detours) diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt new file mode 100644 index 00000000..4a643b75 --- /dev/null +++ b/samples/CMakeLists.txt @@ -0,0 +1,565 @@ +############################################################################## +## +## CMakeLists.txt for the Detours samples. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## +## opengl is intentionally not ported here and has no CMake target. +## + +# These are only needed by the samples, so they're enabled here rather than in the root +# CMakeLists.txt -- a library+tests-only build (DETOURS_BUILD_SAMPLES=OFF) needs none of them. +enable_language(RC) # tryman/tstman.rc +enable_language(ASM_MASM) # disas/x64.asm +enable_language(C) # cping's MIDL-generated proxy/stub .c files (see the cping section below) + +# These are unmodified vendor sample sources that predate current MSVC warning levels and +# don't build clean under -WX; only the specific warnings promoted via +# DETOURS_SAMPLE_COMPILE_OPTIONS (/we4777 /we4800) are treated as errors here. The root +# CMakeLists.txt's global CMAKE_COMPILE_WARNING_AS_ERROR is turned back off just for this +# subdirectory (a normal-variable override, scoped to this add_subdirectory() call only). +set(CMAKE_COMPILE_WARNING_AS_ERROR OFF) + +# Several samples below key their fixed base addresses and arch-specific sources off of this. +# Only the architectures this CMake port actually targets are handled; plain (non-EC) ARM64 +# isn't a supported CMake platform here. +# +# CMAKE_CXX_COMPILER_ARCHITECTURE_ID reflects what the compiler itself was actually invoked to +# target (MSVC's _M_ARM64EC/_M_X64/... macros) regardless of generator; CMAKE_GENERATOR_PLATFORM +# and CMAKE_VS_PLATFORM_NAME are only ever set by the Visual Studio generators and say nothing +# under Ninja/Ninja Multi-Config. +if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64EC") + set(DETOURS_SAMPLE_ARCH "ARM64EC") +elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(DETOURS_SAMPLE_ARCH "X64") +else() + set(DETOURS_SAMPLE_ARCH "X86") +endif() + +set(DETOURS_SAMPLE_COMPILE_OPTIONS /W4 /we4777 /we4800 /Od) +set(DETOURS_SAMPLE_LINK_OPTIONS /INCREMENTAL:NO /PROFILE /RELEASE /NODEFAULTLIB:oldnames.lib) + +function(detours_sample_common_settings target) + if(MSVC) + target_compile_options(${target} PRIVATE ${DETOURS_SAMPLE_COMPILE_OPTIONS}) + target_compile_definitions(${target} PRIVATE $<$:DETOUR_DEBUG=1>) + target_link_options(${target} PRIVATE ${DETOURS_SAMPLE_LINK_OPTIONS}) + endif() + # Every sample links against syelog + detours. + target_link_libraries(${target} PRIVATE Microsoft::detours syelog) +endfunction() + +function(add_detour_sample_exe name) + cmake_parse_arguments(ARG "" "" "SOURCES;LIBS" ${ARGN}) + add_executable(${name} ${ARG_SOURCES}) + detours_sample_common_settings(${name}) + if(ARG_LIBS) + target_link_libraries(${name} PRIVATE ${ARG_LIBS}) + endif() +endfunction() + +# Samples that bypass this (edll1x/2x/3x, tdll1x..9x, findfunc's target.dll) use plain +# add_library(... SHARED ...) + detours_sample_common_settings() directly instead, since they +# need no export flag, or a single non-default export, rather than this default injection. +function(add_detour_sample_dll name) + cmake_parse_arguments(ARG "" "" "SOURCES;EXPORTS;LIBS" ${ARGN}) + add_library(${name} SHARED ${ARG_SOURCES}) + detours_sample_common_settings(${name}) + if(ARG_LIBS) + target_link_libraries(${name} PRIVATE ${ARG_LIBS}) + endif() + if(NOT ARG_EXPORTS) + set(ARG_EXPORTS "DetourFinishHelperProcess,@1,NONAME") + endif() + foreach(exp IN LISTS ARG_EXPORTS) + target_link_options(${name} PRIVATE "/EXPORT:${exp}") + endforeach() +endfunction() + +############################################################################## +## syelog - foundational shared dependency almost everything else links. + +add_library(syelog STATIC syelog/syelog.cpp) +target_sources(syelog PUBLIC + FILE_SET HEADERS + BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/syelog + FILES syelog/syelog.h +) +# syelog.cpp itself #includes detours.h (for the DetourFinishHelperProcess ref counting). +target_link_libraries(syelog PRIVATE Microsoft::detours) +if(MSVC) + target_compile_options(syelog PRIVATE ${DETOURS_SAMPLE_COMPILE_OPTIONS}) + target_compile_definitions(syelog PRIVATE $<$:DETOUR_DEBUG=1>) +endif() + +# syelogd intentionally doesn't link syelog.lib/detours.lib at all, so it bypasses +# add_detour_sample_exe rather than picking those up unintentionally. +add_executable(syelogd syelog/syelogd.cpp) +if(MSVC) + target_compile_options(syelogd PRIVATE ${DETOURS_SAMPLE_COMPILE_OPTIONS}) + target_compile_definitions(syelogd PRIVATE $<$:DETOUR_DEBUG=1>) + target_link_options(syelogd PRIVATE ${DETOURS_SAMPLE_LINK_OPTIONS}) +endif() +target_link_libraries(syelogd PRIVATE ws2_32.lib mswsock.lib advapi32.lib) + +add_detour_sample_exe(sltest SOURCES syelog/sltest.cpp LIBS kernel32.lib) +add_detour_sample_exe(sltestp SOURCES syelog/sltestp.cpp LIBS kernel32.lib) + +############################################################################## +## setdll, withdll - built early because other samples' tests shell out to these binaries. +## Cross-bitness copies of these tools (32-bit builds alongside 64-bit ones, etc.) from the +## original build are intentionally not ported. + +add_detour_sample_exe(setdll SOURCES setdll/setdll.cpp LIBS kernel32.lib) +add_detour_sample_exe(withdll SOURCES withdll/withdll.cpp LIBS kernel32.lib) + +############################################################################## +## The bulk of the "standard" samples. + +add_detour_sample_dll(wrotei SOURCES comeasy/wrotei.cpp comeasy/wrotei.rc LIBS kernel32.lib ole32.lib) +add_detour_sample_exe(comeasy SOURCES comeasy/comeasy.cpp LIBS kernel32.lib ole32.lib) +target_link_options(comeasy PRIVATE /FIXED:NO) + +add_detour_sample_exe(commem SOURCES commem/commem.cpp LIBS kernel32.lib ole32.lib) + +# disas/unk.cpp, arm.asm, ia64.asm exist in the source tree but are not referenced by any +# target here. +if(DETOURS_SAMPLE_ARCH STREQUAL "X86") + set(DETOURS_DISAS_ARCH_SOURCE disas/x86.cpp) +else() + set(DETOURS_DISAS_ARCH_SOURCE disas/x64.asm) +endif() +add_detour_sample_exe(disas SOURCES disas/disas.cpp ${DETOURS_DISAS_ARCH_SOURCE} LIBS kernel32.lib) +target_link_options(disas PRIVATE /ENTRY:WinMainCRTStartup) + +add_library(dtarge SHARED dtest/dtarge.cpp dtest/dtarge.rc) +detours_sample_common_settings(dtarge) +target_link_libraries(dtarge PRIVATE kernel32.lib) +target_link_options(dtarge PRIVATE + /EXPORT:Target0 /EXPORT:Target1 /EXPORT:Target2 /EXPORT:Target3 /EXPORT:Target4 + /EXPORT:Target5 /EXPORT:Target6 /EXPORT:Target7 /EXPORT:Target8 /EXPORT:Target9 + /EXPORT:Target10 /EXPORT:Target11 /EXPORT:Target12 /EXPORT:Target13 /EXPORT:Target14 + /EXPORT:Target15 /EXPORT:Target16 /EXPORT:TargetV /EXPORT:TargetR +) +add_detour_sample_exe(dtest SOURCES dtest/dtest.cpp LIBS kernel32.lib dtarge) +target_link_options(dtest PRIVATE /ENTRY:WinMainCRTStartup) + +add_detour_sample_exe(dumpe SOURCES dumpe/dumpe.cpp LIBS kernel32.lib) +add_detour_sample_exe(dumpi SOURCES dumpi/dumpi.cpp LIBS kernel32.lib) + +# echonul.exe doubles as a DLL-style import target (echofx links against it): it needs +# ENABLE_EXPORTS instead of add_library(SHARED), an extra /Zl compile flag, and its link line +# omits Microsoft::detours/syelog entirely (unlike every other sample here). +add_executable(echonul echo/main.cpp echo/echonul.cpp) +if(MSVC) + target_compile_options(echonul PRIVATE ${DETOURS_SAMPLE_COMPILE_OPTIONS}) + if(NOT DETOURS_SAMPLE_ARCH STREQUAL "ARM64EC") + # /Zl (omit default library name) also strips the /DEFAULTLIB pragma the ARM64EC + # compiler otherwise emits for its EC/native exit-thunk dispatch glue, which this + # exports-heavy target needs (LNK2019 on __os_arm64x_dispatch_* without it) -- an + # ABI concern specific to ARM64EC, so /Zl is skipped only on that architecture. + target_compile_options(echonul PRIVATE /Zl) + endif() + target_compile_definitions(echonul PRIVATE $<$:DETOUR_DEBUG=1>) + target_link_options(echonul PRIVATE ${DETOURS_SAMPLE_LINK_OPTIONS}) +endif() +set_target_properties(echonul PROPERTIES ENABLE_EXPORTS ON) +target_link_options(echonul PRIVATE /EXPORT:Echo) + +add_detour_sample_dll(echofx + SOURCES echo/echofx.cpp echo/echofx.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "Mine_Echo" + LIBS kernel32.lib echonul +) + +add_detour_sample_exe(region SOURCES region/region.cpp LIBS kernel32.lib) + +add_detour_sample_dll(trcbld SOURCES tracebld/trcbld.cpp tracebld/trcbld.rc LIBS kernel32.lib) +add_detour_sample_exe(tracebld SOURCES tracebld/tracebld.cpp LIBS kernel32.lib) +target_link_options(tracebld PRIVATE /FIXED:NO) + +add_detour_sample_dll(trclnk SOURCES tracelnk/trclnk.cpp tracelnk/trclnk.rc LIBS kernel32.lib) +add_detour_sample_dll(trcmem SOURCES tracemem/trcmem.cpp tracemem/trcmem.rc LIBS kernel32.lib) +add_detour_sample_dll(trcreg SOURCES tracereg/trcreg.cpp tracereg/trcreg.rc LIBS kernel32.lib advapi32.lib) +add_detour_sample_dll(trcser SOURCES traceser/trcser.cpp traceser/trcser.rc LIBS kernel32.lib) +add_detour_sample_dll(trcssl SOURCES tracessl/trcssl.cpp tracessl/trcssl.rc LIBS kernel32.lib ws2_32.lib secur32.lib) +add_detour_sample_dll(trctcp SOURCES tracetcp/trctcp.cpp tracetcp/trctcp.rc LIBS kernel32.lib ws2_32.lib) + +# testapi.cpp #includes trcapi.cpp and _win32.cpp directly (as does trcapi.cpp with _win32.cpp), +# so each target compiles only its own top-level source. +add_detour_sample_dll(trcapi + SOURCES traceapi/trcapi.cpp traceapi/trcapi.rc + LIBS kernel32.lib gdi32.lib user32.lib shell32.lib advapi32.lib ole32.lib ws2_32.lib +) +add_detour_sample_exe(testapi + SOURCES traceapi/testapi.cpp + LIBS kernel32.lib gdi32.lib user32.lib shell32.lib advapi32.lib ole32.lib ws2_32.lib +) +target_link_options(testapi PRIVATE /FIXED:NO) + +############################################################################## +## Samples needing explicit deviation from the common flags. + +add_detour_sample_dll(slept + SOURCES slept/slept.cpp slept/slept.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "TimedSleepEx" "UntimedSleepEx" "GetSleptTicks" "TestTicks" "TestTicksEx" + LIBS kernel32.lib +) +if(MSVC) + # Re-enables /O2, appended after add_detour_sample_dll's /Od so it wins on the cl.exe command line. + target_compile_options(slept PRIVATE /O2) +endif() + +add_detour_sample_dll(dslept + SOURCES slept/dslept.cpp slept/dslept.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "TimedSleepEx" "UntimedSleepEx" "GetSleptTicks" + LIBS kernel32.lib +) + +# verify.cpp is intentionally not listed here: slept.cpp/sleepold.cpp/sleepnew.cpp/sleepbed.cpp/ +# dslept.cpp above and below all end with #include "verify.cpp" (textual, no header guard), so +# listing it as its own SOURCES entry would compile it a second time as an independent +# translation unit -- one that lacks the each of those files includes beforehand, +# which detours.h needs to detect the target architecture. +add_detour_sample_exe(sleepold SOURCES slept/sleepold.cpp LIBS kernel32.lib) +target_link_options(sleepold PRIVATE /FIXED:NO) +add_detour_sample_exe(sleepnew SOURCES slept/sleepnew.cpp LIBS kernel32.lib slept) +target_link_options(sleepnew PRIVATE /FIXED:NO) +add_detour_sample_exe(sleepbed SOURCES slept/sleepbed.cpp LIBS kernel32.lib) +target_link_options(sleepbed PRIVATE /FIXED:NO) + +add_detour_sample_dll(simple + SOURCES simple/simple.cpp simple/simple.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "TimedSleepEx" + LIBS kernel32.lib +) +add_detour_sample_exe(sleep5 SOURCES simple/sleep5.cpp LIBS kernel32.lib) + +add_detour_sample_dll(simple_safe + SOURCES simple_safe/simple_safe.cpp simple_safe/simple_safe.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "TimedSleepEx" + LIBS kernel32.lib +) +if(MSVC) + target_compile_options(simple_safe PRIVATE /std:c++14) +endif() +# simple_safe/sleep5.cpp is a byte-for-byte copy of simple/sleep5.cpp; kept as its own +# target/binary under a distinct CMake target name since "sleep5" is already taken above. +add_detour_sample_exe(sleep5_safe SOURCES simple_safe/sleep5.cpp LIBS kernel32.lib) +set_target_properties(sleep5_safe PROPERTIES OUTPUT_NAME sleep5_safe) + +add_detour_sample_exe(payload SOURCES payload/payload.cpp LIBS kernel32.lib) +add_detour_sample_exe(payloadtarget SOURCES payload/payloadtarget.cpp LIBS kernel32.lib) +if(MSVC) + target_compile_options(payload PRIVATE /EHsc) + target_compile_options(payloadtarget PRIVATE /EHsc) +endif() + +# X86/X64 only (excludes ARM64EC too, unlike disas above). +if(DETOURS_SAMPLE_ARCH STREQUAL "X86" OR DETOURS_SAMPLE_ARCH STREQUAL "X64") + if(DETOURS_SAMPLE_ARCH STREQUAL "X64") + set(DETOURS_DALLOC_ARCH_SOURCE dynamic_alloc/x64.asm) + else() + set(DETOURS_DALLOC_ARCH_SOURCE dynamic_alloc/x86.asm) + endif() + add_detour_sample_exe(dalloc SOURCES dynamic_alloc/main.cpp ${DETOURS_DALLOC_ARCH_SOURCE} LIBS kernel32.lib user32.lib) + if(MSVC) + target_compile_options(dalloc PRIVATE /EHsc) + if(DETOURS_SAMPLE_ARCH STREQUAL "X86") + # x86.asm has no .SAFESEH directive, so it + # can't be marked as SafeSEH-compliant; since main.cpp's cl.exe-generated object + # *is* compliant, link.exe would otherwise require -- and fail to find -- SafeSEH + # info from every module, including this one (LNK2026/LNK1281 on x86 only). + target_link_options(dalloc PRIVATE /SAFESEH:NO) + endif() + endif() +endif() + +############################################################################## +## Plain samples with no shared DLL/EXE pairing. + +add_detour_sample_exe(member SOURCES member/member.cpp LIBS kernel32.lib) +add_detour_sample_exe(impmunge SOURCES impmunge/impmunge.cpp LIBS kernel32.lib imagehlp.lib) + +# X86 only. +if(DETOURS_SAMPLE_ARCH STREQUAL "X86") + add_detour_sample_exe(excep SOURCES excep/excep.cpp excep/firstexc.cpp LIBS kernel32.lib) + target_link_options(excep PRIVATE /ENTRY:WinMainCRTStartup) +endif() + +############################################################################## +## Fixed-base-address samples. edll1x/2x/3x and target.dll bypass add_detour_sample_dll's +## default export injection entirely (no export flag at all, or a single non-default export). + +if(DETOURS_SAMPLE_ARCH STREQUAL "ARM64EC") + set(DETOURS_EINST_EDLL1X_BASE 0x710000000) + set(DETOURS_EINST_EDLL2X_BASE 0x720000000) + set(DETOURS_EINST_EDLL3X_BASE 0x730000000) +else() + set(DETOURS_EINST_EDLL1X_BASE 0x7100000) + set(DETOURS_EINST_EDLL2X_BASE 0x7200000) + set(DETOURS_EINST_EDLL3X_BASE 0x7300000) +endif() + +add_library(edll1x SHARED einst/edll1x.cpp) +detours_sample_common_settings(edll1x) +target_link_libraries(edll1x PRIVATE kernel32.lib user32.lib) +target_link_options(edll1x PRIVATE /SUBSYSTEM:WINDOWS /BASE:${DETOURS_EINST_EDLL1X_BASE}) + +add_library(edll2x SHARED einst/edll2x.cpp) +detours_sample_common_settings(edll2x) +target_link_libraries(edll2x PRIVATE kernel32.lib user32.lib) +target_link_options(edll2x PRIVATE /SUBSYSTEM:CONSOLE /BASE:${DETOURS_EINST_EDLL2X_BASE}) + +add_library(edll3x SHARED einst/edll3x.cpp) +detours_sample_common_settings(edll3x) +target_link_libraries(edll3x PRIVATE kernel32.lib user32.lib) +target_link_options(edll3x PRIVATE /SUBSYSTEM:CONSOLE /BASE:${DETOURS_EINST_EDLL3X_BASE}) + +add_detour_sample_exe(einst SOURCES einst/einst.cpp LIBS kernel32.lib user32.lib edll1x edll2x edll3x) +target_link_options(einst PRIVATE /ENTRY:WinMainCRTStartup) + +if(DETOURS_SAMPLE_ARCH STREQUAL "ARM64EC") + set(DETOURS_FINDFUNC_TARGET_BASE 0x190000000) + set(DETOURS_FINDFUNC_EXTEND_BASE 0x1a0000000) +else() + set(DETOURS_FINDFUNC_TARGET_BASE 0x1900000) + set(DETOURS_FINDFUNC_EXTEND_BASE 0x1a00000) +endif() + +add_library(findfunc_target SHARED findfunc/target.cpp findfunc/target.rc) +set_target_properties(findfunc_target PROPERTIES OUTPUT_NAME target) +detours_sample_common_settings(findfunc_target) +target_link_libraries(findfunc_target PRIVATE kernel32.lib) +target_link_options(findfunc_target PRIVATE /EXPORT:Target /BASE:${DETOURS_FINDFUNC_TARGET_BASE}) + +add_detour_sample_dll(findfunc_extend SOURCES findfunc/extend.cpp findfunc/extend.rc LIBS kernel32.lib) +set_target_properties(findfunc_extend PROPERTIES OUTPUT_NAME extend) +target_link_options(findfunc_extend PRIVATE /BASE:${DETOURS_FINDFUNC_EXTEND_BASE}) + +# The external copy-of-dbghelp.dll step from the original build is intentionally not ported. +add_detour_sample_exe(findfunc SOURCES findfunc/findfunc.cpp LIBS kernel32.lib findfunc_target) +target_link_options(findfunc PRIVATE /FIXED:NO) +add_detour_sample_exe(symtest SOURCES findfunc/symtest.cpp LIBS kernel32.lib findfunc_target) +target_link_options(symtest PRIVATE /FIXED:NO) + +# X64 only for this CMake port; IA64 isn't part of this port at all. +if(DETOURS_SAMPLE_ARCH STREQUAL "X64") + # /FIXED requires ASLR off; link.exe defaults /DYNAMICBASE to ON regardless of CMake, so it + # must be disabled explicitly here. + set(DETOURS_TALLOC_LINK_OPTIONS /INCREMENTAL:NO /FIXED /DYNAMICBASE:NO /RELEASE /NODEFAULTLIB:oldnames.lib) + + # tdllNx.dll link lines use $(LINKFLAGS:/profile=/fixed) -- /FIXED replaces /PROFILE rather + # than adding to it, so these use DETOURS_TALLOC_LINK_OPTIONS instead of the common list. + function(add_talloc_dll name base) + add_library(${name} SHARED talloc/${name}.cpp) + if(MSVC) + target_compile_options(${name} PRIVATE ${DETOURS_SAMPLE_COMPILE_OPTIONS}) + target_compile_definitions(${name} PRIVATE $<$:DETOUR_DEBUG=1>) + target_link_options(${name} PRIVATE ${DETOURS_TALLOC_LINK_OPTIONS}) + endif() + target_link_libraries(${name} PRIVATE Microsoft::detours syelog kernel32.lib psapi.lib) + set(subsystem CONSOLE) + if(name STREQUAL "tdll1x") + set(subsystem WINDOWS) + endif() + target_link_options(${name} PRIVATE /SUBSYSTEM:${subsystem} /NOENTRY /BASE:${base}) + endfunction() + + add_talloc_dll(tdll1x 0x280000000) + add_talloc_dll(tdll2x 0x380000000) + add_talloc_dll(tdll3x 0x480050000) + add_talloc_dll(tdll4x 0x580000000) + add_talloc_dll(tdll5x 0x680000000) + add_talloc_dll(tdll6x 0x680010000) + add_talloc_dll(tdll7x 0x680020000) + add_talloc_dll(tdll8x 0x680030000) + add_talloc_dll(tdll9x 0x680040000) + + add_detour_sample_exe(talloc + SOURCES talloc/talloc.cpp + LIBS kernel32.lib psapi.lib tdll1x tdll2x tdll3x tdll4x tdll5x tdll6x tdll7x tdll8x tdll9x + ) + target_link_options(talloc PRIVATE /ENTRY:WinMainCRTStartup) +endif() + +############################################################################## +## cping - MIDL-generated RPC proxy/stub sample. No CMake built-in language +## support for MIDL, so it's driven by hand via find_program()/add_custom_command(). + +find_program(MIDL_EXECUTABLE midl REQUIRED) + +# ARM64EC reuses the X64 proxy stub; MIDL itself has no distinct ARM64EC target, only +# X86/IA64/X64/ARM/ARM64. +if(DETOURS_SAMPLE_ARCH STREQUAL "X86") + set(DETOURS_CPING_MIDL_ARCH_FLAGS /no_robust /win32) +else() + set(DETOURS_CPING_MIDL_ARCH_FLAGS /x64) +endif() + +set(DETOURS_CPING_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR}/cping) +add_custom_command( + OUTPUT + ${DETOURS_CPING_GENERATED_DIR}/iping.h + ${DETOURS_CPING_GENERATED_DIR}/iping_i.c + ${DETOURS_CPING_GENERATED_DIR}/iping_p.c + ${DETOURS_CPING_GENERATED_DIR}/iping_d.c + COMMAND ${CMAKE_COMMAND} -E make_directory ${DETOURS_CPING_GENERATED_DIR} + COMMAND ${MIDL_EXECUTABLE} /nologo /Oif /no_format_opt ${DETOURS_CPING_MIDL_ARCH_FLAGS} + /out ${DETOURS_CPING_GENERATED_DIR} /prefix all iping_ /dlldata iping_d.c + ${CMAKE_CURRENT_SOURCE_DIR}/cping/iping.idl + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cping/iping.idl + COMMENT "Generating RPC proxy/stub for cping via MIDL" + VERBATIM +) + +add_executable(cping + cping/cping.cpp + ${DETOURS_CPING_GENERATED_DIR}/iping_i.c + ${DETOURS_CPING_GENERATED_DIR}/iping_p.c + ${DETOURS_CPING_GENERATED_DIR}/iping_d.c +) +# The generated proxy/stub .c files are compiled at /W3 rather than the sample-wide /W4 +# (cping.cpp itself still gets the full /W4 from DETOURS_SAMPLE_COMPILE_OPTIONS). +# cl.exe's default PDB name for C (as opposed to C++) is the shared "vc.pdb" rather than a +# per-target name, so a parallel build of these three files races on writing it -- observed as +# C1041 under test-arm64ec's Ninja build even with /FS (whose mspdbsrv.exe synchronization isn't +# reliable there) and even with a per-file /Fd (CMake appends its own shared /Fd later on the +# command line, which wins since cl.exe uses the last one). Use /Z7 instead, which embeds debug +# info directly in each .obj and never touches a .pdb at all, sidestepping the conflict outright. +set_source_files_properties( + ${DETOURS_CPING_GENERATED_DIR}/iping_i.c + ${DETOURS_CPING_GENERATED_DIR}/iping_p.c + ${DETOURS_CPING_GENERATED_DIR}/iping_d.c + PROPERTIES + LANGUAGE C + COMPILE_OPTIONS "/W3;/Z7" +) +target_include_directories(cping PRIVATE ${DETOURS_CPING_GENERATED_DIR}) +detours_sample_common_settings(cping) +target_compile_definitions(cping PRIVATE + ENTRY_PREFIX=iping_ REGISTER_PROXY_DLL + _WIN32_WINNT=0x0400 CONST_VTABLE COBJMACROS WIN32 NT +) +target_link_libraries(cping PRIVATE + kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib rpcrt4.lib advapi32.lib wsock32.lib +) +# cping's own `test:` target starts a server (cping /s) and pings it -- stateful and +# interactive, not a quick isolated smoke test; left as build-only like traceapi/tracebld/ +# tracessl/tracetcp above. + +############################################################################## +## tryman - mixed native + C# sample. csc.exe/sn.exe are invoked directly, rather than via +## CMake's VS-generator-only enable_language(CSharp), so this works the same way under Ninja +## as under the VS generators. + +add_detour_sample_dll(tstman + SOURCES tryman/tstman.cpp tryman/tstman.rc + EXPORTS "DetourFinishHelperProcess,@1,NONAME" "Test3264" + LIBS kernel32.lib +) +add_detour_sample_exe(tryman SOURCES tryman/tryman.cpp LIBS kernel32.lib tstman) +add_detour_sample_exe(size SOURCES tryman/size.cpp) +target_link_options(size PRIVATE /FIXED:NO) + +set(DETOURS_TRYMAN_KEY ${CMAKE_CURRENT_BINARY_DIR}/key.snk) +add_custom_command( + OUTPUT ${DETOURS_TRYMAN_KEY} + COMMAND sn -k ${DETOURS_TRYMAN_KEY} + COMMENT "Generating strong-name key for managed tryman samples" + VERBATIM +) +# The VS generators build one utility vcxproj per managed- target below, and since +# none of them "owns" key.snk as its own OUTPUT, each vcxproj gets its own copy of this rule +# baked in. Under a parallel build that races multiple sn.exe invocations on the same file +# ("Failed to create key.snk -- The process cannot access the file because it is being used +# by another process."). Give it a single owning target and depend on that target (not the +# file) from each managed- target so only one vcxproj ever runs the rule. +add_custom_target(tryman_key ALL DEPENDS ${DETOURS_TRYMAN_KEY}) + +# platform:output-suffix pairs for the managed-.exe outputs below. +# The Itanium (/platform:itanium) variant is dropped -- IA64 isn't part of this CMake port. +set(DETOURS_TRYMAN_CSC_FLAGS /nowarn:1607 /unsafe- /optimize+ /debug+ /warnaserror) +foreach(entry x64:x64 x86:x86 anycpu:any anycpu32bitpreferred:any32) + string(REPLACE ":" ";" entry ${entry}) + list(GET entry 0 platform) + list(GET entry 1 suffix) + set(managed_exe ${CMAKE_CURRENT_BINARY_DIR}/managed-${suffix}.exe) + add_custom_command( + OUTPUT ${managed_exe} + COMMAND csc /nologo ${DETOURS_TRYMAN_CSC_FLAGS} /platform:${platform} + /keyfile:${DETOURS_TRYMAN_KEY} /out:${managed_exe} + managed.cs + # The VS generators build one utility vcxproj per OUTPUT here; when managed.cs is + # passed with its absolute source-tree path, they instead resolve it relative to the + # build tree at MSBuild time (CS1504: "...\build\samples\managed.cs" could not be + # opened). Running from tryman/ with a bare relative filename sidesteps that. + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tryman + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tryman/managed.cs + COMMENT "Building managed-${suffix}.exe via csc.exe" + VERBATIM + ) + add_custom_target(managed-${suffix} ALL DEPENDS ${managed_exe}) + add_dependencies(managed-${suffix} tryman_key) +endforeach() +# tryman's managed-*.exe / tstman.dll interaction is a manual/interactive scenario, not a +# clean pass/fail assertion; left out of add_test() below like cping above. + +############################################################################## +## Smoke tests -- only samples with a genuinely non-interactive, exit-code- +## checkable invocation are wired up here. +## +## traceapi/tracebld/tracessl/tracetcp launch Internet Explorer or an interactive +## cmd.exe session when run standalone and would hang a CI runner, so they're +## build-only. +## +## simple/slept/comeasy repeatedly toggle DLL injection on/off via setdll.exe +## (which rewrites the target .exe's import table in place) and only print +## human-readable banners for eyeball verification, with no actual pass/fail +## assertion -- not safe to reproduce under ctest's parallel/repeatable execution +## model. Their final withdll.exe step (dynamic injection, non-mutating) is kept +## instead as a real smoke test that the detour DLL loads and runs without +## crashing. +## +## echonul's mainCRTStartup (echo/main.cpp) always returns the fixed sentinel +## 0x99, regardless of success or failure, and prints nothing to stdout -- its +## exit code carries no pass/fail meaning and there is no output to assert on, +## so it isn't wired up as its own test. echofx's detoured run does print +## distinguishing output, so that's checked via PASS_REGULAR_EXPRESSION +## instead of the (always-0x99) exit code. +if(DETOURS_BUILD_TESTS) + add_test(NAME region COMMAND region) + add_test(NAME commem COMMAND commem) + add_test(NAME dtest COMMAND dtest) + + # withdll's own injection/resume of echonul.exe under it never completes on ARM64EC -- + # echofx.dll's DllMain is never entered (not even its first, unconditional printf), so + # this hangs until the TIMEOUT below on that platform. Unlike commem/comeasy (which + # failed in DetourAttach/trampoline generation and were fixed upstream by + # microsoft/Detours#388), this looks like a hang in the injection path itself, not in + # attach/trampoline logic -- skip it on ARM64EC until that's root-caused upstream. + if(NOT DETOURS_SAMPLE_ARCH STREQUAL "ARM64EC") + add_test(NAME echo_detoured COMMAND withdll -d:$ $) + set_tests_properties(echo_detoured PROPERTIES + PASS_REGULAR_EXPRESSION "Detoured Echo\\(\\)" + ) + endif() + + add_test(NAME simple COMMAND withdll -d:$ $) + add_test(NAME slept COMMAND withdll -d:$ $) + add_test(NAME comeasy COMMAND withdll -d:$ $) + + # None of these samples legitimately run anywhere near this long (the slowest, + # `simple`/`slept`, sleep for only a few seconds); a much larger cap just guards + # against a genuine hang (e.g. a detoured process deadlocking) silently consuming + # the whole CI job's multi-hour default timeout instead of failing fast. + set(DETOURS_SAMPLE_TESTS_WITH_TIMEOUT region commem dtest simple slept comeasy) + if(NOT DETOURS_SAMPLE_ARCH STREQUAL "ARM64EC") + list(APPEND DETOURS_SAMPLE_TESTS_WITH_TIMEOUT echo_detoured) + endif() + set_tests_properties(${DETOURS_SAMPLE_TESTS_WITH_TIMEOUT} PROPERTIES TIMEOUT 30) +endif() + +################################################################# End of File. diff --git a/samples/Makefile b/samples/Makefile deleted file mode 100644 index 5805d0bd..00000000 --- a/samples/Makefile +++ /dev/null @@ -1,323 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## -## Note: -## syelog, setdll, and withdll must be built first because a number of the -## other samples depend on them. -## - -ROOT=.. -!include .\common.mak - -############################################################################## - -all: - cd "$(MAKEDIR)\syelog" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\simple" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\simple_safe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\slept" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\setdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\withdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\cping" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\disas" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\dtest" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\dumpe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\dumpi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\echo" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\einst" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" - cd "$(MAKEDIR)\excep" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF - cd "$(MAKEDIR)\comeasy" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\commem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\findfunc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM" && "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\member" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF - cd "$(MAKEDIR)\region" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X64" || "$(DETOURS_TARGET_PROCESSOR)" == "IA64" - cd "$(MAKEDIR)\talloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF - cd "$(MAKEDIR)\traceapi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracebld" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracemem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracereg" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\traceser" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracessl" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracetcp" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\tracelnk" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM" && "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\tryman" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) -!ENDIF - cd "$(MAKEDIR)\impmunge" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\dynamic_alloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)\payload" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) - cd "$(MAKEDIR)" - -clean: - cd "$(MAKEDIR)\syelog" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\simple" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\simple_safe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\slept" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\setdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\withdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\cping" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\disas" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\dtest" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\dumpe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\dumpi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\echo" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\einst" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\excep" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\comeasy" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\commem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\findfunc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\member" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\region" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\talloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\traceapi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracebld" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracemem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracereg" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\traceser" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracessl" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracetcp" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tracelnk" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\tryman" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\impmunge" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\dynamic_alloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)\payload" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) clean - cd "$(MAKEDIR)" - -rmdir lib32 2>nul - -rmdir lib64 2>nul - -rmdir include 2>nul - -realclean: - cd "$(MAKEDIR)\syelog" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\simple" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\simple_safe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\slept" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\setdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\withdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\cping" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\disas" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\dtest" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\dumpe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\dumpi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\echo" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\einst" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\excep" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\comeasy" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\commem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\findfunc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\member" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\region" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\talloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\traceapi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracebld" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracemem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracereg" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\traceser" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracessl" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracetcp" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tracelnk" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\tryman" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\impmunge" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\dynamic_alloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)\payload" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) realclean - cd "$(MAKEDIR)" - -rmdir lib32 2>nul - -rmdir lib64 2>nul - -rmdir include 2>nul - -test: - cd "$(MAKEDIR)\syelog" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\simple" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\simple_safe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\slept" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\setdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\withdll" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" - cd "$(MAKEDIR)\cping" -# @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF - cd "$(MAKEDIR)\disas" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\dtest" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF - cd "$(MAKEDIR)\dumpe" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\dumpi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\echo" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\einst" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" - cd "$(MAKEDIR)\excep" -# @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\comeasy" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - - cd "$(MAKEDIR)\commem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\findfunc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\member" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\region" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X64" || "$(DETOURS_TARGET_PROCESSOR)" == "IA64" - cd "$(MAKEDIR)\talloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\traceapi" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\tracebld" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\tracemem" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\tracereg" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\traceser" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF -# cd "$(MAKEDIR)\tracessl" -# @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -# cd "$(MAKEDIR)\tracetcp" -# @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!IF "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - cd "$(MAKEDIR)\tracelnk" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test -!ENDIF - cd "$(MAKEDIR)\impmunge" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\dynamic_alloc" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)\payload" - @$(MAKE) /NOLOGO /$(MAKEFLAGS) test - cd "$(MAKEDIR)" - -## -################################################################# End of File. diff --git a/samples/README.TXT b/samples/README.TXT index 11b88177..5fa7be60 100644 --- a/samples/README.TXT +++ b/samples/README.TXT @@ -22,16 +22,16 @@ that does not have spaces in the full path name. BUILDING: ========= -Open a Developer Command Prompt for VS. Note there are several different -flavors of the command prompt for different target architectures. The -default Visual Studio Command prompt targets x86. To target x64, choose -the "X64 Native Tools Command Prompt for VS" +Open a Developer Command Prompt for VS, or run vcvarsall.bat for your target +architecture, so that cmake can find the MSVC toolset. From the root of your +git repo, configure and build with the samples option turned on: -Change directory to the samples directory for your git repo. To build the -samples, type "nmake". + cmake -S . -B build -DDETOURS_BUILD_SAMPLES=ON + cmake --build build Note that you must build setdll and syslog in order to use many of the -other sample programs. +other sample programs; both are built automatically as part of the samples +target above. INSTALLING AND BUILDING VIA VCPKG: ================================== @@ -47,15 +47,15 @@ The detours port in vcpkg is kept up to date by Microsoft team members and commu TESTING: ======== -Each of the sample directories has a test, which can be invoked by typing -"nmake test", to demonstrate the usage of the sample. With very few -exceptions, all of the executables also accept a "/?" command to display a -usage message. +A number of the samples have a test, registered with ctest, that demonstrates +their usage. With very few exceptions, all of the executables also accept a +"/?" command to display a usage message. -To run all sample tests, change directory to the samples directory and type -"nmake test". Note that some samples are architecture-specific. Tests for -those samples be run only on supported architectures and will be skipped on -other architectures. +To run the sample tests, configure with tests enabled as well and use ctest: + + cmake -S . -B build -DDETOURS_BUILD_SAMPLES=ON -DDETOURS_BUILD_TESTS=ON + cmake --build build + ctest --test-dir build COMMENTS: ========= diff --git a/samples/comeasy/Makefile b/samples/comeasy/Makefile deleted file mode 100644 index 0c3a057c..00000000 --- a/samples/comeasy/Makefile +++ /dev/null @@ -1,116 +0,0 @@ -############################################################################## -## -## API Extension to Measure time slept. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\wrotei$(DETOURS_BITS).dll \ - $(BIND)\comeasy.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\wrotei$(DETOURS_BITS).bsc \ - $(OBJD)\comeasy.bsc \ -!ENDIF - option - -############################################################################## - -clean: - -del $(BIND)\wrotei*.* 2>nul - -del $(BIND)\comeasy.* 2>nul - -del $(BIND)\wrotei.* *~ 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -############################################################################## - -$(OBJD)\wrotei.obj : wrotei.cpp - -$(OBJD)\wrotei.res : wrotei.rc - -$(BIND)\wrotei$(DETOURS_BITS).dll $(BIND)\wrotei$(DETOURS_BITS).lib: \ - $(OBJD)\wrotei.obj $(OBJD)\wrotei.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\wrotei.obj $(OBJD)\wrotei.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) ole32.lib - -$(OBJD)\wrotei$(DETOURS_BITS).bsc : $(OBJD)\wrotei.obj - bscmake /v /n /o $@ $(OBJD)\wrotei.sbr - -$(OBJD)\comeasy.obj : comeasy.cpp - -$(BIND)\comeasy.exe : $(OBJD)\comeasy.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\comeasy.obj \ - /link $(LINKFLAGS) $(LIBS) ole32.lib \ - /subsystem:console /fixed:no - -$(OBJD)\comeasy.bsc : $(OBJD)\comeasy.obj - bscmake /v /n /o $@ $(OBJD)\comeasy.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\wrotei$(DETOURS_OPTION_BITS).dll: -$(OPTD)\wrotei$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\wrotei$(DETOURS_OPTION_BITS).dll : $(OPTD)\wrotei$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\wrotei$(DETOURS_OPTION_BITS).pdb : $(OPTD)\wrotei$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\wrotei$(DETOURS_OPTION_BITS).dll \ - $(BIND)\wrotei$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Reseting test binaries to initial state. ----------------------- - $(BIND)\setdll.exe -r $(BIND)\comeasy.exe - @echo. - @echo -------- Should not load slept$(DETOURS_BITS).dll -------------------------------------- - $(BIND)\comeasy.exe - @echo. - @echo -------- Adding wrotei$(DETOURS_BITS).dll to comeasy.exe ------------------------------ - $(BIND)\setdll.exe -d:$(BIND)\wrotei$(DETOURS_BITS).dll $(BIND)\comeasy.exe - @echo. - @echo -------- Should load wrotei$(DETOURS_BITS).dll ---------------------------------------- - $(BIND)\comeasy.exe - @echo. - @echo -------- Removing wrotei$(DETOURS_BITS).dll from comeasy.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\comeasy.exe - @echo. - @echo -------- Should not load wrotei$(DETOURS_BITS).dll ------------------------------------ - $(BIND)\comeasy.exe - @echo. - @echo -------- Should load wrotei$(DETOURS_BITS).dll dynamically using withdll.exe ---------- - $(BIND)\withdll.exe -d:$(BIND)\wrotei$(DETOURS_BITS).dll $(BIND)\comeasy.exe - @echo. - @echo -------- Test completed. ------------------------------------------------ - -################################################################# End of File. diff --git a/samples/commem/Makefile b/samples/commem/Makefile deleted file mode 100644 index 70cdd59a..00000000 --- a/samples/commem/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\commem.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\commem.bsc -!ENDIF - -clean: - -del *~ *.obj *.sbr 2> nul - -del $(BIND)\commem.* 2> nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(BIND)\commem.obj : commem.cpp - -$(BIND)\commem.exe : $(OBJD)\commem.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\commem.obj \ - /link $(LINKFLAGS) $(LIBS) ole32.lib /subsystem:console - -$(OBJD)\commem.bsc : $(OBJD)\commem.obj - bscmake /v /n /o $@ $(OBJD)\commem.sbr - -############################################################################## - -test: $(BIND)\commem.exe - @echo. - $(BIND)\commem.exe - @echo. - -################################################################# End of File. diff --git a/samples/common.mak b/samples/common.mak deleted file mode 100644 index 5612f3de..00000000 --- a/samples/common.mak +++ /dev/null @@ -1,97 +0,0 @@ -############################################################################## -## -## Common makefile for Detours test programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!IF "$(ROOT)" == "" -ROOT = ..\.. -!ENDIF -!include "$(ROOT)\system.mak" - -!IF "$(DETOURS_SOURCE_BROWSING)" == "" -DETOURS_SOURCE_BROWSING=0 -!ENDIF - -############################################################################## - -!IFNDEF CLIB -CLIB=/MT -!ENDIF - -AFLAGS=/nologo /Zi /c /Fl -CFLAGS=/nologo /Zi $(CLIB) /Gm- /W4 /WX /we4777 /we4800 /Od /DDETOUR_DEBUG=$(DETOURS_DEBUG) - -!IF $(DETOURS_SOURCE_BROWSING)==1 -CFLAGS=$(CFLAGS) /FR -!ELSE -CFLAGS=$(CFLAGS) /I$(INCD) -!ENDIF - -LIBFLAGS=/nologo -LINKFLAGS=/release /incremental:no /profile /nodefaultlib:oldnames.lib - -!if defined(DETOURS_WIN_7) && defined(DETOURS_CL_17_OR_NEWER) -CFLAGS=$(CFLAGS) /D_USING_V110_SDK71_ -!endif - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" - -ASM=ml - -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X64" - -ASM=ml64 - -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" - -ASM=ias -AFLAGS=-F COFF32_PLUS -CFLAGS=$(CFLAGS) /wd4163 # intrinsic rdtebex not available; using newer Windows headers with older compiler -#CFLAGS=$(CFLAGS) /wd4996 /wd4068 - -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM" - -ASM=armasm -AFLAGS=-coff_thumb2_only -CFLAGS=$(CFLAGS) /D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE - -CFLAGS=$(CFLAGS) /D_$(DETOURS_TARGET_PROCESSOR:X64=AMD64)_ # redundant with windows.h except for midl proxies - -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64" - -ASM=armasm64 - -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" - -ASM=ml64 -CFLAGS=/arm64EC $(CFLAGS) -LIBFLAGS=$(LIBFLAGS) /machine:arm64x -LINKFLAGS=$(LINKFLAGS) /machine:arm64ec softintrin.lib - -!ENDIF - -DEPS = $(LIBD)\syelog.lib $(LIBD)\detours.lib -LIBS = $(DEPS) - -############################################################################## -## - -.SUFFIXES: .cpp .h .obj .rc .res - -!ifdef DETOURS_ANALYZE -.cpp{$(OBJD)}.obj: - $(CC) $(CFLAGS) /Fd$(OBJD)\vc.pdb /Fo$(OBJD)\ /c $< -!else -.cpp{$(OBJD)}.obj:: - $(CC) $(CFLAGS) /Fd$(OBJD)\vc.pdb /Fo$(OBJD)\ /c $< -!endif - -.rc{$(OBJD)}.res: - rc /nologo /DDETOURS_BITS=$(DETOURS_BITS) /fo$(@) /i$(INCD) $(*B).rc - -## -################################################################# End of File. diff --git a/samples/cping/Makefile b/samples/cping/Makefile deleted file mode 100644 index a4ada9bc..00000000 --- a/samples/cping/Makefile +++ /dev/null @@ -1,132 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) \ - kernel32.lib \ - user32.lib \ - shell32.lib \ - uuid.lib \ - ole32.lib \ - rpcrt4.lib \ - advapi32.lib \ - wsock32.lib \ - -# RpcProxy.h uses #ifdef WIN32. - -!if "$(DETOURS_TARGET_PROCESSOR)" == "ARM" -CFLAGS = $(CFLAGS) /D_WIN32_WINNT=0x0500 -!else -CFLAGS = $(CFLAGS) /D_WIN32_WINNT=0x0400 -!endif - -CFLAGS = $(CFLAGS) /Fd$(OBJD)\vc.pdb \ - /DCONST_VTABLE \ - /DCOBJMACROS -DWIN32 -DNT - -C__FLAGS=-DENTRY_PREFIX=iping_ -DREGISTER_PROXY_DLL -CPPFLAGS= - -############################################################################## - -.SUFFIXES: .c .cpp .h .idl .obj .res .rc - -{$(OBJD)}.c{$(OBJD)}.obj: - $(CC) $(CFLAGS:/W4=/W3) $(C__FLAGS) /I$(OBJD) /Fo$(OBJD)\ /c $< - -!ifdef DETOURS_ANALYZE -.cpp{$(OBJD)}.obj: - $(CC) $(CFLAGS) $(CPPFLAGS) /I$(OBJD) /Fo$(OBJD)\ /c $< -!else -.cpp{$(OBJD)}.obj:: - $(CC) $(CFLAGS) $(CPPFLAGS) /I$(OBJD) /Fo$(OBJD)\ /c $< -!endif - -.rc{$(OBJD)}.res: - rc /nologo /Fo$@ .\$(*B).rc - -############################################################################## -## -C__FLAGS=-DENTRY_PREFIX=iping_ -DREGISTER_PROXY_DLL -CPPFLAGS= - - -MIDLFLAGS=/nologo /Oif /no_format_opt - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" -MIDLFLAGS=$(MIDLFLAGS) /no_robust /win32 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" -MIDLFLAGS=$(MIDLFLAGS) /ia64 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X64" -MIDLFLAGS=$(MIDLFLAGS) /x64 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM" -MIDLFLAGS=$(MIDLFLAGS) /arm32 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64" -MIDLFLAGS=$(MIDLFLAGS) /arm64 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -MIDLFLAGS=$(MIDLFLAGS) /x64 -!ENDIF - -OBJS = \ - $(OBJD)\cping.obj \ - \ - $(OBJD)\iping_i.obj \ - $(OBJD)\iping_p.obj \ - $(OBJD)\iping_d.obj \ - -############################################################################## - -all: dirs \ - $(BIND)\cping.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\cping.bsc -!ENDIF - -############################################################################## - -clean: - -del iping.h *.c *.obj *.sbr *~ 2>nul - -del $(BIND)\cping.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\cping.bsc : $(OBJS) - bscmake /v /n /o $@ $(OBJS:.obj=.sbr) - -$(BIND)\cping.exe : $(OBJS) $(DEPS) - cl $(CFLAGS) /Fe$@ $(OBJS) /link $(LINKFLAGS) \ - /subsystem:console $(LIBS) - -$(OBJD)\cping.obj: cping.cpp $(OBJD)\iping.h - -############################################################################## -## -$(OBJD)\iping.h $(OBJD)\iping_d.c $(OBJD)\iping_i.c $(OBJD)\iping_p.c : iping.idl - midl $(MIDLFLAGS) /out $(OBJD) /prefix all iping_ /dlldata iping_d.c iping.idl - -$(OBJD)\iping_i.obj: $(OBJD)\iping_i.c -$(OBJD)\iping_p.obj: $(OBJD)\iping_p.c $(OBJD)\iping.h -$(OBJD)\iping_d.obj: $(OBJD)\iping_d.c - -############################################################################## - -test: $(BIND)\cping.exe - start $(BIND)\cping.exe /s - $(BIND)\cping.exe /p localhost - -################################################################# End of File. diff --git a/samples/disas/Makefile b/samples/disas/Makefile deleted file mode 100644 index 88195cf2..00000000 --- a/samples/disas/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -# temporarily disable this test for ARM64 -!if "$(DETOURS_TARGET_PROCESSOR)" != "ARM64" - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\disas.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\disas.bsc -!ENDIF - -clean: - -del *~ *.obj *.sbr *.lst 2>nul - -del $(BIND)\disas.* 2> nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" -$(OBJD)\disasm.obj : x86.cpp - cl $(CFLAGS) /Fe$@ /FAcs /Fa$(OBJD)\x86.lst \ - /Fd$(@R).pdb /Fo$(OBJD)\disasm.obj /c x86.cpp -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X64" || "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -$(OBJD)\disasm.obj : x64.asm - $(ASM) $(AFLAGS) /Fo$(OBJD)\disasm.obj /Fl$(OBJD)\x64.lst x64.asm -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" -$(OBJD)\disasm.obj : ia64.asm - $(ASM) $(AFLAGS) -o $(OBJD)\disasm.obj ia64.asm -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM" -$(OBJD)\disasm.obj : arm.asm - $(ASM) $(AFLAGS) -list $(OBJD)\arm.lst -o $(OBJD)\disasm.obj arm.asm -!ENDIF - -$(BIND)\disas.obj : disas.cpp - -$(BIND)\disas.exe : $(OBJD)\disas.obj $(OBJD)\disasm.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /FAcs /Fa$(OBJD)\disas.lst /Fd$(@R).pdb \ - $(OBJD)\disas.obj $(OBJD)\disasm.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console /entry:WinMainCRTStartup - -$(OBJD)\disas.bsc : $(OBJD)\disas.obj - bscmake /v /n /o $@ $(OBJD)\disas.sbr - -############################################################################## - -test: $(BIND)\disas.exe - $(BIND)\disas.exe - -############################################################################## - -!else - -all: -test: -clean: -realclean: - -!endif - -################################################################# End of File. diff --git a/samples/dtest/Makefile b/samples/dtest/Makefile deleted file mode 100644 index 1ec09d93..00000000 --- a/samples/dtest/Makefile +++ /dev/null @@ -1,107 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\dtarge$(DETOURS_BITS).dll \ - $(BIND)\dtest.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\dtarge$(DETOURS_BITS).bsc \ - $(OBJD)\dtest.bsc \ -!ENDIF - option - -clean: - -del *~ *.obj *.sbr 2> nul - -del $(BIND)\dtest.* $(BIND)\dtarge*.* 2> nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\dtarge.obj : dtarge.cpp - -$(OBJD)\dtarge.res : dtarge.rc - -$(BIND)\dtarge$(DETOURS_BITS).dll $(BIND)\dtarge$(DETOURS_BITS).lib: \ - $(OBJD)\dtarge.obj $(OBJD)\dtarge.res $(DEPS) - cl /LD $(CFLAGS) \ - /Fe$(@R).dll \ - /Fd$(@R).pdb \ - $(OBJD)\dtarge.obj $(OBJD)\dtarge.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:Target0 \ - /export:Target1 \ - /export:Target2 \ - /export:Target3 \ - /export:Target4 \ - /export:Target5 \ - /export:Target6 \ - /export:Target7 \ - /export:Target8 \ - /export:Target9 \ - /export:Target10 \ - /export:Target11 \ - /export:Target12 \ - /export:Target13 \ - /export:Target14 \ - /export:Target15 \ - /export:Target16 \ - /export:TargetV \ - /export:TargetR \ - $(LIBS) - -$(OBJD)\dtarge$(DETOURS_BITS).bsc : $(OBJD)\dtarge.obj - bscmake /v /n /o $@ $(OBJD)\dtarge.sbr - -$(OBJD)\dtest.obj : dtest.cpp - -$(BIND)\dtest.exe : $(OBJD)\dtest.obj $(BIND)\dtarge$(DETOURS_BITS).lib $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\dtest.obj \ - /link $(LINKFLAGS) $(LIBS) $(BIND)\dtarge$(DETOURS_BITS).lib \ - /subsystem:console /entry:WinMainCRTStartup - -$(OBJD)\dtest.bsc : $(OBJD)\dtest.obj - bscmake /v /n /o $@ $(OBJD)\dtest.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\dtarge$(DETOURS_OPTION_BITS).dll: -$(OPTD)\dtarge$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\dtarge$(DETOURS_OPTION_BITS).dll : $(OPTD)\dtarge$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\dtarge$(DETOURS_OPTION_BITS).pdb : $(OPTD)\dtarge$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\dtarge$(DETOURS_OPTION_BITS).dll \ - $(BIND)\dtarge$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - $(BIND)\dtest.exe - -################################################################# End of File. diff --git a/samples/dumpe/Makefile b/samples/dumpe/Makefile deleted file mode 100644 index bca74815..00000000 --- a/samples/dumpe/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\dumpe.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\dumpe.bsc -!ENDIF - -clean: - -del *~ 2>nul - -del $(BIND)\dumpe.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\dumpe.obj : dumpe.cpp - -$(BIND)\dumpe.exe : $(OBJD)\dumpe.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\dumpe.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console - -$(OBJD)\dumpe.bsc : $(OBJD)\dumpe.obj - bscmake /v /n /o $@ $(OBJD)\dumpe.sbr - -############################################################################## - -test: $(BIND)\dumpe.exe - $(BIND)\dumpe.exe $(BIND)\slept.dll - -testx: $(BIND)\dumpe.exe - cd $(MAKEDIR)\..\..\src - nmake - cd $(MAKEDIR) - if exist $(SYSTEMROOT)\system32\browseui.dll $(BIND)\dumpe.exe browseui.dll - -################################################################# End of File. diff --git a/samples/dumpi/Makefile b/samples/dumpi/Makefile deleted file mode 100644 index 641f86a0..00000000 --- a/samples/dumpi/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs - Dump Imports -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\dumpi.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\dumpi.bsc \ -!ENDIF - -clean: - -del *~ 2>nul - -del $(BIND)\dumpi.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\dumpi.obj : dumpi.cpp - -$(BIND)\dumpi.exe : $(OBJD)\dumpi.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\dumpi.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console - -$(OBJD)\dumpi.bsc : $(OBJD)\dumpi.obj - bscmake /v /n /o $@ $(OBJD)\dumpi.sbr - -############################################################################## - -test: $(BIND)\dumpi.exe - $(BIND)\dumpi.exe $(BIND)\slept.dll $(BIND)\sleepold.exe - -################################################################# End of File. diff --git a/samples/dynamic_alloc/Makefile b/samples/dynamic_alloc/Makefile deleted file mode 100644 index d64d7cc1..00000000 --- a/samples/dynamic_alloc/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -# This test is x86 only -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X86" || "$(DETOURS_TARGET_PROCESSOR)" == "X64" - -TARGET_NAME=dalloc -CFLAGS=\ - $(CFLAGS)\ - /EHsc\ - -LIBS=$(LIBS)\ - user32.lib\ - -all: dirs $(BIND)\$(TARGET_NAME).exe - -############################################################################## - -clean: - -del $(BIND)\$(TARGET_NAME).* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X64" -$(OBJD)\asm.obj : x64.asm - $(ASM) $(AFLAGS) /Fl$(OBJD)\x64.lst /Fo$(OBJD)\asm.obj x64.asm -!ELSE -$(OBJD)\asm.obj : x86.asm - $(ASM) $(AFLAGS) /Fl$(OBJD)\x86.lst /Fo$(OBJD)\asm.obj x86.asm -!ENDIF - -$(OBJD)\main.obj : main.cpp - -$(BIND)\$(TARGET_NAME).exe : $(OBJD)\main.obj $(OBJD)\asm.obj $(DEPS) - link\ - /SUBSYSTEM:CONSOLE\ - $(LINKFLAGS)\ - $(LIBS)\ - /PDB:"$(@R).pdb"\ - /OUT:"$@"\ - $**\ - -############################################################################## - -test: all - $(BIND)\$(TARGET_NAME).exe - -############################################################################## - -!ELSE - -all: - @echo The platform `$(DETOURS_TARGET_PROCESSOR)` is not supported. Skipping. -test: - @echo The platform `$(DETOURS_TARGET_PROCESSOR)` is not supported. Skipping. -clean: -realclean: - -!ENDIF - -################################################################# End of File. diff --git a/samples/echo/Makefile b/samples/echo/Makefile deleted file mode 100644 index 366d739d..00000000 --- a/samples/echo/Makefile +++ /dev/null @@ -1,108 +0,0 @@ -############################################################################## -## -## Detours Test Program -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\echofx$(DETOURS_BITS).dll \ - $(BIND)\echonul.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\echofx$(DETOURS_BITS).bsc \ - $(OBJD)\echonul.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\echofx.obj : echofx.cpp - -$(OBJD)\echofx.res : echofx.rc - -$(BIND)\echofx$(DETOURS_BITS).dll $(BIND)\echofx$(DETOURS_BITS).lib: \ - $(OBJD)\echofx.obj $(OBJD)\echofx.res $(DEPS) $(BIND)\echonul.lib - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\echofx.obj $(OBJD)\echofx.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:Mine_Echo \ - $(LIBS) $(BIND)\echonul.lib - -$(OBJD)\echofx$(DETOURS_BITS).bsc : $(OBJD)\echofx.obj - bscmake /v /n /o $@ $(OBJD)\echofx.sbr - -$(OBJD)\echonul.obj : echonul.cpp -$(OBJD)\main.obj : main.cpp - -$(BIND)\echonul.exe $(BIND)\echonul.lib: $(OBJD)\main.obj $(OBJD)\echonul.obj - cl $(CFLAGS) /Zl /Fe$(BIND)\echonul.exe /Fd$(@R).pdb \ - $(OBJD)\main.obj $(OBJD)\echonul.obj \ - /link $(LINKFLAGS) \ - /export:Echo \ - /subsystem:console - -$(OBJD)\echonul.bsc : echonul.obj - bscmake /v /n /o $@ echonul.sbr - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\echofx*.* 2>nul - -del $(BIND)\echonul.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\echofx$(DETOURS_OPTION_BITS).dll: -$(OPTD)\echofx$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\echofx$(DETOURS_OPTION_BITS).dll : $(OPTD)\echofx$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\echofx$(DETOURS_OPTION_BITS).pdb : $(OPTD)\echofx$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\echofx$(DETOURS_OPTION_BITS).dll \ - $(BIND)\echofx$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Should echo nothing. -------------------------------------- - -$(BIND)\echonul.exe - @echo -------- Should echo Hello World. ---------------------------------- - -$(BIND)\withdll.exe -d:$(BIND)\echofx$(DETOURS_BITS).dll $(BIND)\echonul.exe - @echo. - -testd: all - @echo. - -windbg -o -g -G $(BIND)\withdll.exe -d:$(BIND)\echofx$(DETOURS_BITS).dll $(BIND)\echonul.exe - @echo. - -################################################################# End of File. diff --git a/samples/einst/Makefile b/samples/einst/Makefile deleted file mode 100644 index 24faacc2..00000000 --- a/samples/einst/Makefile +++ /dev/null @@ -1,148 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -# ARM64 does not like base addresses below 4GB. -# Append two extra zeros for it. -# -!if "$(DETOURS_TARGET_PROCESSOR)" == "ARM64" || "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -EDLL1X_BASE=0x710000000 -EDLL2X_BASE=0x720000000 -EDLL3X_BASE=0x730000000 -!else -EDLL1X_BASE=0x7100000 -EDLL2X_BASE=0x7200000 -EDLL3X_BASE=0x7300000 -!endif - -LIBS=$(LIBS) kernel32.lib user32.lib - -all: dirs \ - $(BIND)\edll1x$(DETOURS_BITS).dll \ - $(BIND)\edll2x$(DETOURS_BITS).dll \ - $(BIND)\edll3x$(DETOURS_BITS).dll \ - $(BIND)\einst.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\edll1x$(DETOURS_BITS).bsc \ - $(OBJD)\edll2x$(DETOURS_BITS).bsc \ - $(OBJD)\edll3x$(DETOURS_BITS).bsc \ - $(OBJD)\einst.bsc \ -!ENDIF - option - -clean: - -del *~ 2>nul - -del $(BIND)\edll1x*.* 2>nul - -del $(BIND)\edll2x*.* 2>nul - -del $(BIND)\edll3x*.* 2>nul - -del $(BIND)\einst.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -############################################################################## - -$(OBJD)\einst.obj : einst.cpp - -$(BIND)\einst.exe : $(OBJD)\einst.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\einst.obj \ - /link $(LINKFLAGS) $(LIBS) \ - $(BIND)\edll1x$(DETOURS_BITS).lib $(BIND)\edll2x$(DETOURS_BITS).lib $(BIND)\edll3x$(DETOURS_BITS).lib \ - /subsystem:console /entry:WinMainCRTStartup - -$(OBJD)\einst.bsc : $(OBJD)\einst.obj - bscmake /v /n /o $@ $(OBJD)\einst.sbr - -$(OBJD)\edll1x.obj : edll1x.cpp - -$(BIND)\edll1x$(DETOURS_BITS).dll : $(OBJD)\edll1x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\edll1x.obj /LD \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:windows \ - /base:$(EDLL1X_BASE) - -$(OBJD)\edll1x$(DETOURS_BITS).bsc : $(OBJD)\edll1x.obj - bscmake /v /n /o $@ $(OBJD)\edll1x.sbr - -$(OBJD)\edll2x.obj : edll2x.cpp - -$(BIND)\edll2x$(DETOURS_BITS).dll : $(OBJD)\edll2x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\edll2x.obj /LD \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console \ - /base:$(EDLL2X_BASE) - -$(OBJD)\edll2x$(DETOURS_BITS).bsc : $(OBJD)\edll2x.obj - bscmake /v /n /o $@ $(OBJD)\edll2x.sbr - -$(OBJD)\edll3x.obj : edll3x.cpp - -$(BIND)\edll3x$(DETOURS_BITS).dll : $(OBJD)\edll3x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\edll3x.obj /LD \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console \ - /base:$(EDLL3X_BASE) - -$(OBJD)\edll3x$(DETOURS_BITS).bsc : $(OBJD)\edll3x.obj - bscmake /v /n /o $@ $(OBJD)\edll3x.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\edll1x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\edll1x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\edll2x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\edll2x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\edll3x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\edll3x$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\edll1x$(DETOURS_OPTION_BITS).dll : $(OPTD)\edll1x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\edll1x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\edll1x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\edll2x$(DETOURS_OPTION_BITS).dll : $(OPTD)\edll2x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\edll2x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\edll2x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\edll3x$(DETOURS_OPTION_BITS).dll : $(OPTD)\edll3x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\edll3x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\edll3x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\edll1x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\edll1x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\edll2x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\edll2x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\edll3x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\edll3x$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - $(BIND)\einst.exe - -################################################################# End of File. diff --git a/samples/excep/Makefile b/samples/excep/Makefile deleted file mode 100644 index 42f7d8c9..00000000 --- a/samples/excep/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\excep.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\excep.bsc -!ENDIF - -clean: - -del *~ 2>nul - -del $(BIND)\excep.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\excep.obj : excep.cpp -$(OBJD)\firstexc.obj : firstexc.cpp - -$(BIND)\excep.exe : $(OBJD)\excep.obj $(OBJD)\firstexc.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\excep.obj $(OBJD)\firstexc.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console /entry:WinMainCRTStartup - -$(OBJD)\excep.bsc : $(OBJD)\excep.obj - bscmake /v /n /o $@ $(OBJD)\excep.sbr - -############################################################################## - -test: $(BIND)\excep.exe - $(BIND)\excep.exe - -################################################################# End of File. diff --git a/samples/findfunc/Makefile b/samples/findfunc/Makefile deleted file mode 100644 index ba6befb4..00000000 --- a/samples/findfunc/Makefile +++ /dev/null @@ -1,178 +0,0 @@ -############################################################################## -## -## Program to test DetourFindFunction. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -# ARM64 does not like base addresses below 4GB. -# Append two extra zeros for it. -# -!if "$(DETOURS_TARGET_PROCESSOR)" == "ARM64" || "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -TARGET_BASE=0x190000000 -EXTEND_BASE=0x1a0000000 -!else -TARGET_BASE=0x1900000 -EXTEND_BASE=0x1a00000 -!endif - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\target$(DETOURS_BITS).dll \ - $(BIND)\extend$(DETOURS_BITS).dll \ - $(BIND)\findfunc.exe \ - $(BIND)\symtest.exe \ - $(BIND)\dbghelp.dll \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\target$(DETOURS_BITS).bsc \ - $(OBJD)\extend$(DETOURS_BITS).bsc \ - $(OBJD)\findfunc.bsc \ - $(OBJD)\symtest.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\target.obj : target.cpp - -$(OBJD)\target.res : target.rc - -$(BIND)\target$(DETOURS_BITS).dll $(BIND)\target$(DETOURS_BITS).lib: \ - $(OBJD)\target.obj $(OBJD)\target.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\target.obj $(OBJD)\target.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:Target \ - /base:$(TARGET_BASE) \ - $(LIBS) - -$(OBJD)\target$(DETOURS_BITS).bsc : $(OBJD)\target.obj - bscmake /v /n /o $@ $(OBJD)\target.sbr - -$(OBJD)\extend.obj : extend.cpp - -$(OBJD)\extend.res : extend.rc - -$(BIND)\extend$(DETOURS_BITS).dll $(BIND)\extend$(DETOURS_BITS).lib: \ - $(OBJD)\extend.obj $(OBJD)\extend.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\extend.obj $(OBJD)\extend.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /base:$(EXTEND_BASE) \ - $(LIBS) - -$(OBJD)\extend$(DETOURS_BITS).bsc : $(OBJD)\extend.obj - bscmake /v /n /o $@ $(OBJD)\extend.sbr - -$(OBJD)\findfunc.obj : findfunc.cpp - -$(BIND)\findfunc.exe : $(OBJD)\findfunc.obj $(BIND)\target$(DETOURS_BITS).lib $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\findfunc.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no $(BIND)\target$(DETOURS_BITS).lib - -$(OBJD)\findfunc.bsc : $(OBJD)\findfunc.obj - bscmake /v /n /o $@ $(OBJD)\findfunc.sbr - -$(OBJD)\symtest.obj : symtest.cpp - -$(BIND)\symtest.exe : $(OBJD)\symtest.obj $(BIND)\target$(DETOURS_BITS).lib $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\symtest.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no $(BIND)\target$(DETOURS_BITS).lib - -$(OBJD)\symtest.bsc : $(OBJD)\symtest.obj - bscmake /v /n /o $@ $(OBJD)\symtest.sbr - -# We try to get the 64-bit dbghelp first because it is a lot more useful. -$(BIND)\dbghelp.dll : {"$(PROGRAMFILES)\Debugging Tools for Windows 64-bit";$(PATH)}dbghelp.dll - -copy $** $(BIND)\dbghelp.dll - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\target*.* $(BIND)\extend*.* 2>nul - -del $(BIND)\findfunc.* $(BIND)\symtest.* $(BIND)\dbghelp.dll 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\extend$(DETOURS_OPTION_BITS).dll: -$(OPTD)\extend$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\target$(DETOURS_OPTION_BITS).dll: -$(OPTD)\target$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\extend$(DETOURS_OPTION_BITS).dll : $(OPTD)\extend$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\extend$(DETOURS_OPTION_BITS).pdb : $(OPTD)\extend$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\target$(DETOURS_OPTION_BITS).dll : $(OPTD)\target$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\target$(DETOURS_OPTION_BITS).pdb : $(OPTD)\target$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\extend$(DETOURS_OPTION_BITS).dll \ - $(BIND)\extend$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\target$(DETOURS_OPTION_BITS).dll \ - $(BIND)\target$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -verbose: all - cls - $(BIND)\symtest.exe - -test: all - @echo -------- Reseting test binaries to initial state. ----------------------- - $(BIND)\setdll.exe -r $(BIND)\findfunc.exe - @echo. - @echo -------- Should not load extend$(DETOURS_BITS).dll-------------------------------------- - $(BIND)\findfunc.exe - @echo. - @echo -------- Adding extend$(DETOURS_BITS).dll to findfunc.exe ------------------------------ - $(BIND)\setdll.exe -d:$(BIND)\extend$(DETOURS_BITS).dll $(BIND)\findfunc.exe - @echo. - @echo -------- Should load extend$(DETOURS_BITS).dll statically ------------------------------ - $(BIND)\findfunc.exe - @echo. - @echo -------- Removing extend$(DETOURS_BITS).dll from findfunc.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\findfunc.exe - @echo. - @echo -------- Should not load extend$(DETOURS_BITS).dll ------------------------------------- - $(BIND)\findfunc.exe - @echo. - @echo -------- Should load extend$(DETOURS_BITS).dll dynamically using withdll.exe ----------- - $(BIND)\withdll.exe -d:$(BIND)\extend$(DETOURS_BITS).dll $(BIND)\findfunc.exe - @echo. - @echo -------- Should list symbols using symtest.exe ----------- - $(BIND)\symtest.exe - @echo. - @echo -------- Test completed. ------------------------------------------------ - -################################################################# End of File. diff --git a/samples/impmunge/Makefile b/samples/impmunge/Makefile deleted file mode 100644 index e320b0c4..00000000 --- a/samples/impmunge/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\impmunge.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\impmunge.bsc -!ENDIF - -############################################################################## - -clean: - -del *~ test.exe.* 2>nul - -del $(BIND)\impmunge.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\impmunge.obj : impmunge.cpp - -$(BIND)\impmunge.exe : $(OBJD)\impmunge.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\impmunge.obj \ - /link $(LINKFLAGS) $(LIBS) imagehlp.lib /subsystem:console - -$(OBJD)\impmunge.bsc : $(OBJD)\impmunge.obj - bscmake /v /n /o $@ $(OBJD)\impmunge.sbr - -############################################################################## - -test: $(BIND)\impmunge.exe - $(BIND)\impmunge.exe /m /o:test.exe.1 $(BIND)\impmunge.exe - $(BIND)\impmunge.exe /m /l- /o:test.exe.2 test.exe.1 - $(BIND)\impmunge.exe /m /l- /o:test.exe.3 test.exe.2 - $(BIND)\impmunge.exe /m /l- /o:test.exe.4 test.exe.3 - $(BIND)\impmunge.exe /l test.exe.4 - $(BIND)\impmunge.exe /r /l- /o:test.exe.0 test.exe.4 - $(BIND)\impmunge.exe /l test.exe.0 - -################################################################# End of File. diff --git a/samples/member/Makefile b/samples/member/Makefile deleted file mode 100644 index 7ecf505f..00000000 --- a/samples/member/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\member.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\member.bsc -!ENDIF - -clean: - -del *~ 2> nul - -del $(BIND)\member.* 2> nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\member.obj : member.cpp - -$(BIND)\member.exe : $(OBJD)\member.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\member.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console - -$(OBJD)\member.bsc : $(OBJD)\member.obj - bscmake /v /n /o $@ $(OBJD)\member.sbr - -############################################################################## - -test: $(BIND)\member.exe - @echo. - $(BIND)\member.exe - @echo. - -################################################################# End of File. diff --git a/samples/opengl/Makefile b/samples/opengl/Makefile deleted file mode 100644 index 33d522d1..00000000 --- a/samples/opengl/Makefile +++ /dev/null @@ -1,112 +0,0 @@ -###################################################################### -## -## Hook test for glFinish -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib gdi32.lib - -############################################################################## - -all: dirs \ - $(BIND)\ogldet$(DETOURS_BITS).dll \ - $(BIND)\testogl.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\ogldet$(DETOURS_BITS).bsc \ - $(OBJD)\testogl.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\ogldet.obj : ogldet.cpp - -$(OBJD)\ogldet.res : ogldet.rc - -$(BIND)\ogldet$(DETOURS_BITS).dll $(BIND)\ogldet$(DETOURS_BITS).lib: \ - $(OBJD)\ogldet.obj $(OBJD)\ogldet.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\ogldet.obj $(OBJD)\ogldet.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:hookedGlFinish \ - $(LIBS) opengl32.lib - -$(OBJD)\ogldet$(DETOURS_BITS).bsc : $(OBJD)\ogldet.obj - bscmake /v /n /o $@ $(OBJD)\ogldet.sbr - -$(OBJD)\testogl.obj : testogl.cpp - -$(BIND)\testogl.exe : $(OBJD)\testogl.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\testogl.obj \ - /link $(LINKFLAGS) $(LIBS) opengl32.lib \ - /subsystem:console - -$(OBJD)\testogl.bsc : $(OBJD)\testogl.obj - bscmake /v /n /o $@ $(OBJD)\testogl.sbr - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\ogldet*.* 2>nul - -del $(BIND)\testogl.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\olgdet$(DETOURS_OPTION_BITS).dll: -$(OPTD)\olgdet$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\olgdet$(DETOURS_OPTION_BITS).dll : $(OPTD)\olgdet$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\olgdet$(DETOURS_OPTION_BITS).pdb : $(OPTD)\olgdet$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\olgdet$(DETOURS_OPTION_BITS).dll \ - $(BIND)\olgdet$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Reseting test binaries to initial state. --------------------- - $(BIND)\setdll.exe -r $(BIND)\testogl.exe - @echo. - @echo -------- Should not load ogldet$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\testogl.exe - @echo. - @echo -------- Adding ogldet$(DETOURS_BITS).dll to testogl.exe ------------------------------ - $(BIND)\setdll.exe -d:$(BIND)\ogldet$(DETOURS_BITS).dll $(BIND)\testogl.exe - @echo. - @echo -------- Should load ogldet$(DETOURS_BITS).dll statically ---------------------------- - $(BIND)\testogl.exe - @echo. - @echo -------- Removing ogldet$(DETOURS_BITS).dll from testogl.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\testogl.exe - @echo. - @echo -------- Should not load ogldet$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\testogl.exe - @echo. - @echo -------- Should load ogldet$(DETOURS_BITS).dll dynamically using withdll.exe---------- - $(BIND)\withdll.exe -d:$(BIND)\ogldet$(DETOURS_BITS).dll $(BIND)\testogl.exe - @echo. - -################################################################# End of File. diff --git a/samples/payload/Makefile b/samples/payload/Makefile deleted file mode 100644 index 32711645..00000000 --- a/samples/payload/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib -CFLAGS=$(CFLAGS) /EHsc - -all: dirs \ - $(BIND)\payload.exe \ - $(BIND)\payloadtarget.exe - -clean: - -del *~ 2>nul - -del $(BIND)\payload.* 2>nul - -del $(BIND)\payloadtarget.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\payload.obj : payload.cpp - -$(BIND)\payload.exe : $(OBJD)\payload.obj $(DEPS) - link\ - /SUBSYSTEM:CONSOLE\ - $(LINKFLAGS)\ - $(LIBS)\ - /PDB:"$(@R).pdb"\ - /OUT:"$@"\ - $**\ - -$(OBJD)\payloadtarget.obj : payloadtarget.cpp - -$(BIND)\payloadtarget.exe : $(OBJD)\payloadtarget.obj $(DEPS) - link\ - /SUBSYSTEM:CONSOLE\ - $(LINKFLAGS)\ - $(LIBS)\ - /PDB:"$(@R).pdb"\ - /OUT:"$@"\ - $**\ - -############################################################################## - -test: $(BIND)\payload.exe $(BIND)\payloadtarget.exe - $(BIND)\payload.exe - -################################################################# End of File. diff --git a/samples/region/Makefile b/samples/region/Makefile deleted file mode 100644 index 3d6108fc..00000000 --- a/samples/region/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\region.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\region.bsc -!ENDIF - -clean: - -del *~ 2> nul - -del $(BIND)\region.* 2> nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\region.obj : region.cpp - -$(BIND)\region.exe : $(OBJD)\region.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\region.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console - -$(OBJD)\region.bsc : $(OBJD)\region.obj - bscmake /v /n /o $@ $(OBJD)\region.sbr - -############################################################################## - -test: $(BIND)\region.exe - @echo. - $(BIND)\region.exe - @echo. - -################################################################# End of File. diff --git a/samples/setdll/Makefile b/samples/setdll/Makefile deleted file mode 100644 index 58dda3f8..00000000 --- a/samples/setdll/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\setdll.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\setdll.bsc \ -!ENDIF - option - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\setdll.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\setdll.obj : setdll.cpp - -$(BIND)\setdll.exe : $(OBJD)\setdll.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\setdll.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console - -$(OBJD)\setdll.bsc : $(OBJD)\setdll.obj - bscmake /v /n /o $@ $(OBJD)\setdll.sbr - -############################################### Install non-bit-size binaries. - -option: - -############################################################################## - -test: all - @echo -------- Reseting test binaries to initial state. ----------------------- - $(BIND)\setdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Should load slept$(DETOURS_BITS).dll statically ------------------------------- - $(BIND)\sleepold.exe - @echo -------- Reseting test binaries to initial state. ----------------------- - $(BIND)\setdll.exe -r $(BIND)\sleepold.exe - @echo -------- Should not load slept$(DETOURS_BITS).dll -------------------------------------- - $(BIND)\sleepold.exe - -################################################################# End of File. diff --git a/samples/simple/Makefile b/samples/simple/Makefile deleted file mode 100644 index 15975196..00000000 --- a/samples/simple/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -############################################################################## -## -## API Extention to Measure time slept. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\simple$(DETOURS_BITS).dll \ - $(BIND)\sleep5.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\simple$(DETOURS_BITS).bsc \ - $(OBJD)\sleep5.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\simple.obj : simple.cpp - -$(OBJD)\simple.res : simple.rc - -$(BIND)\simple$(DETOURS_BITS).dll $(BIND)\simple$(DETOURS_BITS).lib: \ - $(OBJD)\simple.obj $(OBJD)\simple.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\simple.obj $(OBJD)\simple.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:TimedSleepEx \ - $(LIBS) - -$(OBJD)\simple$(DETOURS_BITS).bsc : $(OBJD)\simple.obj - bscmake /v /n /o $@ $(OBJD)\simple.sbr - -$(OBJD)\sleep5.obj : sleep5.cpp - -$(BIND)\sleep5.exe : $(OBJD)\sleep5.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleep5.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console - -$(OBJD)\sleep5.bsc : $(OBJD)\sleep5.obj - bscmake /v /n /o $@ $(OBJD)\sleep5.sbr - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\simple*.* 2>nul - -del $(BIND)\sleep5.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\simple$(DETOURS_OPTION_BITS).dll: -$(OPTD)\simple$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\simple$(DETOURS_OPTION_BITS).dll : $(OPTD)\simple$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\simple$(DETOURS_OPTION_BITS).pdb : $(OPTD)\simple$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\simple$(DETOURS_OPTION_BITS).dll \ - $(BIND)\simple$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Reseting test binaries to initial state. --------------------- - $(BIND)\setdll.exe -r $(BIND)\sleep5.exe - @echo. - @echo -------- Should not load simple$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Adding simple$(DETOURS_BITS).dll to sleep5.exe ------------------------------ - $(BIND)\setdll.exe -d:$(BIND)\simple$(DETOURS_BITS).dll $(BIND)\sleep5.exe - @echo. - @echo -------- Should load simple$(DETOURS_BITS).dll statically ---------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Removing simple$(DETOURS_BITS).dll from sleep5.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\sleep5.exe - @echo. - @echo -------- Should not load simple$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Should load simple$(DETOURS_BITS).dll dynamically using withdll.exe---------- - $(BIND)\withdll.exe -d:$(BIND)\simple$(DETOURS_BITS).dll $(BIND)\sleep5.exe - @echo. - -debug: all - windbg -o $(BIND)\withdll.exe -d:$(BIND)\simple$(DETOURS_BITS).dll $(BIND)\sleep5.exe - - -################################################################# End of File. diff --git a/samples/simple_safe/Makefile b/samples/simple_safe/Makefile deleted file mode 100644 index 9782ecdd..00000000 --- a/samples/simple_safe/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -############################################################################## -## -## API Extention to Measure time slept. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib -CFLAGS=$(CFLAGS) /std:c++14 - -############################################################################## - -all: dirs \ - $(BIND)\simple_safe$(DETOURS_BITS).dll \ - $(BIND)\sleep5.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\simple_safe$(DETOURS_BITS).bsc \ - $(OBJD)\sleep5.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\simple_safe.obj : simple_safe.cpp - -$(OBJD)\simple_safe.res : simple_safe.rc - -$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\simple_safe$(DETOURS_BITS).lib: \ - $(OBJD)\simple_safe.obj $(OBJD)\simple_safe.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\simple_safe.obj $(OBJD)\simple_safe.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:TimedSleepEx \ - $(LIBS) - -$(OBJD)\simple_safe$(DETOURS_BITS).bsc : $(OBJD)\simple_safe.obj - bscmake /v /n /o $@ $(OBJD)\simple_safe.sbr - -$(OBJD)\sleep5.obj : sleep5.cpp - -$(BIND)\sleep5.exe : $(OBJD)\sleep5.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleep5.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console - -$(OBJD)\sleep5.bsc : $(OBJD)\sleep5.obj - bscmake /v /n /o $@ $(OBJD)\sleep5.sbr - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\simple_safe*.* 2>nul - -del $(BIND)\sleep5.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\simple_safe$(DETOURS_OPTION_BITS).dll: -$(OPTD)\simple_safe$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\simple_safe$(DETOURS_OPTION_BITS).dll : $(OPTD)\simple_safe$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\simple_safe$(DETOURS_OPTION_BITS).pdb : $(OPTD)\simple_safe$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\simple_safe$(DETOURS_OPTION_BITS).dll \ - $(BIND)\simple_safe$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Reseting test binaries to initial state. --------------------- - $(BIND)\setdll.exe -r $(BIND)\sleep5.exe - @echo. - @echo -------- Should not load simple_safe$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Adding simple_safe$(DETOURS_BITS).dll to sleep5.exe ------------------------------ - $(BIND)\setdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe - @echo. - @echo -------- Should load simple_safe$(DETOURS_BITS).dll statically ---------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Removing simple_safe$(DETOURS_BITS).dll from sleep5.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\sleep5.exe - @echo. - @echo -------- Should not load simple_safe$(DETOURS_BITS).dll ----------------------------------- - $(BIND)\sleep5.exe - @echo. - @echo -------- Should load simple_safe$(DETOURS_BITS).dll dynamically using withdll.exe---------- - $(BIND)\withdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe - @echo. - -debug: all - windbg -o $(BIND)\withdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe - - -################################################################# End of File. diff --git a/samples/slept/Makefile b/samples/slept/Makefile deleted file mode 100644 index 6711a875..00000000 --- a/samples/slept/Makefile +++ /dev/null @@ -1,194 +0,0 @@ -############################################################################## -## -## API Extension to Measure time slept. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -CFLAGS = $(CFLAGS:/Od=/O2) - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\slept$(DETOURS_BITS).dll \ - $(BIND)\dslept$(DETOURS_BITS).dll \ - $(BIND)\sleepold.exe \ - $(BIND)\sleepnew.exe \ - $(BIND)\sleepbed.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\slept$(DETOURS_BITS).bsc \ - $(OBJD)\dslept$(DETOURS_BITS).bsc \ - $(OBJD)\sleepold.bsc \ - $(OBJD)\sleepnew.bsc \ - $(OBJD)\sleepbed.bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\slept.obj : slept.cpp verify.cpp - -$(OBJD)\slept.res : slept.rc - -$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\slept$(DETOURS_BITS).lib: \ - $(OBJD)\slept.obj $(OBJD)\slept.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\slept.obj $(OBJD)\slept.res\ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:TimedSleepEx \ - /export:UntimedSleepEx \ - /export:GetSleptTicks \ - /export:TestTicks \ - /export:TestTicksEx \ - $(LIBS) - -$(OBJD)\slept$(DETOURS_BITS).bsc : $(OBJD)\slept.obj - bscmake /v /n /o $@ $(OBJD)\slept.sbr - -$(OBJD)\dslept.obj : dslept.cpp verify.cpp - -$(OBJD)\dslept.res : dslept.rc - -$(BIND)\dslept$(DETOURS_BITS).dll $(BIND)\dslept$(DETOURS_BITS).lib: \ - $(OBJD)\dslept.obj $(OBJD)\dslept.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\dslept.obj $(OBJD)\dslept.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:TimedSleepEx \ - /export:UntimedSleepEx \ - /export:GetSleptTicks \ - $(LIBS) - -$(OBJD)\dslept$(DETOURS_BITS).bsc : $(OBJD)\dslept.obj - bscmake /v /n /o $@ $(OBJD)\dslept.sbr - -$(OBJD)\sleepold.obj : sleepold.cpp verify.cpp - -$(BIND)\sleepold.exe : $(OBJD)\sleepold.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleepold.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no - -$(OBJD)\sleepold.bsc : $(OBJD)\sleepold.obj - bscmake /v /n /o $@ $(OBJD)\sleepold.sbr - -$(OBJD)\sleepnew.obj : sleepnew.cpp verify.cpp - -$(BIND)\sleepnew.exe : $(OBJD)\sleepnew.obj $(BIND)\slept$(DETOURS_BITS).lib $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleepnew.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no $(BIND)\slept$(DETOURS_BITS).lib - -$(OBJD)\sleepnew.bsc : $(OBJD)\sleepnew.obj - bscmake /v /n /o $@ $(OBJD)\sleepnew.sbr - -$(OBJD)\sleepbed.obj : sleepbed.cpp verify.cpp - -$(BIND)\sleepbed.exe : $(OBJD)\sleepbed.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleepbed.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no - -$(OBJD)\sleepbed.bsc : $(OBJD)\sleepbed.obj - bscmake /v /n /o $@ $(OBJD)\sleepbed.sbr - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\slept*.* 2>nul - -del $(BIND)\dslept*.* 2>nul - -del $(BIND)\sleepold.* 2>nul - -del $(BIND)\sleepnew.* 2>nul - -del $(BIND)\sleepbed.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\slept$(DETOURS_OPTION_BITS).dll: -$(OPTD)\slept$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\dslept$(DETOURS_OPTION_BITS).dll: -$(OPTD)\dslept$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\slept$(DETOURS_OPTION_BITS).dll: $(OPTD)\slept$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\slept$(DETOURS_OPTION_BITS).pdb: $(OPTD)\slept$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\dslept$(DETOURS_OPTION_BITS).dll: $(OPTD)\dslept$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\dslept$(DETOURS_OPTION_BITS).pdb: $(OPTD)\dslept$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\slept$(DETOURS_OPTION_BITS).dll \ - $(BIND)\slept$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\dslept$(DETOURS_OPTION_BITS).dll \ - $(BIND)\dslept$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -skype: all - start windbg -G -o $(BIND)\withdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll "C:\Program Files (x86)\Skype\Phone\Skype.exe" - -test: all - @echo -------- Reseting test binaries to initial state. ----------------------- - $(BIND)\setdll.exe -r $(BIND)\sleepold.exe - @echo. - @echo -------- Should load detour self ---------------------------------------- - $(BIND)\sleepbed.exe - @echo. - @echo -------- Should load slept$(DETOURS_BITS).dll statically ------------------------------- - $(BIND)\sleepnew.exe - @echo. - @echo -------- Should not load slept$(DETOURS_BITS).dll -------------------------------------- - $(BIND)\sleepold.exe - @echo. - @echo -------- Adding slept$(DETOURS_BITS).dll to sleepold.exe ------------------------------- - $(BIND)\setdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo. - @echo -------- Should load slept$(DETOURS_BITS).dll statically ------------------------------- - $(BIND)\sleepold.exe - @echo. - @echo -------- Replacing slept$(DETOURS_BITS).dll with dslept$(DETOURS_BITS).dll in sleepold.exe ------------ - $(BIND)\setdll.exe -r $(BIND)\sleepold.exe - $(BIND)\setdll.exe -d:$(BIND)\dslept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo. - @echo -------- Should load dslept$(DETOURS_BITS).dll instead of slept$(DETOURS_BITS).dll -------------------- - $(BIND)\sleepold.exe - @echo. - @echo -------- Removing dslept$(DETOURS_BITS).dll from sleepold.exe -------------------------- - $(BIND)\setdll.exe -r $(BIND)\sleepold.exe - @echo. - @echo -------- Should not load dslept$(DETOURS_BITS).dll or slept$(DETOURS_BITS).dll ------------------------ - $(BIND)\sleepold.exe - @echo. - @echo -------- Should load slept$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo. - @echo -------- Test completed. ------------------------------------------------ - -################################################################# End of File. diff --git a/samples/syelog/Makefile b/samples/syelog/Makefile deleted file mode 100644 index 89e79677..00000000 --- a/samples/syelog/Makefile +++ /dev/null @@ -1,101 +0,0 @@ -############################################################################## -## -## Makefile for Detours. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## -############################################################################## - -TARGETOS=WINNT -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(INCD)\syelog.h \ - $(LIBD)\syelog.lib \ - $(BIND)\syelogd.exe \ - \ - $(BIND)\sltest.exe \ - $(BIND)\sltestp.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\syelogd.bsc \ - $(OBJD)\sltest.bsc \ - $(OBJD)\sltestp.bsc \ -!ENDIF - -############################################################################## -## -clean: - -del *~ test.txt 2> nul - -del $(INCD)\syelog.* 2>nul - -del $(LIBD)\syelog.* 2>nul - -del $(BIND)\syelogd.* 2>nul - -del $(BIND)\sltest.* 2>nul - -del $(BIND)\sltestp.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(INCD) mkdir $(INCD) && echo. Created $(INCD) - @if not exist $(LIBD) mkdir $(LIBD) && echo. Created $(LIBD) - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\syelog.obj : syelog.cpp syelog.h -$(OBJD)\syelogd.obj: syelogd.cpp syelog.h -$(OBJD)\sltest.obj: sltest.cpp syelog.h -$(OBJD)\sltestp.obj: sltestp.cpp syelog.h - -$(INCD)\syelog.h : syelog.h - copy syelog.h $@ - -$(LIBD)\syelog.lib : $(OBJD)\syelog.obj - link /lib $(LIBFLAGS) /out:$@ $(OBJD)\syelog.obj - -$(BIND)\sltest.exe: $(OBJD)\sltest.obj $(OBJD)\syelog.obj $(DEPS) - $(CC) $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sltest.obj \ - /link $(LINKFLAGS) $(LIBS) - -$(OBJD)\sltest.bsc : $(OBJD)\sltest.obj - bscmake /v /n /o $@ $(OBJD)\sltest.sbr - -$(BIND)\sltestp.exe: $(OBJD)\sltestp.obj $(DEPS) - $(CC) $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sltestp.obj \ - /link $(LINKFLAGS) $(LIBS) - -$(OBJD)\sltestp.bsc : $(OBJD)\sltestp.obj - bscmake /v /n /o $@ $(OBJD)\sltestp.sbr - -$(LIBD)\detours.lib: - cd $(ROOT)\src - nmake /nologo - cd $(MAKEDIR) - -$(BIND)\syelogd.exe: $(OBJD)\syelogd.obj $(DEPS) - $(CC) $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\syelogd.obj \ - /link $(LINKFLAGS) ws2_32.lib mswsock.lib advapi32.lib - -$(OBJD)\syelogd.bsc : $(OBJD)\syelogd.obj - bscmake /v /n /o $@ $(OBJD)\syelogd.sbr - -############################################################################## - -test: $(BIND)\syelogd.exe $(BIND)\sltest.exe $(BIND)\sltestp.exe - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe test.txt - $(BIND)\sleep5.exe 1 - $(BIND)\sltestp.exe - $(BIND)\sltest.exe /x - type test.txt - -################################################################# End of File. diff --git a/samples/talloc/Makefile b/samples/talloc/Makefile deleted file mode 100644 index 1b1667e4..00000000 --- a/samples/talloc/Makefile +++ /dev/null @@ -1,332 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -# This test tests the allocation algorithm. .dlls are carefully placed -# immediately adjacent to each other to force the algorithm to look more places. - -# /noentry keeps the .dlls small, so they all fit at their bases - -!if "$(DETOURS_TARGET_PROCESSOR:64=)" == "$(DETOURS_TARGET_PROCESSOR)" -# 32bit bases -DETOURS_TALLOC1=0x28000000 -DETOURS_TALLOC2=0x38000000 -DETOURS_TALLOC3=0x48050000 -DETOURS_TALLOC4=0x58000000 -DETOURS_TALLOC5=0x68000000 -DETOURS_TALLOC6=0x68010000 -DETOURS_TALLOC7=0x68020000 -DETOURS_TALLOC8=0x68030000 -DETOURS_TALLOC9=0x68040000 -!else -# 64bit bases -DETOURS_TALLOC1=0x280000000 -DETOURS_TALLOC2=0x380000000 -DETOURS_TALLOC3=0x480050000 -DETOURS_TALLOC4=0x580000000 -DETOURS_TALLOC5=0x680000000 -DETOURS_TALLOC6=0x680010000 -DETOURS_TALLOC7=0x680020000 -DETOURS_TALLOC8=0x680030000 -DETOURS_TALLOC9=0x680040000 -!endif - -LIBS=$(LIBS) kernel32.lib psapi.lib - -all: dirs \ - $(BIND)\tdll1x$(DETOURS_BITS).dll \ - $(BIND)\tdll2x$(DETOURS_BITS).dll \ - $(BIND)\tdll3x$(DETOURS_BITS).dll \ - $(BIND)\tdll4x$(DETOURS_BITS).dll \ - $(BIND)\tdll5x$(DETOURS_BITS).dll \ - $(BIND)\tdll6x$(DETOURS_BITS).dll \ - $(BIND)\tdll7x$(DETOURS_BITS).dll \ - $(BIND)\tdll8x$(DETOURS_BITS).dll \ - $(BIND)\tdll9x$(DETOURS_BITS).dll \ - $(BIND)\talloc.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\tdll1x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll2x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll3x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll4x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll5x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll6x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll7x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll8x$(DETOURS_BITS).bsc \ - $(OBJD)\tdll9x$(DETOURS_BITS).bsc \ - $(OBJD)\talloc.bsc \ -!ENDIF - option - -clean: - -del *~ 2>nul - -del $(BIND)\tdll1x* 2>nul - -del $(BIND)\tdll2x* 2>nul - -del $(BIND)\tdll3x* 2>nul - -del $(BIND)\tdll4x* 2>nul - -del $(BIND)\tdll5x* 2>nul - -del $(BIND)\tdll6x* 2>nul - -del $(BIND)\tdll7x* 2>nul - -del $(BIND)\tdll8x* 2>nul - -del $(BIND)\tdll9x* 2>nul - -del $(BIND)\talloc* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -############################################################################## - -$(OBJD)\talloc.obj : talloc.cpp - -$(BIND)\talloc.exe : $(OBJD)\talloc.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\talloc.obj \ - /link $(LINKFLAGS) $(LIBS) \ - $(BIND)\tdll1x$(DETOURS_BITS).lib \ - $(BIND)\tdll2x$(DETOURS_BITS).lib \ - $(BIND)\tdll3x$(DETOURS_BITS).lib \ - $(BIND)\tdll4x$(DETOURS_BITS).lib \ - $(BIND)\tdll5x$(DETOURS_BITS).lib \ - $(BIND)\tdll6x$(DETOURS_BITS).lib \ - $(BIND)\tdll7x$(DETOURS_BITS).lib \ - $(BIND)\tdll8x$(DETOURS_BITS).lib \ - $(BIND)\tdll9x$(DETOURS_BITS).lib \ - /subsystem:console /entry:WinMainCRTStartup - -$(OBJD)\talloc.bsc : $(OBJD)\talloc.obj - bscmake /v /n /o $@ $(OBJD)\talloc.sbr - -$(OBJD)\tdll1x.obj : tdll1x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll1x$(DETOURS_BITS).dll : $(OBJD)\tdll1x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll1x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:windows \ - /noentry \ - /base:$(DETOURS_TALLOC1) - -$(OBJD)\tdll1x$(DETOURS_BITS).bsc : $(OBJD)\tdll1x.obj - bscmake /v /n /o $@ $(OBJD)\tdll1x.sbr - -$(OBJD)\tdll2x.obj : tdll2x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll2x$(DETOURS_BITS).dll : $(OBJD)\tdll2x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll2x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC2) - -$(OBJD)\tdll2x$(DETOURS_BITS).bsc : $(OBJD)\tdll2x.obj - bscmake /v /n /o $@ $(OBJD)\tdll2x.sbr - -$(OBJD)\tdll3x.obj : tdll3x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll3x$(DETOURS_BITS).dll : $(OBJD)\tdll3x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll3x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC3) - -$(OBJD)\tdll3x$(DETOURS_BITS).bsc : $(OBJD)\tdll3x.obj - bscmake /v /n /o $@ $(OBJD)\tdll3x.sbr - -$(OBJD)\tdll4x.obj : tdll4x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll4x$(DETOURS_BITS).dll : $(OBJD)\tdll4x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll4x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC4) - -$(OBJD)\tdll4x$(DETOURS_BITS).bsc : $(OBJD)\tdll4x.obj - bscmake /v /n /o $@ $(OBJD)\tdll4x.sbr - - -$(OBJD)\tdll5x.obj : tdll5x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll5x$(DETOURS_BITS).dll : $(OBJD)\tdll5x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll5x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC5) - -$(OBJD)\tdll5x$(DETOURS_BITS).bsc : $(OBJD)\tdll5x.obj - bscmake /v /n /o $@ $(OBJD)\tdll5x.sbr - -$(OBJD)\tdll6x.obj : tdll6x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll6x$(DETOURS_BITS).dll : $(OBJD)\tdll6x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll6x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC6) - -$(OBJD)\tdll6x$(DETOURS_BITS).bsc : $(OBJD)\tdll6x.obj - bscmake /v /n /o $@ $(OBJD)\tdll6x.sbr - - -$(OBJD)\tdll7x.obj : tdll7x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll7x$(DETOURS_BITS).dll : $(OBJD)\tdll7x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll7x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC7) - -$(OBJD)\tdll7x$(DETOURS_BITS).bsc : $(OBJD)\tdll7x.obj - bscmake /v /n /o $@ $(OBJD)\tdll7x.sbr - - -$(OBJD)\tdll8x.obj : tdll8x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll8x$(DETOURS_BITS).dll : $(OBJD)\tdll8x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll8x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC8) - -$(OBJD)\tdll8x$(DETOURS_BITS).bsc : $(OBJD)\tdll8x.obj - bscmake /v /n /o $@ $(OBJD)\tdll8x.sbr - - -$(OBJD)\tdll9x.obj : tdll9x.cpp - -# /noentry keeps the .dlls small, so they all fit at their bases -$(BIND)\tdll9x$(DETOURS_BITS).dll : $(OBJD)\tdll9x.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\tdll9x.obj /LD \ - /link $(LINKFLAGS:/profile=/fixed) $(LIBS) \ - /subsystem:console \ - /noentry \ - /base:$(DETOURS_TALLOC9) - -$(OBJD)\tdll9x$(DETOURS_BITS).bsc : $(OBJD)\tdll9x.obj - bscmake /v /n /o $@ $(OBJD)\tdll9x.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\tdll1x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll1x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll2x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll2x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll3x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll3x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll4x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll4x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll5x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll5x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll6x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll6x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll7x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll7x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll8x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll8x$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tdll9x$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tdll9x$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\tdll1x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll1x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll1x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll1x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll2x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll2x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll2x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll2x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll3x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll3x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll3x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll3x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll4x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll4x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll4x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll4x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll5x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll5x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll5x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll5x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll6x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll6x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll6x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll6x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll7x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll7x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll7x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll7x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll8x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll8x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll8x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll8x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll9x$(DETOURS_OPTION_BITS).dll : $(OPTD)\tdll9x$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\tdll9x$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tdll9x$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\tdll1x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll1x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll2x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll2x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll3x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll3x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll4x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll4x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll5x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll5x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll6x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll6x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll7x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll7x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll8x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll8x$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tdll9x$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tdll9x$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - $(BIND)\talloc.exe - -################################################################# End of File. diff --git a/samples/traceapi/Makefile b/samples/traceapi/Makefile deleted file mode 100644 index 61794b12..00000000 --- a/samples/traceapi/Makefile +++ /dev/null @@ -1,153 +0,0 @@ -############################################################################## -## -## Utility to trace Win32 APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib gdi32.lib user32.lib shell32.lib advapi32.lib ole32.lib ws2_32.lib - -############################################################################## - -all: dirs \ - $(BIND)\trcapi$(DETOURS_BITS).dll \ - $(BIND)\testapi.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcapi$(DETOURS_BITS).bsc \ - $(OBJD)\testapi.bsc \ -!ENDIF - option - -############################################################################## - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trcapi*.* $(BIND)\testapi.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\trcapi.obj : trcapi.cpp _win32.cpp - -$(OBJD)\trcapi.res : trcapi.rc - -$(BIND)\trcapi$(DETOURS_BITS).dll: $(OBJD)\trcapi.obj $(OBJD)\trcapi.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcapi.obj $(OBJD)\trcapi.res \ - /link $(LINKFLAGS) /release /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcapi$(DETOURS_BITS).bsc : $(OBJD)\trcapi.obj - bscmake /v /n /o $@ $(OBJD)\trcapi.sbr - -$(OBJD)\testapi.obj : testapi.cpp trcapi.cpp _win32.cpp - -$(BIND)\testapi.exe : $(OBJD)\testapi.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\testapi.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no - -$(OBJD)\testapi.bsc : $(OBJD)\testapi.obj - bscmake /v /n /o $@ $(OBJD)\testapi.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcapi$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcapi$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcapi$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcapi$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcapi$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcapi$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcapi$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcapi$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Log from syelog ------------- - type test.txt - -debug: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - windbg -o -g -G $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Log from syelog ------------- - type test.txt - -calc: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /q /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(SYSTEMROOT)\System32\calc.exe - @echo -------- Log from syelog ------------- - wc test.txt - -explorer: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /q /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(SYSTEMROOT)\explorer.exe - @echo -------- Log from syelog ------------- - wc test.txt - -wordpad: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /q /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(PROGRAMFILES)\Windows NT\Accessories\wordpad.exe - @echo -------- Log from syelog ------------- - wc test.txt - -notepad: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /q /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(SYSTEMROOT)\notepad.exe - @echo -------- Log from syelog ------------- - wc test.txt - -ie: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /q /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcapi$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - windbg -g -G -o $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll "$(PROGRAMFILES)\Internet Explorer\iexplore.exe" - @echo -------- Log from syelog ------------- - wc test.txt - -ws: all - $(BIND)\withdll -d:$(BIND)\trcapi$(DETOURS_BITS).dll $(BIND)\WebServiceTester.exe - -################################################################# End of File. diff --git a/samples/tracebld/Makefile b/samples/tracebld/Makefile deleted file mode 100644 index 182655d1..00000000 --- a/samples/tracebld/Makefile +++ /dev/null @@ -1,157 +0,0 @@ -############################################################################## -## -## Utility to registry and file access APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\trcbld$(DETOURS_BITS).dll \ - $(BIND)\tracebld.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcbld$(DETOURS_BITS).bsc \ - $(OBJD)\tracebld.bsc \ -!ENDIF - option - -############################################################################## - -clean: - -del *~ test.txt log.*.xml 2>nul - -del $(BIND)\tracebld.* $(BIND)\trcbld*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -############################################################################## - -$(OBJD)\trcbld.obj : trcbld.cpp -$(OBJD)\trcbld.res : trcbld.rc -$(BIND)\trcbld$(DETOURS_BITS).dll : $(OBJD)\trcbld.obj $(OBJD)\trcbld.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcbld.obj $(OBJD)\trcbld.res \ - /link $(LINKFLAGS) /release /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcbld$(DETOURS_BITS).bsc : $(OBJD)\trcbld.obj - bscmake /v /n /o $@ $(OBJD)\trcbld.sbr - -$(OBJD)\tracebld.obj : tracebld.cpp - -$(BIND)\tracebld.exe : $(OBJD)\tracebld.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\tracebld.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no - -$(OBJD)\tracebld.bsc : $(OBJD)\tracebld.obj - bscmake /v /n /o $@ $(OBJD)\tracebld.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcbld$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcbld$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcbld$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcbld$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcbld$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcbld$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcbld$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcbld$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - -del log.*.xml 2>nul - $(BIND)\tracebld.exe /o:log %COMSPEC% /c dir - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml - -test0: all - -del log.*.xml 2>nul - $(BIND)\tracebld.exe /o:log %COMSPEC% /c xx.cmd - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml - @echo -------- Log from log.00000001 --------------------- - type log.00000001.xml - -test1: all - set FooBAR=1 - -del log.*.xml 2>nul - @echo -------- Logging output to log ------------ - -rmdir /q /s obj 2>nul - $(BIND)\tracebld.exe /o:log nmake.exe test2 - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml | findstr /c:"t:Line" - type log.00000002.xml | findstr /c:"t:Line" - -test1d: all - -del log.*.xml 2>nul - @echo -------- Logging output to log ------------ - -rmdir /q /s obj 2>nul - windbg -g -G -o $(BIND)\tracebld.exe /o:log nmake.exe test2 - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml | findstr /c:"t:Line" - type log.00000002.xml | findstr /c:"t:Line" - - -test2: all - -del foo.txt - echo foo1 >> foo.txt - echo foo2 >> foo.txt - echo foo3 >> foo.txt - -del log.foo.xml - -mkdir obj - cmd.exe /c "set Foo=BAR&&cmd.exe /c echo. FOO=%Foo%" - cl /LD $(CFLAGS) /Tp<< @< log.foo.xml -#include -<< -/Feobj\tbtest.exe /Fd$(@R).pdb $(DET_SRC) -/link $(LINKFLAGS) /subsystem:console -/export:DetourFinishHelperProcess,@1 -< obj\test.cpp - cl /c /Foobj\test.obj obj\test.cpp - -del tbtest.* 2>nul - -test3: all - -del log.*.xml 2>nul - @echo -------- Logging output to log ------------ - -rmdir /q /s foo - $(BIND)\tracebld.exe /o:log xcopy.exe $(BIND)\trcbld.cpp foo\ /y - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml - -test4: all - -del log.*.xml 2>nul - echo int main() { return 0; } > obj\test.cpp - $(BIND)\tracebld.exe /o:log cl /c /Foobj\test.obj obj\test.cpp - @echo -------- Log from log.00000000 --------------------- - type log.00000000.xml - -################################################################# End of File. diff --git a/samples/tracelnk/Makefile b/samples/tracelnk/Makefile deleted file mode 100644 index 067d4fc9..00000000 --- a/samples/tracelnk/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -############################################################################## -## -## Utility to trace Dynamic Linking. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\trclnk$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trclnk$(DETOURS_BITS).bsc \ -!ENDIF - option - -############################################################################## - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trclnk*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo . Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo . Created $(OBJD) - -############################################################################## - -$(OBJD)\trclnk.obj : trclnk.cpp - -$(OBJD)\trclnk.res : trclnk.rc - -$(BIND)\trclnk$(DETOURS_BITS).dll : $(OBJD)\trclnk.obj $(OBJD)\trclnk.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trclnk.obj $(OBJD)\trclnk.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trclnk$(DETOURS_BITS).bsc : $(OBJD)\trclnk.obj - bscmake /v /n /o $@ $(OBJD)\trclnk.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trclnk$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trclnk$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trclnk$(DETOURS_OPTION_BITS).dll : $(OPTD)\trclnk$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trclnk$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trclnk$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trclnk$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trclnk$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -notepad: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trclnk$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - @echo . - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo ** - @echo ** Close the NotePad window to continue test. - @echo ** - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo . - $(BIND)\withdll -d:$(BIND)\trclnk$(DETOURS_BITS).dll $(SYSTEMROOT)\system32\notepad.exe - @echo -------- Log from syelog ------------- - type test.txt - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trclnk$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - @echo . - $(BIND)\withdll -d:$(BIND)\trclnk$(DETOURS_BITS).dll $(SYSTEMROOT)\system32\cmd.exe /c dir - @echo -------- Log from syelog ------------- - type test.txt - -################################################################# End of File. diff --git a/samples/tracemem/Makefile b/samples/tracemem/Makefile deleted file mode 100644 index fbd6c8df..00000000 --- a/samples/tracemem/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -############################################################################## -## -## Utility to trace HeapAlloc APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\trcmem$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcmem$(DETOURS_BITS).bsc \ -!ENDIF - option - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trcmem*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -$(OBJD)\trcmem.obj : trcmem.cpp - -$(OBJD)\trcmem.res : trcmem.rc - -$(BIND)\trcmem$(DETOURS_BITS).dll : $(OBJD)\trcmem.obj $(OBJD)\trcmem.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcmem.obj $(OBJD)\trcmem.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcmem$(DETOURS_BITS).bsc : $(OBJD)\trcmem.obj - bscmake /v /n /o $@ $(OBJD)\trcmem.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcmem$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcmem$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcmem$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcmem$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcmem$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcmem$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcmem$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcmem$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcmem$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcmem$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Log from syelog ------------- - type test.txt - -################################################################# End of File. diff --git a/samples/tracereg/Makefile b/samples/tracereg/Makefile deleted file mode 100644 index 459747f9..00000000 --- a/samples/tracereg/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -############################################################################## -## -## Utility to registry and file access APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib advapi32.lib - -all: dirs \ - $(BIND)\trcreg$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcreg$(DETOURS_BITS).bsc \ -!ENDIF - option - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trcreg*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -$(OBJD)\trcreg.obj : trcreg.cpp - -$(OBJD)\trcreg.res : trcreg.rc - -$(BIND)\trcreg$(DETOURS_BITS).dll : $(OBJD)\trcreg.obj $(OBJD)\trcreg.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcreg.obj $(OBJD)\trcreg.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcreg$(DETOURS_BITS).bsc : $(OBJD)\trcreg.obj - bscmake /v /n /o $@ $(OBJD)\trcreg.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcreg$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcreg$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcreg$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcreg$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcreg$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcreg$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcreg$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcreg$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcreg$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcreg$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Log from syelog ------------- - type test.txt - -################################################################# End of File. diff --git a/samples/traceser/Makefile b/samples/traceser/Makefile deleted file mode 100644 index 0e29f0f1..00000000 --- a/samples/traceser/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -############################################################################## -## -## Utility to trace serial (COM1, COM2, etc.) APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -all: dirs \ - $(BIND)\trcser$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcser$(DETOURS_BITS).bsc \ -!ENDIF - option - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trcser*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -$(OBJD)\trcser.obj: trcser.cpp - -$(OBJD)\trcser.res: trcser.rc - -$(BIND)\trcser$(DETOURS_BITS).dll: $(OBJD)\trcser.obj $(OBJD)\trcser.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcser.obj $(OBJD)\trcser.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcser$(DETOURS_BITS).bsc : $(OBJD)\trcser.obj - bscmake /v /n /o $@ $(OBJD)\trcser.sbr - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcser$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcser$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcser$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcser$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcser$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcser$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcser$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcser$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcser$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - $(BIND)\withdll -d:$(BIND)\trcser$(DETOURS_BITS).dll $(BIND)\sleepold.exe - @echo -------- Log from syelog ------------- - type test.txt - -################################################################# End of File. diff --git a/samples/tracessl/Makefile b/samples/tracessl/Makefile deleted file mode 100644 index 8019256b..00000000 --- a/samples/tracessl/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -############################################################################## -## -## Utility to trace WinSock SSL APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib ws2_32.lib secur32.lib - -############################################################################## - -all: dirs \ - $(BIND)\trcssl$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trcssl$(DETOURS_BITS).bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\trcssl.obj : trcssl.cpp - -$(OBJD)\trcssl.res : trcssl.rc - -$(BIND)\trcssl$(DETOURS_BITS).dll : $(OBJD)\trcssl.obj $(OBJD)\trcssl.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trcssl.obj $(OBJD)\trcssl.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trcssl$(DETOURS_BITS).bsc : $(OBJD)\trcssl.obj - bscmake /v /n /o $@ $(OBJD)\trcssl.sbr - -############################################################################## - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trcssl*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trcssl$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trcssl$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trcssl$(DETOURS_OPTION_BITS).dll : $(OPTD)\trcssl$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trcssl$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trcssl$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trcssl$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trcssl$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trcssl$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - @echo. - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo ** - @echo ** Close the Internet Explorer window to continue test. - @echo ** - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo. - $(BIND)\withdll -d:$(BIND)\trcssl$(DETOURS_BITS).dll \ - "c:\program files\Internet Explorer\iexplore.exe" "https://www.microsoft.com" - @echo -------- Log from syelog ------------- - type test.txt - -################################################################# End of File. diff --git a/samples/tracetcp/Makefile b/samples/tracetcp/Makefile deleted file mode 100644 index 61caaaa4..00000000 --- a/samples/tracetcp/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -############################################################################## -## -## Utility to trace WinSock TCP APIs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib ws2_32.lib - -############################################################################## - -all: dirs \ - $(BIND)\trctcp$(DETOURS_BITS).dll \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\trctcp$(DETOURS_BITS).bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\trctcp.obj: trctcp.cpp - -$(OBJD)\trctcp.res: trctcp.rc - -$(BIND)\trctcp$(DETOURS_BITS).dll: $(OBJD)\trctcp.obj $(OBJD)\trctcp.res $(DEPS) - cl /LD $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\trctcp.obj $(OBJD)\trctcp.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - $(LIBS) - -$(OBJD)\trctcp$(DETOURS_BITS).bsc : $(OBJD)\trctcp.obj - bscmake /v /n /o $@ $(OBJD)\trctcp.sbr - -############################################################################## - -clean: - -del *~ test.txt 2>nul - -del $(BIND)\trctcp*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\trctcp$(DETOURS_OPTION_BITS).dll: -$(OPTD)\trctcp$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\trctcp$(DETOURS_OPTION_BITS).dll : $(OPTD)\trctcp$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). -$(BIND)\trctcp$(DETOURS_OPTION_BITS).pdb : $(OPTD)\trctcp$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). - -option: \ - $(BIND)\trctcp$(DETOURS_OPTION_BITS).dll \ - $(BIND)\trctcp$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -test: all - @echo -------- Logging output to test.txt ------------ - start $(BIND)\syelogd.exe /o test.txt - $(BIND)\sleep5.exe 1 - @echo -------- Should load trctcp$(DETOURS_BITS).dll dynamically using withdll.exe ------------ - @echo. - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo ** - @echo ** Close the Internet Explorer window to continue test. - @echo ** - @echo ** NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE ** - @echo. - $(BIND)\withdll -d:$(BIND)\trctcp$(DETOURS_BITS).dll \ - "c:\program files\Internet Explorer\iexplore.exe" "http://www.microsoft.com" - @echo -------- Log from syelog ------------- - type test.txt - -debug: all - windbg -g -G -o $(BIND)\withdll -d:$(BIND)\trctcp$(DETOURS_BITS).dll \ - "c:\program files\Internet Explorer\iexplore.exe" "http://www.microsoft.com" - -################################################################# End of File. diff --git a/samples/tryman/Makefile b/samples/tryman/Makefile deleted file mode 100644 index b02d113c..00000000 --- a/samples/tryman/Makefile +++ /dev/null @@ -1,248 +0,0 @@ -############################################################################## -## -## Detours Test Program -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -BIND_X86=$(ROOT)\bin.x86 -BIND_X64=$(ROOT)\bin.x64 - -LIBS = $(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\tstman$(DETOURS_BITS).dll \ - $(BIND)\tryman$(DETOURS_BITS).exe \ - $(BIND)\size$(DETOURS_BITS).exe \ - \ - $(BIND)\managed-x64.exe \ - $(BIND)\managed-ia64.exe \ - $(BIND)\managed-x86.exe \ - $(BIND)\managed-any.exe \ - $(BIND)\managed-any32.exe \ - \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\tstman$(DETOURS_BITS).bsc \ - $(OBJD)\tryman$(DETOURS_BITS).bsc \ -!ENDIF - option - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(BIND) - -$(OBJD)\tstman.obj : tstman.cpp - -$(OBJD)\tstman.res : tstman.rc - -$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\tstman$(DETOURS_BITS).lib: \ - $(OBJD)\tstman.obj $(OBJD)\tstman.res $(DEPS) - cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ - $(OBJD)\tstman.obj $(OBJD)\tstman.res \ - /link $(LINKFLAGS) /subsystem:console \ - /export:DetourFinishHelperProcess,@1,NONAME \ - /export:Test3264 \ - $(LIBS) - -$(OBJD)\tstman$(DETOURS_BITS).bsc : tstman.obj - bscmake /v /n /o $@ tstman.sbr - -$(OBJD)\tryman.obj : tryman.cpp - -$(BIND)\tryman$(DETOURS_BITS).exe : $(OBJD)\tryman.obj $(DEPS) $(BIND)\tstman$(DETOURS_BITS).lib - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\tryman.obj \ - /link $(LINKFLAGS) $(LIBS) $(BIND)\tstman$(DETOURS_BITS).lib \ - /subsystem:console - -$(OBJD)\tryman$(DETOURS_BITS).bsc : $(OBJD)\tryman.obj - bscmake /v /n /o $@ $(OBJD)\tryman.sbr - -$(OBJD)\size.obj : size.cpp - -$(BIND)\size$(DETOURS_BITS).exe : $(OBJD)\size.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\size.obj \ - /link $(LINKFLAGS) $(LIBS) \ - /subsystem:console /fixed:no - -$(OBJD)\size$(DETOURS_BITS).bsc : $(OBJD)\size.obj - bscmake /v /n /o $@ $(OBJD)\size.sbr - -$(BIND)\key.snk: - if not exist $(BIND)\key.snk sn -k $(BIND)\key.snk - -CSCFLAGS=/nowarn:1607 /unsafe- /optimize+ /debug+ /warnaserror - -$(BIND)\managed-x64.exe : $(BIND)\key.snk managed.cs - csc /nologo $(CSCFLAGS) /platform:x64 /keyfile:$(BIND)\key.snk \ - /out:$(BIND)\managed-x64.exe managed.cs - -$(BIND)\managed-ia64.exe : $(BIND)\key.snk managed.cs - csc /nologo $(CSCFLAGS) /platform:itanium /keyfile:$(BIND)\key.snk \ - /out:$(BIND)\managed-ia64.exe managed.cs - -$(BIND)\managed-x86.exe : $(BIND)\key.snk managed.cs - csc /nologo $(CSCFLAGS) /platform:x86 /keyfile:$(BIND)\key.snk \ - /out:$(BIND)\managed-x86.exe managed.cs - -$(BIND)\managed-any.exe : $(BIND)\key.snk managed.cs - csc /nologo $(CSCFLAGS) /platform:anycpu /keyfile:$(BIND)\key.snk \ - /out:$(BIND)\managed-any.exe managed.cs - -$(BIND)\managed-any32.exe : $(BIND)\key.snk managed.cs - -csc /nologo $(CSCFLAGS) /platform:anycpu32bitpreferred /keyfile:$(BIND)\key.snk \ - /out:$(BIND)\managed-any32.exe managed.cs - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\managed-*.* 2>nul - -del $(BIND)\tstman*.* 2>nul - -del $(BIND)\tryman*.* 2>nul - -del $(BIND)\size*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################### Install non-bit-size binaries. - -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" - -$(OPTD)\tstman$(DETOURS_OPTION_BITS).dll: -$(OPTD)\tstman$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\tryman$(DETOURS_OPTION_BITS).exe: -$(OPTD)\tryman$(DETOURS_OPTION_BITS).pdb: -$(OPTD)\size$(DETOURS_OPTION_BITS).exe: -$(OPTD)\size$(DETOURS_OPTION_BITS).pdb: - -$(BIND)\tstman$(DETOURS_OPTION_BITS).dll : $(OPTD)\tstman$(DETOURS_OPTION_BITS).dll - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. -$(BIND)\tstman$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tstman$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. -$(BIND)\tryman$(DETOURS_OPTION_BITS).exe : $(OPTD)\tryman$(DETOURS_OPTION_BITS).exe - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. -$(BIND)\tryman$(DETOURS_OPTION_BITS).pdb : $(OPTD)\tryman$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. -$(BIND)\size$(DETOURS_OPTION_BITS).exe : $(OPTD)\size$(DETOURS_OPTION_BITS).exe - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. -$(BIND)\size$(DETOURS_OPTION_BITS).pdb : $(OPTD)\size$(DETOURS_OPTION_BITS).pdb - @if exist $? copy /y $? $(BIND) >nul >nul && echo. $@ copied. - -option: \ - $(BIND)\tstman$(DETOURS_OPTION_BITS).dll \ - $(BIND)\tstman$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\tryman$(DETOURS_OPTION_BITS).exe \ - $(BIND)\tryman$(DETOURS_OPTION_BITS).pdb \ - $(BIND)\size$(DETOURS_OPTION_BITS).exe \ - $(BIND)\size$(DETOURS_OPTION_BITS).pdb \ - -!ELSE - -option: - -!ENDIF - -############################################################################## - -# !IF "$(DETOURS_TARGET_PROCESSOR)" == "X64" -# #!MESSAGE Building for 64-bit X64. -# DETOURS_SOURCE_BROWSING = 0 -# !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" -# #!MESSAGE Building for 64-bit IA64. -# !ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X86" -# #!MESSAGE Building for 32-bit X86. -# !ELSE - -!if "$(DETOURS_OPTION_PROCESSOR)" != "" -test: all size32 size64 -!else -test: all -!endif - @echo ---- Trying native binary w/o test ---------------------- - $(BIND)\tryman$(DETOURS_BITS).exe - @echo. - @echo ---- Trying native binary ------------------------------- - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\tryman$(DETOURS_BITS).exe - @echo. - @echo ---- Trying anycpu managed binary ----------------------- - -$(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-any.exe - @echo. - @echo ---- Trying anycpu managed 32-bit preferrred binary ----- - -if exist $(BIND)\managed-any32.exe $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-any32.exe - @echo. - @echo ---- Trying x86 managed binary -------------------------- - -$(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-x86.exe - @echo. - @echo ---- Trying x64 managed binary -------------------------- - -$(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-x64.exe - @echo. - @echo ---- Trying ia64 managed binary ------------------------- - -$(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-ia64.exe - @echo. - -testm: all - csc managed.cs - @echo. - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-any.exe - @echo. - -size: all - @echo. - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\size$(DETOURS_BITS).exe 10 - @echo. - -size32: all - @echo. - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\size32.exe 10 - @echo. - -size64: all - @echo. - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\size64.exe 10 - @echo. - -sizedbg: all - @echo. - windbg -o $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\size$(DETOURS_BITS).exe 10 - @echo. - -tx: all - cd $(MAKEDIR)\..\..\src - nmake /nologo - cd $(MAKEDIR)\..\..\samples\withdll - nmake /nologo - cd $(MAKEDIR) - rem $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed.exe - windbg -g -o $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-any.exe - -mx: all - cd $(MAKEDIR)\..\..\src - nmake /nologo - cd $(MAKEDIR)\..\..\samples\withdll - nmake /nologo - cd $(MAKEDIR) - $(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\tryman$(DETOURS_BITS).exe - -test-managed: all - @echo ---- Trying anycpu managed binary ----------------------- - -$(BIND)\withdll.exe -d:$(BIND)\tstman$(DETOURS_BITS).dll $(BIND)\managed-any.exe - @echo. - @echo ---- Trying x86 managed binary -------------------------- - -$(BIND_X86)\withdll.exe -d:$(BIND_X86)\tstman32.dll $(BIND_X86)\managed-x86.exe - @echo. - @echo ---- Trying anycpu managed 32-bit preferrred binary ----- - -if exist $(BIND_X86)\managed-any32.exe $(BIND_X86)\withdll.exe -d:$(BIND_X86)\tstman32.dll $(BIND_X86)\managed-any32.exe - @echo. - @echo ---- Trying x64 managed binary -------------------------- - -$(BIND)\withdll.exe -d:$(BIND_X64)\tstman64.dll $(BIND)\managed-x64.exe - -################################################################# End of File. diff --git a/samples/withdll/Makefile b/samples/withdll/Makefile deleted file mode 100644 index 16b69de7..00000000 --- a/samples/withdll/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -############################################################################## -## -## Makefile for Detours Test Programs. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -!include ..\common.mak - -LIBS=$(LIBS) kernel32.lib - -############################################################################## - -all: dirs \ - $(BIND)\withdll.exe \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\withdll.bsc \ -!ENDIF - option - -clean: - -del *~ 2>nul - -del $(BIND)\withdll.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\withdll.obj : withdll.cpp - -$(BIND)\withdll.exe : $(OBJD)\withdll.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\withdll.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console - -$(OBJD)\withdll.bsc : $(OBJD)\withdll.obj - bscmake /v /n /o $@ $(OBJD)\withdll.sbr - -############################################### Install non-bit-size binaries. - -option: - -############################################################################## - -test: all - $(BIND)\withdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - $(BIND)\withdll.exe -v -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - -debug: all - windbg -c ".srcfix;l+s;l+t" -o \ - $(BIND)\withdll.exe -d:$(BIND)\slept$(DETOURS_BITS).dll $(BIND)\sleepold.exe - -################################################################# End of File. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..e7dc5155 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,42 @@ +############################################################################## +## +## CMakeLists.txt for the detours library. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +target_sources(detours + PRIVATE + creatwth.cpp + detours.cpp + disasm.cpp + disolarm.cpp + disolarm64.cpp + disolia64.cpp + disolx64.cpp + disolx86.cpp + image.cpp + modules.cpp + PUBLIC + FILE_SET HEADERS + BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} + FILES detours.h detver.h +) + +target_compile_definitions(detours PRIVATE + WIN32_LEAN_AND_MEAN # excludes rarely-used Windows API surface (sockets, GDI, ...) from to cut compile time and avoid symbol collisions + _WIN32_WINNT=0x0501 # declares the oldest Windows API level Detours' headers may assume, since target processes it attaches to may run very old Windows builds + $<$:DETOUR_DEBUG=1> # enables verbose DETOUR_TRACE diagnostics (see detours.cpp) in Debug builds only +) + +if(MSVC) + target_compile_options(detours PRIVATE + /W4 + /we4777 /we4800 # format-string and BOOL-truncation bugs are easy to introduce against the raw WinAPI; promote them to hard errors too + /Gy # function-level linking (not a CMake default -- checked Windows-MSVC.cmake) + /Zl # omit the default library name so consumers pick their own CRT + /Od # detours patches raw machine code; optimized codegen has broken this historically + ) +endif() diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 413b30b0..00000000 --- a/src/Makefile +++ /dev/null @@ -1,127 +0,0 @@ -############################################################################## -## -## Makefile for Detours. -## -## Microsoft Research Detours Package, Version 4.0.1 -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -ROOT = .. -!include "$(ROOT)\system.mak" - -!IF "$(DETOURS_SOURCE_BROWSING)" == "" -DETOURS_SOURCE_BROWSING = 0 -!ENDIF - -#######################/####################################################### -## -CFLAGS=/nologo /W4 /WX /we4777 /we4800 /Zi /MT /Gy /Gm- /Zl /Od /DDETOUR_DEBUG=$(DETOURS_DEBUG) - -!IF $(DETOURS_SOURCE_BROWSING)==1 -CFLAGS=$(CFLAGS) /FR -!ELSE -CFLAGS=$(CFLAGS) /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x501 -!ENDIF - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" -CFLAGS=$(CFLAGS) /wd4163 # intrinsic rdtebex not available; using newer Windows headers with older compiler -!ENDIF - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -CFLAGS=/arm64EC $(CFLAGS) -!ENDIF - -!if defined(DETOURS_WIN_7) && defined(DETOURS_CL_17_OR_NEWER) -CFLAGS=$(CFLAGS) /D_USING_V110_SDK71_ -!elseif defined(DETOURS_ANALYZE) -CFLAGS=$(CFLAGS) /analyze -!endif - -LIBFLAGS=/nologo - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -LIBFLAGS=$(LIBFLAGS) /machine:arm64x -!ENDIF - -OBJS = \ - $(OBJD)\detours.obj \ - $(OBJD)\modules.obj \ - $(OBJD)\disasm.obj \ - $(OBJD)\image.obj \ - $(OBJD)\creatwth.obj \ - $(OBJD)\disolx86.obj \ - $(OBJD)\disolx64.obj \ - $(OBJD)\disolia64.obj \ - $(OBJD)\disolarm.obj \ - $(OBJD)\disolarm64.obj \ - -############################################################################## -## -.SUFFIXES: .cpp .h .obj - -!ifdef DETOURS_ANALYZE -.cpp{$(OBJD)}.obj: - $(CC) $(CFLAGS) /Fd$(LIBD)\detours.pdb /Fo$(OBJD)\ /c $< -!else -.cpp{$(OBJD)}.obj:: - $(CC) $(CFLAGS) /Fd$(LIBD)\detours.pdb /Fo$(OBJD)\ /c $< -!endif - -############################################################################## - -all: dirs \ - $(LIBD)\detours.lib \ - $(INCD)\detours.h \ - $(INCD)\detver.h \ -!IF $(DETOURS_SOURCE_BROWSING)==1 - $(OBJD)\detours.bsc \ -!endif - -############################################################################## - -clean: - -del *~ 2>nul - -del $(LIBD)\detours.pdb $(LIBD)\detours.lib 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -############################################################################## - -dirs: - @if not exist "$(INCD)" mkdir "$(INCD)" && echo. Created $(INCD) - @if not exist "$(LIBD)" mkdir "$(LIBD)" && echo. Created $(LIBD) - @if not exist "$(BIND)" mkdir "$(BIND)" && echo. Created $(BIND) - @if not exist "$(OBJD)" mkdir "$(OBJD)" && echo. Created $(OBJD) - -$(OBJD)\detours.bsc : $(OBJS) - bscmake /v /n /o $@ $(OBJS:.obj=.sbr) - -$(LIBD)\detours.lib : $(OBJS) - link /lib $(LIBFLAGS) /out:$@ $(OBJS) - -$(INCD)\detours.h : detours.h - copy detours.h $@ - -$(INCD)\detver.h : detver.h - copy detver.h $@ - -$(OBJD)\detours.obj : detours.cpp detours.h -$(OBJD)\modules.obj : modules.cpp detours.h -$(OBJD)\disasm.obj : disasm.cpp detours.h -$(OBJD)\image.obj : image.cpp detours.h -$(OBJD)\creatwth.obj : creatwth.cpp uimports.cpp detours.h -$(OBJD)\disolx86.obj: disasm.cpp detours.h -$(OBJD)\disolx64.obj: disasm.cpp detours.h -$(OBJD)\disolia64.obj: disasm.cpp detours.h -$(OBJD)\disolarm.obj: disasm.cpp detours.h -$(OBJD)\disolarm64.obj: disasm.cpp detours.h - -test: all - cd $(MAKEDIR)\..\samples\slept - nmake /nologo test - cd $(MAKEDIR) - -################################################################# End of File. diff --git a/src/detours.h b/src/detours.h index 8e987854..73939246 100644 --- a/src/detours.h +++ b/src/detours.h @@ -106,6 +106,8 @@ #define DETOURS_ARM64 #else +// These macros come from ; if you hit this, make sure is +// included before detours.h. #error Unknown architecture (x86, amd64, ia64, arm, arm64, arm64ec) #endif diff --git a/system.mak b/system.mak deleted file mode 100644 index 40404bc6..00000000 --- a/system.mak +++ /dev/null @@ -1,146 +0,0 @@ -############################################################################## -## -## Establish build target type for Detours. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -############################################## Determine Processor Build Type. -# -# Default the detours architecture to match the compiler target that -# has been selected by the user via the VS Developer Command Prompt -# they launched. -!IF "$(DETOURS_TARGET_PROCESSOR)" == "" && "$(VSCMD_ARG_TGT_ARCH)" != "" -DETOURS_TARGET_PROCESSOR = $(VSCMD_ARG_TGT_ARCH) -!ENDIF - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "" && "$(PROCESSOR_ARCHITEW6432)" != "" -DETOURS_TARGET_PROCESSOR = X86 -!ENDIF - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "" -DETOURS_TARGET_PROCESSOR = $(PROCESSOR_ARCHITECTURE) -!ENDIF - -# Uppercase DETOURS_TARGET_PROCESSOR -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:a=A) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:b=B) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:c=C) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:d=D) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:e=E) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:f=F) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:g=G) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:h=H) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:i=I) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:j=J) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:k=K) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:l=L) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:m=M) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:n=N) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:o=O) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:p=P) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:q=Q) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:r=R) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:s=S) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:t=T) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:u=U) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:v=V) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:w=W) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:x=X) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:y=Y) -DETOURS_TARGET_PROCESSOR=$(DETOURS_TARGET_PROCESSOR:z=Z) - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "WIN32" -DETOURS_TARGET_PROCESSOR = X86 -!ENDIF - -!IF "$(DETOURS_TARGET_PROCESSOR)" == "AMD64" -DETOURS_TARGET_PROCESSOR = X64 -!ENDIF - - -!if "$(DETOURS_TARGET_PROCESSOR:64=)" == "$(DETOURS_TARGET_PROCESSOR)" -DETOURS_32BIT=1 -DETOURS_BITS=32 -!else -DETOURS_64BIT=1 -DETOURS_BITS=64 -!endif - -########################################## Configure build based on Processor. -## -## DETOURS_OPTION_PROCESSOR: Set this macro if the processor *will* run code -## from another ISA (i.e. x86 on x64). -## -## DETOURS_OPTION_BITS: Set this macro if the processor *may* have -## an alternative word size. -## -!IF "$(DETOURS_TARGET_PROCESSOR)" == "X64" -#!MESSAGE Building for 64-bit X64. -DETOURS_SOURCE_BROWSING = 0 -DETOURS_OPTION_PROCESSOR=X86 -DETOURS_OPTION_BITS=32 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "IA64" -#!MESSAGE Building for 64-bit IA64. -DETOURS_OPTION_PROCESSOR=X86 -DETOURS_OPTION_BITS=32 -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "X86" -#!MESSAGE Building for 32-bit X86. -DETOURS_OPTION_BITS=64 -# Don't set DETOURS_OPTION_PROCESSOR for x64 because we don't *know* that -# we'll run on a 64-bit machine. -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM" -#!MESSAGE Building for 32-bit ARM. -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64" -#!MESSAGE Building for 64-bit ARM64. -!ELSEIF "$(DETOURS_TARGET_PROCESSOR)" == "ARM64EC" -#!MESSAGE Building for 64-bit ARM64EC. -!ELSE -!MESSAGE Note: To select the target processor architecture set either -!MESSAGE PROCESSOR_ARCHITECTURE or DETOURS_TARGET_PROCESSOR. -!MESSAGE -!ERROR Unknown target processor: "$(DETOURS_TARGET_PROCESSOR)" -!ENDIF - -############################################################################## -## -!IF "$(DETOURS_CONFIG)" == "Debug" -DETOURS_DEBUG=1 -!ELSE -DETOURS_DEBUG=0 -!ENDIF - -INCD = $(ROOT)\include -LIBD = $(ROOT)\lib.$(DETOURS_TARGET_PROCESSOR)$(DETOURS_CONFIG) -BIND = $(ROOT)\bin.$(DETOURS_TARGET_PROCESSOR)$(DETOURS_CONFIG) -OBJD = obj.$(DETOURS_TARGET_PROCESSOR)$(DETOURS_CONFIG) -!IF "$(DETOURS_OPTION_PROCESSOR)" != "" -OPTD = $(ROOT)\bin.$(DETOURS_OPTION_PROCESSOR)$(DETOURS_CONFIG) -!ENDIF - -INCDS = $(ROOT)\include - -LIBDS = \ - $(ROOT)\lib.x86$(DETOURS_CONFIG) \ - $(ROOT)\lib.x64$(DETOURS_CONFIG) \ - $(ROOT)\lib.ia64$(DETOURS_CONFIG) \ - $(ROOT)\lib.arm$(DETOURS_CONFIG) \ - $(ROOT)\lib.arm64$(DETOURS_CONFIG) \ - -BINDS = \ - $(ROOT)\bin.x86$(DETOURS_CONFIG) \ - $(ROOT)\bin.x64$(DETOURS_CONFIG) \ - $(ROOT)\bin.ia64$(DETOURS_CONFIG) \ - $(ROOT)\bin.arm$(DETOURS_CONFIG) \ - $(ROOT)\bin.arm64$(DETOURS_CONFIG) \ - -OBJDS = \ - obj.x86$(DETOURS_CONFIG) \ - obj.x64$(DETOURS_CONFIG) \ - obj.ia64$(DETOURS_CONFIG) \ - obj.arm$(DETOURS_CONFIG) \ - obj.arm64$(DETOURS_CONFIG) \ - -############################################################################## diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 00000000..d091c167 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,63 @@ +############################################################################## +## +## CMakeLists.txt for the Detours unit tests. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +add_executable(unittests + corruptor.cpp + main.cpp + payload.cpp + process_helpers.cpp + test_image_api.cpp + test_module_api.cpp +) + +# corruptor.cpp deliberately triggers hardware exceptions to exercise the +# image API's error paths; without this define, Catch's vectored exception +# handler intercepts them and crashes the suite (exit 139) instead of +# reporting a clean test failure. +target_compile_definitions(unittests PRIVATE CATCH_CONFIG_NO_WINDOWS_SEH) + +# /EHsc (Catch2's assertion macros are implemented via C++ exceptions) is +# omitted here: CMake's MSVC defaults already put it in CMAKE_CXX_FLAGS for +# every target, confirmed via CMakeCache.txt (CMAKE_CXX_FLAGS:STRING=/DWIN32 +# /D_WINDOWS /EHsc), so restating it would just be a duplicate flag. +# +# Only real MSVC (cl.exe) is supported today; this is scoped under if(MSVC) +# rather than applied unconditionally so a follow-up PR can add clang-cl/ +# MinGW-w64 support here without restructuring this file. +if(MSVC) + target_compile_options(unittests PRIVATE + /W4 /we4777 /we4800 /Od # same warning/codegen policy as the detours library (see src/CMakeLists.txt) + ) +endif() + +target_link_libraries(unittests PRIVATE + Microsoft::detours + kernel32.lib # CreateProcessW() in process_helpers.cpp +) + +add_test(NAME unittests COMMAND unittests --reporter console --success --durations yes) + +# Guards against DETOURS_VERSION (src/detours.h) drifting from the project's own +# VERSION (root CMakeLists.txt) -- the two are maintained by hand in separate files, +# so nothing else catches them silently going out of sync. +add_executable(version_check version_check.cpp) +target_link_libraries(version_check PRIVATE Microsoft::detours) +target_compile_definitions(version_check PRIVATE + DETOURS_EXPECTED_VERSION=0x${PROJECT_VERSION_MAJOR}c${PROJECT_VERSION_MINOR}c${PROJECT_VERSION_PATCH} +) +add_test(NAME version_check COMMAND version_check) + +# Each integration test spawns a nested CMake configure+build, so they're +# noticeably slower than the unit tests; leave them opt-in for local +# development and enable them in CI. +option(DETOURS_BUILD_INTEGRATION_TESTS "Build the find_package()/add_subdirectory() consumer smoke tests" OFF) + +if(DETOURS_BUILD_INTEGRATION_TESTS) + add_subdirectory(integration) +endif() diff --git a/tests/Makefile b/tests/Makefile deleted file mode 100644 index cddcbadd..00000000 --- a/tests/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -############################################################################## -## -## Detours Unit Tests. -## -## Microsoft Research Detours Package -## -## Copyright (c) Microsoft Corporation. All rights reserved. -## - -ROOT = .. -!include ..\samples\common.mak - -DEPS = $(LIBD)\detours.lib -LIBS=$(LIBS) kernel32.lib rpcrt4.lib -CFLAGS=$(CFLAGS) /EHsc /DCATCH_CONFIG_NO_WINDOWS_SEH - -############################################################################## - -all: dirs \ - $(BIND)\unittests.exe \ - \ - -############################################################################## - -dirs: - @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) - @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) - -$(OBJD)\main.obj : main.cpp -$(OBJD)\test_module_api.obj : test_module_api.cpp -$(OBJD)\test_image_api.obj : test_image_api.cpp -$(OBJD)\corruptor.obj : corruptor.cpp -$(OBJD)\process_helpers.obj : process_helpers.cpp -$(OBJD)\payload.obj : payload.cpp - -$(BIND)\unittests.exe : $(OBJD)\main.obj \ - $(OBJD)\test_module_api.obj \ - $(OBJD)\test_image_api.obj \ - $(OBJD)\corruptor.obj \ - $(OBJD)\process_helpers.obj \ - $(OBJD)\payload.obj $(DEPS) - cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb \ - $(OBJD)\main.obj \ - $(OBJD)\test_module_api.obj \ - $(OBJD)\test_image_api.obj \ - $(OBJD)\corruptor.obj \ - $(OBJD)\process_helpers.obj \ - $(OBJD)\payload.obj \ - /link $(LINKFLAGS) $(LIBS) /subsystem:console - -############################################################################## - -clean: - -del *~ 2>nul - -del $(BIND)\unittests*.* 2>nul - -rmdir /q /s $(OBJD) 2>nul - -realclean: clean - -rmdir /q /s $(OBJDS) 2>nul - -option: -############################################################################## - -test: all - @cls - $(BIND)\unittests.exe --reporter console --success --durations yes - -debug: all - windbg -o $(BIND)\unittests.exe - - -################################################################# End of File. diff --git a/tests/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt new file mode 100644 index 00000000..f2fc10d8 --- /dev/null +++ b/tests/integration/CMakeLists.txt @@ -0,0 +1,62 @@ +############################################################################## +## +## CTest smoke tests proving that downstream projects can consume Detours +## both via find_package(Detours) (against an installed package) and via +## add_subdirectory() (built straight from this source tree). +## +## Each scenario is a tiny standalone CMake project under this directory, +## configured and built out-of-process by run_consumer.cmake using the same +## generator/platform/config as the outer build. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +add_test(NAME integration.add_subdirectory_mt + COMMAND ${CMAKE_COMMAND} + "-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_mt" + "-DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_mt" + "-DGENERATOR=${CMAKE_GENERATOR}" + "-DPLATFORM=${CMAKE_GENERATOR_PLATFORM}" + "-DCONFIG=$" + -P "${CMAKE_CURRENT_SOURCE_DIR}/run_consumer.cmake" +) + +add_test(NAME integration.add_subdirectory_dll + COMMAND ${CMAKE_COMMAND} + "-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_dll" + "-DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_dll" + "-DGENERATOR=${CMAKE_GENERATOR}" + "-DPLATFORM=${CMAKE_GENERATOR_PLATFORM}" + "-DCONFIG=$" + -P "${CMAKE_CURRENT_SOURCE_DIR}/run_consumer.cmake" +) + +if(DETOURS_INSTALL) + set(_detours_stage_dir "${CMAKE_CURRENT_BINARY_DIR}/stage") + + # find_package(Detours) needs a real installed package to find, so stage + # one in an isolated prefix under the build tree rather than touching + # whatever CMAKE_INSTALL_PREFIX the outer build is configured with. + add_test(NAME integration.stage_install + COMMAND ${CMAKE_COMMAND} --install "${CMAKE_BINARY_DIR}" --config $ --prefix "${_detours_stage_dir}" + ) + set_tests_properties(integration.stage_install PROPERTIES + FIXTURES_SETUP DetoursStageInstall + ) + + add_test(NAME integration.find_package + COMMAND ${CMAKE_COMMAND} + "-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}/find_package" + "-DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}/find_package" + "-DGENERATOR=${CMAKE_GENERATOR}" + "-DPLATFORM=${CMAKE_GENERATOR_PLATFORM}" + "-DCONFIG=$" + "-DPREFIX_PATH=${_detours_stage_dir}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/run_consumer.cmake" + ) + set_tests_properties(integration.find_package PROPERTIES + FIXTURES_REQUIRED DetoursStageInstall + ) +endif() diff --git a/tests/integration/add_subdirectory_dll/CMakeLists.txt b/tests/integration/add_subdirectory_dll/CMakeLists.txt new file mode 100644 index 00000000..50800e08 --- /dev/null +++ b/tests/integration/add_subdirectory_dll/CMakeLists.txt @@ -0,0 +1,32 @@ +############################################################################## +## +## Consumer project proving that the Detours source tree is usable via +## add_subdirectory() when the consumer's MSVC runtime library setting +## deliberately differs from Detours' own /MT (see root CMakeLists.txt) -- +## a consumer's runtime library choice is independent of Detours', and +## pulling in a /MT-only static lib via add_subdirectory() doesn't force a +## /MD consumer target to downgrade, or produce a linker warning/error, as +## long as the consumer doesn't itself pull in CRT/STL headers that embed a +## conflicting RuntimeLibrary detect_mismatch claim. Compare with +## ../add_subdirectory_mt, which matches instead. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +cmake_minimum_required(VERSION 3.28.3) + +project(DetoursAddSubdirectoryDLLConsumer LANGUAGES CXX) + +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") + +add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../../.." detours) + +add_executable(consumer main.cpp) +target_link_libraries(consumer PRIVATE Microsoft::detours) + +if(MSVC) + target_compile_options(consumer PRIVATE /W4 /WX) + target_link_options(consumer PRIVATE /WX) +endif() diff --git a/tests/integration/add_subdirectory_dll/main.cpp b/tests/integration/add_subdirectory_dll/main.cpp new file mode 100644 index 00000000..54fdd4fd --- /dev/null +++ b/tests/integration/add_subdirectory_dll/main.cpp @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + if (DetourTransactionBegin() != NO_ERROR) + { + return 1; + } + + return DetourTransactionAbort() == NO_ERROR ? 0 : 1; +} diff --git a/tests/integration/add_subdirectory_mt/CMakeLists.txt b/tests/integration/add_subdirectory_mt/CMakeLists.txt new file mode 100644 index 00000000..3de0a1bd --- /dev/null +++ b/tests/integration/add_subdirectory_mt/CMakeLists.txt @@ -0,0 +1,27 @@ +############################################################################## +## +## Consumer project proving that the Detours source tree is usable via +## add_subdirectory() when the consumer matches Detours' own /MT runtime +## library setting (see root CMakeLists.txt). Compare with +## ../add_subdirectory_dll, which deliberately differs. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +cmake_minimum_required(VERSION 3.28.3) + +project(DetoursAddSubdirectoryMTConsumer LANGUAGES CXX) + +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + +add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../../.." detours) + +add_executable(consumer main.cpp) +target_link_libraries(consumer PRIVATE Microsoft::detours) + +if(MSVC) + target_compile_options(consumer PRIVATE /W4 /WX) + target_link_options(consumer PRIVATE /WX) +endif() diff --git a/tests/integration/add_subdirectory_mt/main.cpp b/tests/integration/add_subdirectory_mt/main.cpp new file mode 100644 index 00000000..54fdd4fd --- /dev/null +++ b/tests/integration/add_subdirectory_mt/main.cpp @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + if (DetourTransactionBegin() != NO_ERROR) + { + return 1; + } + + return DetourTransactionAbort() == NO_ERROR ? 0 : 1; +} diff --git a/tests/integration/find_package/CMakeLists.txt b/tests/integration/find_package/CMakeLists.txt new file mode 100644 index 00000000..f744e9d3 --- /dev/null +++ b/tests/integration/find_package/CMakeLists.txt @@ -0,0 +1,23 @@ +############################################################################## +## +## Consumer project proving that an installed Detours package is usable via +## find_package(Detours). +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +cmake_minimum_required(VERSION 3.28.3) + +project(DetoursFindPackageConsumer LANGUAGES CXX) + +find_package(Detours REQUIRED CONFIG) + +add_executable(consumer main.cpp) +target_link_libraries(consumer PRIVATE Microsoft::detours) + +if(MSVC) + target_compile_options(consumer PRIVATE /W4 /WX) + target_link_options(consumer PRIVATE /WX) +endif() diff --git a/tests/integration/find_package/main.cpp b/tests/integration/find_package/main.cpp new file mode 100644 index 00000000..54fdd4fd --- /dev/null +++ b/tests/integration/find_package/main.cpp @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + if (DetourTransactionBegin() != NO_ERROR) + { + return 1; + } + + return DetourTransactionAbort() == NO_ERROR ? 0 : 1; +} diff --git a/tests/integration/run_consumer.cmake b/tests/integration/run_consumer.cmake new file mode 100644 index 00000000..127782d1 --- /dev/null +++ b/tests/integration/run_consumer.cmake @@ -0,0 +1,38 @@ +############################################################################## +## +## Configures and builds one of the consumer smoke-test projects out of +## process, mirroring the outer build's generator/platform/config. +## +## Expected -D arguments: SOURCE_DIR, BINARY_DIR, GENERATOR, CONFIG, and +## optionally PLATFORM and PREFIX_PATH. +## +## Microsoft Research Detours Package +## +## Copyright (c) Microsoft Corporation. All rights reserved. +## + +set(configure_args -S "${SOURCE_DIR}" -B "${BINARY_DIR}" -G "${GENERATOR}") + +if(PLATFORM) + list(APPEND configure_args -A "${PLATFORM}") +endif() + +if(PREFIX_PATH) + list(APPEND configure_args "-DCMAKE_PREFIX_PATH=${PREFIX_PATH}") +endif() + +execute_process( + COMMAND "${CMAKE_COMMAND}" ${configure_args} + RESULT_VARIABLE configure_result +) +if(NOT configure_result EQUAL 0) + message(FATAL_ERROR "Configuring ${SOURCE_DIR} failed") +endif() + +execute_process( + COMMAND "${CMAKE_COMMAND}" --build "${BINARY_DIR}" --config "${CONFIG}" + RESULT_VARIABLE build_result +) +if(NOT build_result EQUAL 0) + message(FATAL_ERROR "Building ${SOURCE_DIR} failed") +endif() diff --git a/tests/version_check.cpp b/tests/version_check.cpp new file mode 100644 index 00000000..8a0a3946 --- /dev/null +++ b/tests/version_check.cpp @@ -0,0 +1,22 @@ +// +// DETOURS_VERSION (src/detours.h) and the VERSION passed to project() in the root +// CMakeLists.txt are maintained by hand in two separate files; this confirms they +// haven't drifted apart. DETOURS_EXPECTED_VERSION is derived from PROJECT_VERSION_MAJOR/ +// MINOR/PATCH by tests/CMakeLists.txt, using the same 0xcc hex-literal +// encoding as DETOURS_VERSION itself. +// + +#include +#include "detours.h" +#include + +int main() +{ + if (DETOURS_VERSION != DETOURS_EXPECTED_VERSION) { + std::printf("DETOURS_VERSION (0x%x) does not match the CMake project VERSION-derived " + "value (0x%x) -- update whichever one is stale.\n", + DETOURS_VERSION, DETOURS_EXPECTED_VERSION); + return 1; + } + return 0; +} diff --git a/vc/Detours.sln b/vc/Detours.sln deleted file mode 100644 index 4bae9dae..00000000 --- a/vc/Detours.sln +++ /dev/null @@ -1,47 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Detours", "Detours.vcxproj", "{37489709-8054-4903-9C49-A79846049FC9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - DebugMDd|ARM = DebugMDd|ARM - DebugMDd|ARM64 = DebugMDd|ARM64 - DebugMDd|ARM64EC = DebugMDd|ARM64EC - DebugMDd|x64 = DebugMDd|x64 - DebugMDd|x86 = DebugMDd|x86 - ReleaseMD|ARM = ReleaseMD|ARM - ReleaseMD|ARM64 = ReleaseMD|ARM64 - ReleaseMD|ARM64EC = ReleaseMD|ARM64EC - ReleaseMD|x64 = ReleaseMD|x64 - ReleaseMD|x86 = ReleaseMD|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM.ActiveCfg = DebugMDd|ARM - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM.Build.0 = DebugMDd|ARM - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM64.ActiveCfg = DebugMDd|ARM64 - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM64.Build.0 = DebugMDd|ARM64 - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM64EC.ActiveCfg = DebugMDd|ARM64EC - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|ARM64EC.Build.0 = DebugMDd|ARM64EC - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|x64.ActiveCfg = DebugMDd|x64 - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|x64.Build.0 = DebugMDd|x64 - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|x86.ActiveCfg = DebugMDd|Win32 - {37489709-8054-4903-9C49-A79846049FC9}.DebugMDd|x86.Build.0 = DebugMDd|Win32 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM.ActiveCfg = ReleaseMD|ARM - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM.Build.0 = ReleaseMD|ARM - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM64.ActiveCfg = ReleaseMD|ARM64 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM64.Build.0 = ReleaseMD|ARM64 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM64EC.ActiveCfg = ReleaseMD|ARM64EC - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|ARM64EC.Build.0 = ReleaseMD|ARM64EC - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|x64.ActiveCfg = ReleaseMD|x64 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|x64.Build.0 = ReleaseMD|x64 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|x86.ActiveCfg = ReleaseMD|Win32 - {37489709-8054-4903-9C49-A79846049FC9}.ReleaseMD|x86.Build.0 = ReleaseMD|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {1E71C644-7F30-4025-B1DF-6A4F07A2EDB3} - EndGlobalSection -EndGlobal diff --git a/vc/Detours.vcxproj b/vc/Detours.vcxproj deleted file mode 100644 index 7cea8720..00000000 --- a/vc/Detours.vcxproj +++ /dev/null @@ -1,708 +0,0 @@ - - - - - DebugMDd - ARM - - - DebugMDd - ARM64 - - - DebugMDd - ARM64EC - - - DebugMDd - Win32 - - - ReleaseMD - ARM - - - ReleaseMD - ARM64 - - - ReleaseMD - ARM64EC - - - ReleaseMD - Win32 - - - DebugMDd - x64 - - - ReleaseMD - x64 - - - - 15.0 - {37489709-8054-4903-9C49-A79846049FC9} - Win32Proj - Detours - 10.0 - - - - Makefile - true - v143 - Unicode - - - Makefile - false - v143 - Unicode - - - Makefile - true - v143 - Unicode - - - Makefile - true - v143 - Unicode - - - Makefile - true - v143 - Unicode - - - Makefile - true - v143 - Unicode - - - Makefile - false - v143 - Unicode - - - Makefile - false - v143 - Unicode - - - Makefile - false - v143 - Unicode - - - Makefile - false - v143 - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean -nmake - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake clean - - - - Level4 - true - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - true - true - ProgramDatabase - $(OutputPath)$(TargetName).pdb - - - Windows - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - Disabled - true - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - true - ProgramDatabase - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - Disabled - true - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - true - ProgramDatabase - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - Disabled - true - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - true - ProgramDatabase - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - Disabled - true - _DEBUG;_LIB;%(PreprocessorDefinitions) - true - true - ProgramDatabase - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - MaxSpeed - true - true - WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) - true - true - $(OutputPath)$(TargetName).pdb - - - Windows - true - true - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - true - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - true - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - true - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - true - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - true - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - true - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - Level4 - MaxSpeed - true - true - NDEBUG;_LIB;%(PreprocessorDefinitions) - true - true - - - - - $(OutputPath)$(TargetName).pdb - - - Windows - true - true - true - - - - SET DETOURS_TARGET_PROCESSOR=$(Platform) -cd .. -nmake - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vc/Detours.vcxproj.filters b/vc/Detours.vcxproj.filters deleted file mode 100644 index b70aa5b7..00000000 --- a/vc/Detours.vcxproj.filters +++ /dev/null @@ -1,605 +0,0 @@ - - - - - {4DE3849F-647A-48FF-8873-256D44DFF3CA} - - - {6215A674-4251-4F64-AA56-6F80297E5F8B} - - - {B581B77F-AE4D-43BC-8C4F-EDE0E61EFFD3} - - - {BF2ACC0E-890D-4BD0-B532-6228AF011E3E} - - - {32F50667-320C-4799-B7DA-D1878C358D64} - - - {314C251E-4D8E-4837-9C36-4741399ED2A1} - - - {53C9A890-D5AB-4FD1-B898-6107C0E676E7} - - - {17467834-9161-4FB2-BBEF-E3233CBBC818} - - - {5A3371DC-E827-47CC-901A-F3D91162EFB2} - - - {A2B9B912-8C03-400F-B271-51EEB4CE6843} - - - {571B99A3-B6D5-4838-B189-4A038B104B2A} - - - {F1740406-C1BB-49C7-A602-9DDACBD4ABCA} - - - {58CCECE5-A38B-4C56-8E3F-3E0722393F56} - - - {B3E06AC8-3F78-43C8-B7AC-84546475F960} - - - {CD32F55E-60C5-4ED6-ACCC-4B43E6AC195D} - - - {1ABFBA92-4E60-481A-9007-8150D95E072F} - - - {0929821A-9C85-4D74-B969-865D6DA40D2A} - - - {9017F1FA-4DCB-44D1-854D-2F14358791F5} - - - {D9D7E0B0-4E14-473F-AE28-B4A5AF4EB427} - - - {1F157B88-D9DA-41E3-9B18-FC5600777FB1} - - - {88EFC740-5E28-484E-97FC-E7BBA6D36454} - - - {EA900A65-64CA-417B-8DE7-4174C9CB1E5A} - - - {7A1582F0-0A25-4A0E-B7E5-14F6E332BDFA} - - - {B99E03FF-320A-4D13-BFB8-674E102E306D} - - - {6169E241-5297-4B63-8D32-407D592EF103} - - - {EFD841EC-A8B1-4CD6-AC2D-0D286669BA3B} - - - {14F0CAFF-0470-4D28-9083-3FD5656E7B27} - - - {A3CE1454-F707-4A29-B389-2E762651CDD7} - - - {D3299D5A-9CE3-45E6-9784-4166606BA70B} - - - {6E1471A7-7B40-4528-8210-64CFC4663258} - - - {62236214-1B41-4765-9D9D-1E313B4E5AB7} - - - {24AC6634-A8C9-430B-8D95-45DEB57070C9} - - - {077E7134-5AA3-4151-8313-88106FCBDAB3} - - - {E980771B-0BA5-4B01-947A-B99D33E31E89} - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - samples\tryman - - - samples\tracebld - - - samples\tracebld - - - samples\tracelnk - - - samples\tracemem - - - samples\tracereg - - - samples\traceser - - - samples\tracessl - - - samples\tracetcp - - - samples\tryman - - - samples\tryman - - - samples\withdll - - - samples\traceapi - - - samples\slept - - - samples\simple - - - samples\simple - - - samples\simple_safe - - - samples\simple_safe - - - samples\slept - - - samples\slept - - - samples\slept - - - samples\slept - - - samples\syelog - - - samples\syelog - - - samples\syelog - - - samples\syelog - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\talloc - - - samples\traceapi - - - samples\traceapi - - - samples\slept - - - samples\dtest - - - samples\dtest - - - samples\dumpe - - - samples\dumpi - - - samples\echo - - - samples\echo - - - samples\einst - - - samples\einst - - - samples\einst - - - samples\einst - - - samples\excep - - - samples\findfunc - - - samples\findfunc - - - samples\excep - - - samples\impmunge - - - samples\dynamic_alloc - - - samples\echo - - - samples\member - - - samples\opengl - - - samples\region - - - samples\setdll - - - samples\findfunc - - - samples\findfunc - - - samples\opengl - - - samples\comeasy - - - samples\commem - - - samples\cping - - - samples\disas - - - samples\disas - - - samples\comeasy - - - samples\disas - - - - - src - - - src - - - samples\tracebld - - - samples\slept - - - samples\syelog - - - samples\dtest - - - samples\excep - - - samples\findfunc - - - - - samples\tracebld - - - samples\tracelnk - - - samples\tracemem - - - samples\tracereg - - - samples\traceser - - - samples\tracessl - - - samples\tracetcp - - - samples\tryman - - - samples\withdll - - - samples\tryman - - - samples\simple - - - samples\simple_safe - - - samples\slept - - - samples\syelog - - - samples\talloc - - - samples\traceapi - - - samples\dumpe - - - samples\dumpi - - - samples\dynamic_alloc - - - samples\echo - - - samples\einst - - - samples\excep - - - samples\findfunc - - - samples\impmunge - - - samples\member - - - samples\opengl - - - samples\region - - - samples\setdll - - - samples\dynamic_alloc - - - samples\dynamic_alloc - - - samples\disas - - - samples - - - samples\cping - - - samples\disas - - - samples\comeasy - - - samples\commem - - - samples\cping - - - samples\disas - - - samples\dtest - - - samples - - - samples\disas - - - - - - - - - - samples\slept - - - samples\talloc - - - samples\slept - - - samples\talloc - - - samples\slept - - - samples\dtest - - - samples\dtest - - - samples\dtest - - - samples\cping - - - samples - - - - - - samples\traceapi - - - samples\tracebld - - - samples\tracelnk - - - samples\tracemem - - - samples\tracereg - - - samples\traceser - - - samples\tracessl - - - samples\tracetcp - - - samples\tryman - - - samples\slept - - - samples\simple - - - samples\simple_safe - - - samples\slept - - - samples\dtest - - - samples\echo - - - samples\findfunc - - - samples\opengl - - - samples\findfunc - - - samples\comeasy - - - - - samples\cping - - -