分类: C++2012-04-12 22:52 877人阅读 评论(4) 收藏 举报

转载注明出处

http://blog.csdn.net/xugangjava/article/details/7455851

1.首先下载Detour3.0 。

2.新建一个win32的 dll链接库

将 Detour3.0的源代码 Copy到工程目录下,就是下面这个样子

最后在dllmian里面编写 我们的钩子,

  1. // dllmain.cpp : 定义 DLL 应用程序的入口点。
  2. #include "stdafx.h"
  3. #include "detours.h"
  4. PVOID g_pOldMessageBoxA=NULL;
  5. typedef int (WINAPI *PfuncMessageBoxA)(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
  6. int WINAPI ZwNewMessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType)
  7. {
  8. return ((PfuncMessageBoxA)g_pOldMessageBoxA)(hWnd, "Hook This!","My hook",uType);
  9. }
  10. //安装Hook
  11. BOOL APIENTRY SetHook()
  12. {
  13. //大概是 开始事务吧
  14. DetourTransactionBegin();
  15. //更新线程信息
  16. DetourUpdateThread(GetCurrentThread());
  17. //查询函数 地址 将MessageBoxA 地址保存在这个 指针里面
  18. g_pOldMessageBoxA=DetourFindFunction("User32.dll","MessageBoxA");
  19. //将我们的拦截函数 附加到 MessageBoxA 地址上
  20. DetourAttach(&g_pOldMessageBoxA,ZwNewMessageBoxA);
  21. //完成hook
  22. LONG ret=DetourTransactionCommit();
  23. return ret==NO_ERROR;
  24. }
  25. //卸载Hook
  26. BOOL APIENTRY DropHook()
  27. {
  28. DetourTransactionBegin();
  29. DetourUpdateThread(GetCurrentThread());
  30. DetourDetach(&g_pOldMessageBoxA, ZwNewMessageBoxA);
  31. LONG ret=DetourTransactionCommit();
  32. return ret==NO_ERROR;
  33. }
  34. static HMODULE s_hDll;
  35. HMODULE WINAPI Detoured()
  36. {
  37. return s_hDll;
  38. }
  39. BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved )
  40. {
  41. switch (ul_reason_for_call)
  42. {
  43. case DLL_PROCESS_ATTACH:
  44. s_hDll = hModule;
  45. DisableThreadLibraryCalls(hModule);
  46. SetHook();
  47. break;
  48. case DLL_THREAD_ATTACH:
  49. break;
  50. case DLL_THREAD_DETACH:
  51. break;
  52. case DLL_PROCESS_DETACH:
  53. DropHook();//UNHOOK
  54. break;
  55. }
  56. return TRUE;
  57. }

Ok 编译 成功 我们来试一下  写个 LoadLibrary 来加载这个DLL 运行DllMain

我们的钩子就加载了,

懒得编程序试了进入命令行 cmd 进入到 Hook.dll所在的目录

python 来测试一下 在交互式命令行中输入

OK  输入最后最后一句回车,效果如下,MessageBox的内容已经被修改了

附源代码 http://download.csdn.net/detail/xugangjava/4221929

查看评论
2楼 mysalter 2012-07-03 17:14发表 [回复]
谢高手~在vs2008下好多问题都能通过了,但我在编译simple的时候还是出了点问题,不知道大侠能否知道怎么回事,我用的系统是xp,是不是这个xp系统已经。。。被抛弃了。。。
以下是在vs的控制台下的错误信息,还请大侠指正
rc /nologo /DDETOURS_BITS=32 /foobj.X86\simple.res /i..\..\include simple.rc
fatal error RC1106: invalid option: -ologo
Re: xugangjava 2012-07-03 21:05发表 [回复]
回复mysalter:http://download.csdn.net/detail/xugangjava/4221929 这里有源代码,稍微改一下可以Hook任何API,我刚才在vs2008(安装了vs2008 sp1,操作系统windows2008)下编译了一遍没有问题。你那个错误我没遇到过,应该不是xp系统的原因,有可能是vs2008没有安装配置好引起的,google了一下
http://connect.microsoft.com/VisualStudio/feedback/details/499476/c-project-resource-compiler-fails-with-rc-fatal-error-rc1106-invalid-option-ologo 祝你成功
1楼 mysalter 2012-07-02 16:24发表 [回复] [引用] [举报]
您好,我最近在学习这个库,有个问题请教一下,我用vc6.0编译老是出错,请问你的编译运行环境是什么,vs2005吗,用不用另外安装Platform SDK,如果安装sdk,哪个版本够用?还望大侠不吝赐教,现在这里谢谢了
Re: xugangjava 2012-07-03 08:32发表 [回复] [引用] [举报]
回复mysalter:你好,开发环境是vs2008,不需要别的sdk,Detour的源码已经被copy到工程里了。

10分钟API Hook MessageBox的更多相关文章

  1. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  2. Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术

    catalogue 1. 引言2. 使用注册表注入DLL3. 使用Windows挂钩来注入DLL4. 使用远程线程来注入DLL5. 使用木马DLL来注入DLL6. 把DLL作为调试器来注入7. 使用c ...

  3. API Hook基本原理和实现

    API Hook基本原理和实现 2009-03-14 20:09 windows系统下的编程,消息message的传递是贯穿其始终的.这个消息我们可以简单理解为一个有特定意义的整数,正如我们看过的老故 ...

  4. API HOOK介绍 【转】

    什么是“跨进程 API Hook”? 众所周知Windows应用程序的各种系统功能是通过调用API函数来实现.API Hook就是给系统的API附加上一段小程序,它能监视甚至控制应用程序对API函数的 ...

  5. Apache Shiro系列三,概述 —— 10分钟入门

     一.介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.概述 关于Shiro的废话就不多说了 ...

  6. 程序破解之 API HOOK技术 z

    API HOOK,就是截获API调用的技术,在程序对一个API调用之前先执行你的函数,然后根据你的需要可以执行缺省的API调用或者进行其他处理,假设如果想截获一个进程对网络的访问,一般是几个socke ...

  7. API HOOK

    API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...

  8. API HOOK技术

    API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等. API HOOK 技术并不是计算机病毒专有技 ...

  9. API Hook完全手册

    文章来源: http://blog.csdn.net/atfield 原文作者: ATField 整理日期: 2008-07-16 发表评论 字体大小: 小 中 大   注:本文是根据我两年前写的一个 ...

随机推荐

  1. Entity Framework DBFirst尝试

    前言 “Database First”模式我们称之为“数据库优先”,前提是你的应用已经有相应的数据库,你可以使用EF设计工具根据数据库生成数据数据类,你可以使用Visual Studio模型设计器修改 ...

  2. HDOJ 2389 Rain on your Parade

     HK.... Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K ...

  3. Java笔记--泛型总结与详解

    泛型简介: 在泛型没有出来之前,编写存储对象的数据结构是很不方便的.如果要针对每类型的对象写一个数据结构,     则当需要将其应用到其他对象上时,还需要重写这个数据结构.如果使用了Object类型, ...

  4. [Effective JavaScript 笔记]第43条:使用Object的直接实例构造轻量级的字典

    js对象的核心是一个字符串属性名与属性值的映射表.使用对象实现字典易如反掌,字典是可变长的字符串与值的映射集合. for...in js提供了枚举一个对象属性名的利器--for...in循环. var ...

  5. vimcommandfilepatchcmdfold VIM技巧之分隔窗口 一级精华

    VIM技巧之分隔窗口 分类: 技术2010-07-08 09:57 754人阅读 评论(1) 收藏 举报   同时显示两个不同的文件, 或者同时查看同一个文件的两个不同位置, 或者是同步显示两个文件的 ...

  6. Correlation Filter in Visual Tracking

    涉及两篇论文:Visual Object Tracking using Adaptive Correlation Filters 和Fast Visual Tracking via Dense Spa ...

  7. Clustering by fast search and find of density peaks

    参考:http://www.52ml.net/16296.html 这个算法的优点就在于,它首先一步就能找到聚类中心,然后划分类别.而其他算法需要反复迭代才能找到中心聚类. 就是不知道代码该怎么写.. ...

  8. HTML快速入门4

    七.表单 1. 概述 建立交互式的站点,需要使用 HTML 表单,它可以让用户提供信息,并对此作出处理.可以建立类似 复选框.单选按钮及文本框的控件. 掌握表单的使用对 Active Server P ...

  9. 记录:js删除数组中某一项或几项的几种方法

    1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...

  10. 夏令时 DST (Daylight Saving Time) java中的夏令时【转】

    1916年,德国首先实行夏令时,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏令时 1986年至1991年,中华人民共和国在全国范围实行了六年夏令时 サマータイム 夏時間(日本现在没有实行夏 ...