Detours编译方法(x86/x64)

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文件名。

 


欢迎转载,本文地址: https://blog.prodrich.com/detail/85/

带着使命来到世上的你,给他人提供价值,才有价值