图解Detour安装及简单使用实例(Win7+VC6)
相关下载:
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)相关推荐
- Detour安装及简单使用实例
Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours 在http://research.microsoft.com/ ...
- sqlmap安装及简单使用实例
1.sqlmap安装前需要搭建python环境,下载python最新版本下载地址:https://www.python.org/downloads/ 下载完成Windows+r 打开cmd中输入pyt ...
- Redis:安装、配置、操作和简单代码实例(C语言Client端)[转]
我转的地址: http://blog.csdn.net/hj19870806/article/details/8724907 听说游戏的用的比较多,所以了解下. --以下为转载内容 Redis是一个开 ...
- Win7安装很简单-孙宇彤-专题视频课程
Win7安装很简单-1908人已学习 课程介绍 本课程是LTE学习大使孙宇彤老师针对大家的需求专门开发的课程,是<Win10安装很简单>的姐妹课程. 本课程详细介绍了win ...
- oracle 安装找不到服务,win7 下安装oracle 11g出现错误: 启动服务出现错误 找不到服务OracleMTSRecoveryService...
这种错误是在多次安装oracle都没有成功的情况下发生的. 正确安装oracle,是有前提条件的 1,安装最新的jdk,不是jre!!(并配好环境变量,在cmd中测试 java -version与ja ...
- 1.学生版阿里云简单配置和win7、win10专业版及win10家庭版的远程桌面的配置详解
-------------------------------------- 这里分两个模块讲,这是第一模块,关于整体的安装及运行服务器;第二模块说关于虚拟服务器上的JDK和Tomcat的的安装及如何 ...
- 内核同步对性能的影响及perf的安装和简单的使用
更多文章目录:点击这里 GitHub地址:https://github.com/ljrkernel 内核同步对性能的影响及perf的安装和简单的使用 看了一篇关于多线程应用程序性能分析的外文,结合之前 ...
- 《Abaqus GUI程序开发指南(Python语言)》——第一章 概述1.1 简单插件实例——创建带孔板有限元模型...
本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第1章,第1.1节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...
- linux 安装u盘win7系统安装教程,centos u盘安装 boot制作u盘win7盘工具
点击360安全浏览器顶部菜单,可以看到一个剪刀形状的功能扩展的三角形的下拉菜单,在下拉菜单中显示有截屏的快捷按钮,还有隐藏浏览器窗口截屏和将网页保存成图片,还有打开WINDOWS画图板的功能选项 5. ...
最新文章
- 第五篇:Mysql的数据备份与恢复---------
- CTFshow 命令执行 web69
- Linux下Apache自动监测重启脚本
- iOS 字典与字符串之间的互转
- HH SaaS电商系统移动端商城,买家选择商品规格的交互设计
- for循环简介及实例(输出九九乘法表)
- 103. 二叉树的锯齿形层次遍历
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装依赖包_03)
- 在5个数中找最大的数,并把他放入MAX单元
- n卡eth挖矿设置_ETH2.0要来了,要不要布局显卡挖矿?
- Java学习之向上、下转型
- [AngularJS]--基本用法
- 查找算法之二 二分查找(C++版本)
- pycharm搜索不到安装包
- AtCoder - ABC 168 - E(数学推理)
- 杭州电子科技大学研究生计算机科学与技术,杭州电子科技大学-硕士研究生-计算机学院 2018级计算机科学与技术(中日合作)培养方案...
- 【区块链108将】BKFUND许超逸:Token为基金管理行业带来新的空白市场机会
- React入门学习(一)
- 51单片机:LED流水灯(仿真+代码)
- 设计模式六大基本原则
热门文章
- currentThread的一个复杂案例
- Java中static的作用
- Pywinauto 应用后端类型选择错误:AttributeError: ‘NoneType‘ object has no attribute ‘backend‘. 原因及解决办法
- JavaScript 技术篇-js只获取本节点text文本,不包含子节点
- BUU CODE REVIEW 1
- 【2016 Asia China-Final D题】
- union--求集合的并集
- opencv随机数的产生
- hikaripool连接保持_springboot2的hikari数据库连接池默认配置
- 无重复字符的最长子串【哈希算法】-O(n)