最近在做API hook相关的东西,用了inline hook后感觉不错,但是查找资料发现inline hook并不稳定

inline hook 的原理是在系统访问一个函数的时候先替换原函数入口处的内容跳转到自己设计的hook函数中,然后在自己函数中进行hook工作。可是在并行系统中,很可能有个线程就在这个时候调用了被自己改掉的系统函数,出现我们无法预期的结果。

所以打算学习一下inline hook升级版:detour库hook,其实hook过程原理基本一样,只是微软做了封装和相关的冲突检查,所以这种api hook稳定些。

(当然其他apihook方式还有modifying the Import Address Table (link provided later),using proxy DLLs and manifest files

用detour库进行hook必须先部署Detour,

电脑环境:win7 64bit

1.从http://research.microsoft.com/sn/detours下载detour professional 3.0!!!不是Express版的哈~

2.安装(此流程无脑)

3.生成detour.lib:安装detour后,目录中有src文件夹,把文件夹拷贝到\Microsoft Visual Studio 10.0\VC下

3.1打开cmd进入Microsoft Visual Studio 10.0\VC\bin目录输入命令vcvars32.bat,运行后可以设置好编译环境

3.2切换到\Microsoft Visual Studio10.0\VC\SRC,然后输入nmake指令(这里可能会有错误 未找到文件“..\system.mak”,解决方法在下面)

4.部署lib文件,上一步\Microsoft Visual Studio10.0\VC\lib中会生成lib文件,将\Microsoft Visual Studio10.0\VC\src中的detours.h复制到..\include目录下(如果include中没有该头文件)

整个部署完成了

detour的使用:

自己写的源码中添加如下内容就可以使用detour了:

#include <detours .h> //*IMPORTANT: Look at path if compiler error

#pragma comment(lib, "detoured.lib")

#pragma comment(lib, "detours.lib")

未找到文件“..\system.mak”解决方法:
将detours安装目录中的system.makMakefile复制到Microsoft Visual Studio 10.0\VC目录就解决了

Detour3.0 win7 64bit下的安装的更多相关文章

  1. win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置

    原文:win7 64bit下最新Apahe2.4.18+php7.0.2+MySQL5.7.10配置 一.说明 以前配置apache+php+mysql都是参考网上的,一般都没有什么问题.最近公司有个 ...

  2. mongodb-2.6.0 在win7 64下的安装和服务启动

    转自: http://blog.csdn.net/lingchen214/article/details/24537629 1   自定义安装到C:\mongodb目录下. 2  手动在C:\mong ...

  3. PGPDesktop在win7环境下的安装和使用

    PGPDesktop在win7环境下的安装和使用 PGP的简介 PGP(Pretty Good Privacy),是一个基于RSA公钥加密体系的邮件加密软件,它提供了非对称加密和数字签名,是目前非常流 ...

  4. MongoDB4.0在windows10下的安装与服务配置

    本地安装及网页测试 在官网下载最新的安装文件 下载地址 : https://www.mongodb.com/download-center#community 可以在MongoDB官网选择Commun ...

  5. MySQL8.0在Windows下的安装和使用

    前言 MySQL在Windows下有2种安装方式:1.图形化界面方式安装MySQL 2.noinstall方式安装MySQL.在这里,本文只介绍第二种方式:以noinstall方式安装MySQL,以及 ...

  6. Win7 64bit下值得推荐的免费看图软件

    自从更换到Win7 64bit后, 用了十多年的AcdSee3.x不能再正常工作了. 找到了两个替代品: Faststone Image Viewer 和 XnView Faststone Image ...

  7. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  8. Win7 64bit下32bit的 ODBC 数据源问题

    win764位有数据源,但是如果我们在win7 64bit中使用32位的数据源的时候,我们就需要对其进行配置,很有趣的是,64为的数据源我们可以在控制面板——系统与安全——管理工具——数据源,进入可对 ...

  9. webpack4.0在Mac下的安装配置及踩到的坑

    一.什么是webpack是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.它做的事情是,分析你的项目结构,找到JavaScript模块以 ...

随机推荐

  1. Ubungu 18.04安装MySQL 5.7.24

    Ubuntu 18.04,mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64), USERNAME@USERNAME-VirtualBox:~$ sud ...

  2. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)

    Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...

  3. GO-time.after 用法

    初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下: 首先是time包里的定义 // After waits for the dur ...

  4. 激活函数--(Sigmoid,tanh,Relu,maxout)

    Question? 激活函数是什么? 激活函数有什么用? 激活函数怎么用? 激活函数有哪几种?各自特点及其使用场景? 1.激活函数 1.1激活函数是什么? 激活函数的主要作用是提供网络的非线性建模能力 ...

  5. WebService:CXF-SPRING 读书笔记

    WEBSERVICE是给第三方提供一个接口,可以方便的与不同平台的系统进行通信,当然咯,这个只是我们通常运用到的最主要的作用,还有其他作用,见BAIDU知道.一个WEBSERVICE简单实例分为以下几 ...

  6. Python内置数据结构--列表

    本节内容: 列表 元组 字符串 集合 字典 本节先介绍列表. 一.列表 一种容器类型.列表可以包含任何种类的对象,比如说数字.子串.嵌套其他列表.嵌套元组. 任意对象的有序集合,通过索引访问其中的元素 ...

  7. 迪米特法则(Law of Demeter, LoD)

    一个软件实体应当尽可能少地与其他实体发生相互作用 未完待续

  8. [转] 学会fetch的用法

    fetch是web提供的一个可以获取异步资源的api,目前还没有被所有浏览器支持,它提供的api返回的是Promise对象,所以你在了解这个api前首先得了解Promise的用法.参考阮老师的文章 那 ...

  9. thinkphp实现附件上传

    先需要制定图片上传的目录 然后用uploadOne方法保存 有的时候需要缩略图,比如文章的封面图片 $config=array( 'rootPath' => './Application/Pub ...

  10. Codeforces 442C Artem and Array (看题解)

    Artem and Array 经过分析我们能发现, 如果对于一个a[ i ] <= a[ i + 1 ] && a[ i ] <= a[ i - 1 ]可以直接删掉. 最 ...