最近在做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.mak和Makefile复制到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. Servlet注释与部署描述符

    值得注意的是,部署描述符优先于注释.换句话说,部署描述符覆盖通过注释机制所规定的配置信息.Web 部署描述符的 3.0 版本在 web-app 元素上包含一种名为 metadata-complete ...

  2. LeetCode(60): 第k个排列

    Medium! 题目描述: 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" ...

  3. django----Form扩展

    用第二种方式需要加上下面的这个: 三.判断用户民是不存在,存在就不添加了 from django.core.exceptions import ValidationError initial  修改时 ...

  4. hdu3486 ST表区间最值+二分

    还是挺简单的,但是区间处理的时候要注意一下 #include<iostream> #include<cstring> #include<cstdio> #inclu ...

  5. Paget Object 设计模式编写selenium测试用例

    示例常规代码 baidu.py # _*_ coding:utf-8 _*_ import csv,unittest,time #导入csv模块 from time import sleep from ...

  6. 多版本并发控制(MVCC)

    可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低. 虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行. MVCC的实现是通过保存数据在某个时间 ...

  7. python 防死锁机制

    https://www.cnblogs.com/wongbingming/p/9035575.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在编写多线程程序时,可能无意中就会写 ...

  8. Jetty部署

    http://www.orchome.com/127 https://blog.csdn.net/zhanngle/article/details/77591526

  9. 【BZOJ4504】K个串

    题解: 这题跟超级noi钢琴思路大致相同 不同之处在于如何寻找最大值 这道题里出现了每个数都只能被算一次这个限制 我们考虑一下如果还要使用主席树和前缀和该怎么做 我们每次操作一个数时,可以让这个数上一 ...

  10. [APIO2011]方格染色

    题解: 挺不错的一道题目 首先4个里面只有1个1或者3个1 那么有一个特性就是4个数xor为1 为什么要用xor呢? 在于xor能把相同的数消去 然后用一般的套路 看看确定哪些值能确定全部 yy一下就 ...