Detou简单使用实例

原创 2013年12月03日 20:53:29

打开vs2008 -》新建 -》项目-》Win32项目(输入DetourHook) -》确定 -》下一步 -》Windows应用程序(其它默认)-》完成。

把下面代码完全拷贝到DetourHook.cpp中,DetourHook.cpp中原来代码完全删除。编译。通过。。有警告忽略处理。。。。。

#include "stdafx.h"
#include "DetourHook.h"
#include <detours.h>

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



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"输入参数已修改",L"[测试]",uType);
        return ret;
}

VOID Hook()
{
        DetourRestoreAfterWith();
        DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());

        //这里可以连续多次调用DetourAttach,表明HOOK多个函数
        DetourAttach(&(PVOID&)OLD_MessageBoxW,NEW_MessageBoxW);

        DetourTransactionCommit();
}

VOID UnHook()
{
        DetourTransactionBegin();
        DetourUpdateThread(GetCurrentThread());
        
        //这里可以连续多次调用DetourDetach,表明撤销多个函数HOOK
        DetourDetach(&(PVOID&)OLD_MessageBoxW,NEW_MessageBoxW);

        DetourTransactionCommit();

}
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
        MessageBoxW(0,L"正常消息框",L"测试",0);
        Hook();
        MessageBoxW(0,L"正常消息框",L"测试",0);
        UnHook();
        return 0;
        
}
参考:

http://blog.csdn.net/evi10r/article/details/6659354

相关文章推荐

简单实例-在Unity中使用MVC框架

  • 2017年07月20日 00:00
  • 14KB
  • 下载

windows下使用php自带的mail函数实现简单的邮件发送实例(QQ亲试成功)

问题: 初学php,打算实现一下找回密码功能。当然这涉及到不少的问题,我直接想到的是怎么发邮件的问题,这便是今天要解决的问题了。 查资料: 为解决这个问题,到网上查了很多资料,也看到网上有很多相关的资...

DWZ框架使用的实例简单介绍

  • 2016年06月15日 11:27
  • 262KB
  • 下载

PopupWindow 的简单使用实例

  • 2014年12月26日 14:50
  • 1.88MB
  • 下载

使用C++实现一套简单的状态机模型——实例

一般来说,“状态机”是一种表达状态转换变换逻辑的方法。曾经有人和我讨论过为什么不直接用ifelse,而要使用“状态机”去实现一些逻辑,认为使用“状态机”是一种炫技的表现。然而对于大型复杂逻辑的变化和跳...

一个简单的Sharedpreferences使用实例

  • 2014年11月08日 18:34
  • 2.02MB
  • 下载

scons的介绍、使用和简单实例

一、scons是什么   SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。功能上类似于make。   个人理解:一个单个文件的程序是不需要scons和make之类的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Detou简单使用实例
举报原因:
原因补充:

(最多只允许输入30个字)