1)什么是Detours?
Detours是微软提供的一套工具,主要用于win32 API的拦截管理。
2)准备工作(环境)
下载Detours的资源,地址:https://github.com/microsoft/detours
安装Visual Studio,版本并无特别要求,最近的发行就可以。本人安装的版本是VS 2017。
3)设置编译环境
安装VS后,开始菜单选择“VS 2017的 x64_x86 交叉工具命令提示符”,进入shell。
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64_x86'
默认采用的是vcvarsall.bat
a)如果需要编译x86版本,需要做如下设置:
到以下目录:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary>
运行:
vcvars32.bat
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build>vcvars64.bat
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
b)如果要x64版本,运行:
vcvars64.bat
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build>vcvars64.bat
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
4)编译Detours
不要退出shell,到Detours的代码src目录,运行:
nmake /f Makefile
Microsoft (R) 程序维护实用工具 14.16.27048.0 版
版权所有 (C) Microsoft Corporation。 保留所有权利。
Created ..\lib.X64
Created ..\bin.X64
Created obj.X64
cl /nologo /W4 /WX /we4777 /we4800 /Zi /MT /Gy /Gm- /Zl /Od /DDETOUR_DEBUG=0 /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x501 /Fd..\lib.X64\detours.pdb /Foobj.X64\ /c detours.cpp modules.cpp disasm.cpp image.cpp creatwth.cpp disolx86.cpp disolx64.cpp disolia64.cpp disolarm.cpp disolarm64.cpp
detours.cpp
modules.cpp
disasm.cpp
image.cpp
creatwth.cpp
disolx86.cpp
disolx64.cpp
disolia64.cpp
disolarm.cpp
disolarm64.cpp
正在生成代码...
link /lib /out:..\lib.X64\detours.lib /nologo obj.X64\detours.obj obj.X64\modules.obj obj.X64\disasm.obj obj.X64\image.obj obj.X64\creatwth.obj obj.X64\disolx86.obj obj.X64\disolx64.obj obj.X64\disolia64.obj obj.X64\disolarm.obj obj.X64\disolarm64.obj
完成后,可以看到,在Detours的根目录下,增加了以下目录:
include
bin.X64
lib.X64
如果希望编译x86的版本,按照3.a的方法切换VS的编译环境,编译后得到的目录:
include
bin.X86
lib.X86
5)在具体应用项目内的环境配置
a)添加工程的头文件目录:工程->属性->配置属性->c/c+±->常规->附加包含目录:加上头文件存放目录include;
b)添加文件引用的lib静态库路径:工程->属性->配置属性->链接器->常规->附加库目录:加上lib文件存放目录;
c)添加工程引用的lib文件名:工程->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。
带着使命来到世上的你,给他人提供价值,才有价值