相关下载:

http://pan.baidu.com/s/1o7OEMc6

detour6.rar是本文工程

DetoursExpress30是微软下载的detour安装文件

detoured是编译好的库

参考

http://www.cnblogs.com/weiqubo/archive/2011/06/01/2065534.html
http://blog.csdn.net/evi10r/article/details/6659354
http://blog.csdn.net/donglinshengan/article/details/8544464:

http://research.microsoft.com/en-us/projects/detours/

微软detour下载

Detours是微软开发的一个函数库,可用于捕获系统API。

1 安装

2 生成库

detour下载后是源码,需要自己生成库;

拷贝上图的src文件夹到下图路径;

进入VC的bin执行vcvars32.bat

再进入src,执行nmake

失败;参阅

http://blog.csdn.net/donglinshengan/article/details/8544464

将detours安装目录中的system.mak和Makefile复制到VC目录

又出错;

单独输入cl命令试试,出现下图错误;

下载mspdb60.dll,拷贝到系统目录;注册;出现下面错误;干点活真不容易;

不管了,因为是找不到cl命令,把nmake使用的命令抄下;

cl /W4 /WX /Zi /MTd /Gy /Gm- /Zl /Od /DDETOURS_BITS=32 /DWIN32_LEAN_AND_MEAN /D_WIN32_WINNT=0x403 /Gs /DDETOURS_X86=1 /DDETOURS_32BIT=1 /D_X86_ /DDETOURS_OPTION_BITS=64 /Fd.. \lib.X86\detours.pdb /Foobj.X86\detours.obj /c detours.cpp

进入bin目录直接运行看看;

还是不行;拷贝detour的src文件夹全部内容到bin,再执行上述命令;还是不行;

至此参照网上资料自己编译detour库失败;估计是我的VC版本太低;不过这难不倒咱;网上直接下载编译好的detour库就好了;

3 简单使用例子

参照网上一些例子;

例子中入口是

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)

所以新建如下工程,结果编译了不能链接;

新建如下的工程;

修改原例子代码如下;

// detour6.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "detour6.h"
#include <detours.h>#pragma comment(lib, "detours.lib")
#pragma comment(lib, "detoured.lib")#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// The one and only application objectCWinApp theApp;using namespace std;static int (WINAPI* OLD_MessageBoxW)(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType) = MessageBoxW;
int WINAPI NEW_MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType)
{//修改输入参数,调用原函数int ret = OLD_MessageBoxW(hWnd,L"输入参数已被我老人家HOOK修改",L"[Detour测试]",uType);return ret;
}VOID Hook()
{DetourRestoreAfterWith();DetourTransactionBegin();DetourUpdateThread(GetCurrentThread());//这里可以连续多次调用DetourAttach,表明HOOK多个函数DetourAttach(&(PVOID&)OLD_MessageBoxW,NEW_MessageBoxW);DetourTransactionCommit();
}VOID UnHook()
{DetourTransactionBegin();DetourUpdateThread(GetCurrentThread());//这里可以连续多次调用DetourDetach,表明撤销多个函数HOOKDetourDetach(&(PVOID&)OLD_MessageBoxW,NEW_MessageBoxW);DetourTransactionCommit();}int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{int nRetCode = 0;// initialize MFC and print and error on failureif (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){// TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initialization failed") << endl;nRetCode = 1;}else{// TODO: code your application's behavior here.MessageBoxW(0,L"正常消息框",L"测试",0);Hook();MessageBoxW(0,L"正常消息框",L"测试",0);UnHook();}return nRetCode;
}

成功,最终的运行效果如下;

图解Detour安装及简单使用实例(Win7+VC6)相关推荐

  1. Detour安装及简单使用实例

    Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours      在http://research.microsoft.com/ ...

  2. sqlmap安装及简单使用实例

    1.sqlmap安装前需要搭建python环境,下载python最新版本下载地址:https://www.python.org/downloads/ 下载完成Windows+r 打开cmd中输入pyt ...

  3. Redis:安装、配置、操作和简单代码实例(C语言Client端)[转]

    我转的地址: http://blog.csdn.net/hj19870806/article/details/8724907 听说游戏的用的比较多,所以了解下. --以下为转载内容 Redis是一个开 ...

  4. Win7安装很简单-孙宇彤-专题视频课程

    Win7安装很简单-1908人已学习 课程介绍         本课程是LTE学习大使孙宇彤老师针对大家的需求专门开发的课程,是<Win10安装很简单>的姐妹课程. 本课程详细介绍了win ...

  5. oracle 安装找不到服务,win7 下安装oracle 11g出现错误: 启动服务出现错误 找不到服务OracleMTSRecoveryService...

    这种错误是在多次安装oracle都没有成功的情况下发生的. 正确安装oracle,是有前提条件的 1,安装最新的jdk,不是jre!!(并配好环境变量,在cmd中测试 java -version与ja ...

  6. 1.学生版阿里云简单配置和win7、win10专业版及win10家庭版的远程桌面的配置详解

    -------------------------------------- 这里分两个模块讲,这是第一模块,关于整体的安装及运行服务器;第二模块说关于虚拟服务器上的JDK和Tomcat的的安装及如何 ...

  7. 内核同步对性能的影响及perf的安装和简单的使用

    更多文章目录:点击这里 GitHub地址:https://github.com/ljrkernel 内核同步对性能的影响及perf的安装和简单的使用 看了一篇关于多线程应用程序性能分析的外文,结合之前 ...

  8. 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  9. linux 安装u盘win7系统安装教程,centos u盘安装 boot制作u盘win7盘工具

    点击360安全浏览器顶部菜单,可以看到一个剪刀形状的功能扩展的三角形的下拉菜单,在下拉菜单中显示有截屏的快捷按钮,还有隐藏浏览器窗口截屏和将网页保存成图片,还有打开WINDOWS画图板的功能选项 5. ...

最新文章

  1. 第五篇:Mysql的数据备份与恢复---------
  2. CTFshow 命令执行 web69
  3. Linux下Apache自动监测重启脚本
  4. iOS 字典与字符串之间的互转
  5. HH SaaS电商系统移动端商城,买家选择商品规格的交互设计
  6. for循环简介及实例(输出九九乘法表)
  7. 103. 二叉树的锯齿形层次遍历
  8. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装依赖包_03)
  9. 在5个数中找最大的数,并把他放入MAX单元
  10. n卡eth挖矿设置_ETH2.0要来了,要不要布局显卡挖矿?
  11. Java学习之向上、下转型
  12. [AngularJS]--基本用法
  13. 查找算法之二 二分查找(C++版本)
  14. pycharm搜索不到安装包
  15. AtCoder - ABC 168 - E(数学推理)
  16. 杭州电子科技大学研究生计算机科学与技术,杭州电子科技大学-硕士研究生-计算机学院 2018级计算机科学与技术(中日合作)培养方案...
  17. 【区块链108将】BKFUND许超逸:Token为基金管理行业带来新的空白市场机会
  18. React入门学习(一)
  19. 51单片机:LED流水灯(仿真+代码)
  20. 设计模式六大基本原则

热门文章

  1. currentThread的一个复杂案例
  2. Java中static的作用
  3. Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
  4. JavaScript 技术篇-js只获取本节点text文本,不包含子节点
  5. BUU CODE REVIEW 1
  6. 【2016 Asia China-Final D题】
  7. union--求集合的并集
  8. opencv随机数的产生
  9. hikaripool连接保持_springboot2的hikari数据库连接池默认配置
  10. 无重复字符的最长子串【哈希算法】-O(n)