在使用 Detours 劫持之前必须得拥有这两个东西:detours.h 和 detours.lib

为了这两个东西我真的是弄了大半天,本着自己动手丰衣足食的思想:

我去 GitHub 克隆了一份来自己编译,对着网上的教程弄,在编译的时候就是各种 bug。

试了一次又一次,算了还是找别人编译好了的用吧!目前最新版本是 Detours 4.01 版。

拿到编译好的头文件和库后,我放到 VC6.0 相应的文件中去,结果在编程时发现头文件出错!

这时我就懵逼了,最后发现是因为 VC6.0版本太低导致的。因此最后便放到 VS2017 中去了。

说到这里,如果你不想自己动手尝试的话,这里给你编译好的 Detours 库。请点击下载

关于 Detours 里的函数发现网上并没有比较详细的介绍:这里就借鉴一下别人的博客吧!

我觉的这两个博客还是挺不错的:心梦无痕吹成狗的攻城狮

这里我们同样来拦截两个函数:通常情况下代码是这样的:

#include "stdafx.h"
#include<detours.h>
#include<Windows.h>
#pragma comment(lib,"detours.lib")void HookOn();
void HookOff();static int (WINAPI *OldMesssageBoxA)
(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType
) = MessageBoxA;static int (WINAPI *OldMesssageBoxW)
(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType
) = MessageBoxW;// 注意了,自定义函数得和被 HOOK 的函数一样,否则会发生异常。
int WINAPI MyFunction0
(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType
);int WINAPI MyFunction1
(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType
);BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:HookOn();break;case DLL_THREAD_ATTACH:break;case DLL_THREAD_DETACH:break;case DLL_PROCESS_DETACH:HookOff();break;}return TRUE;
}void HookOn()
{//开始事务DetourTransactionBegin();//更新线程信息  DetourUpdateThread(GetCurrentThread());//将拦截的函数附加到原函数的地址上,这里可以拦截多个函数。DetourAttach(&(PVOID&)OldMesssageBoxA, MyFunction0);DetourAttach(&(PVOID&)OldMesssageBoxW, MyFunction1);//结束事务DetourTransactionCommit();
}void HookOff()
{//开始事务DetourTransactionBegin();//更新线程信息 DetourUpdateThread(GetCurrentThread());//将拦截的函数从原函数的地址上解除,这里可以解除多个函数。DetourDetach(&(PVOID&)OldMesssageBoxA, MyFunction0);DetourDetach(&(PVOID&)OldMesssageBoxW, MyFunction1);//结束事务DetourTransactionCommit();
}// 调用被 HOOK 的函数可以用被 HOOK 函数的指针,不能用原函数。
int WINAPI MyFunction0(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType)
{return OldMesssageBoxA(NULL, "Hooking your MessageBoxA!", "Warming", MB_OKCANCEL);
}int WINAPI MyFunction1(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType)
{return OldMesssageBoxW(NULL, L"Hooking your MessageBoxW!", L"Warming", MB_OKCANCEL);
}

这段代码是在 VS2017 上生成的,我一般都是在虚拟机里运行的,所以需要进行一些设置:

调试 ---> Dll 属性 ---> C/C++ ---> 代码生成 ---> 运行库---多线程/MT,这样设置完后就可以了。

我们将生成的 dll 文件注入到记事本后,会看到这样:

链接:https://pan.baidu.com/s/1VMIO068JBYPl7v7inWfGvw
提取码:t7kf

Detours 劫持相关推荐

  1. 使用detours实现劫持

    第一步:下载detours3.0,安装detours 第二步:构建库文件,nmake编译 第三步:包含库文件和头文件 #include "detours.h" //载入头文件 #p ...

  2. C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)

    要实现下面程序,首先我们需要三个文件 detours.h ,detours.lib ,detver.h(可以去网上下载) 1. 首先让我们看看,一个最简单的C程序,如何劫持system函数. 1 #i ...

  3. c语言编写劫持dll,c语言-----劫持自己02

    在上一节 c语言-----劫持原理01 已经叙述了劫持原理,下边正式进入劫持实战 1. 需要实现的功能 在c语言中 system("notepad") 可以打开一个记事本 syst ...

  4. C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)

    目录 劫持 detours 实现劫持 步骤: 1. 安装Detours 2. 编译Detours工程 3. 把静态库和头文件引入工程 4. 函数指针与函数的定义 5.拦截 劫持QQ 实现劫持syste ...

  5. 二进制分析工具自动发现DLL劫持漏洞

    aDLL简介 aDLL是一款功能强大的代码分析工具,可以帮助广大研究人员以自动化的方式识别并发现DLL劫持漏洞.该工具可以分析加载至内存中的源码镜像,并在加载过程中搜索DLL,并且利用了微软Detou ...

  6. 分析DLL搜索顺序劫持的原理

    Context的智能和响应团队已经看到DLL搜索命令被滥用,作为在真实环境中进行网络入侵的一种手段.滥用DLL搜索顺序并利用这种机制来加载一个流氓DLL而不是合法的被称为DLL预加载,或者在MITRE ...

  7. 【C/C++】劫持技术

    劫持 劫持的原理就是把目标函数的指针的指向修改为自定义函数的地址. 函数是放在内存中的代码区,所以劫持与代码区密切相关. 实现劫持需要使用detours. detours detours是微软亚洲研究 ...

  8. 黑客技术之移花接木(劫持)

    1.这里所说的移花接木分三个级别:@1对自己写的函数使用:@2对别的程序的函数使用:@3对操作系统程序使用. 简单地说就是让改变程序的走向,本来调用的函数不调用了,调用你写的函数,用你的花去接别的程序 ...

  9. 2345浏览器网址_2345网址导航回应“浏览器主页劫持”丨开发者日报

    1.2345网址导航回应"浏览器主页劫持" "浏览器主页被2345劫持怎么解决?""如何解决浏览器被2345主页劫持的问题?"--在网民吐槽 ...

  10. 首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持

    首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇 ...

最新文章

  1. Docker在公有云的应用处理能力
  2. [转]Python 命令行参数和getopt模块详解
  3. python爬虫教程pdf-《Python爬虫开发与项目实战》pdf完整版
  4. zabbix proxy mysql_zabbix proxy 配置
  5. 为什么实施的项目会失败??
  6. 计算机学院学生会宣传稿,计算机与信息工程学院学生会
  7. 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
  8. 老男孩python第一天笔记
  9. Web---HTTP请求、重定向、转发和数据压缩
  10. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
  11. OTSU算法(大津法—最大类间方差法)原理及实现
  12. uchome 2.0 存在持久XSS漏洞
  13. 百度指数 如何批量获取?
  14. matlab中正弦信号的功率计算,范数norm
  15. OPC UA客户端工具Softing OPC Client使用_推荐使用
  16. linux下配置网络环境
  17. 低端N卡完美硬解1080p的WMV3
  18. 图片公式提取至文档word
  19. vue前端上传文件给后端的两种方式
  20. 跳跃游戏 Jump Game 分析与整理

热门文章

  1. 清华紫光输入法linux,清华紫光拼音输入法
  2. 卡巴斯基安全部队 2012 (KIS 2018) 激活key (9月5日更新)=最新卡巴斯基永久激活码
  3. xposed框架安全模式_Android 系统上的 Xposed 框架中都有哪些值得推荐的模块?
  4. 用Python中的VTK库导入并显示Assembly的STL文件
  5. RuntimeError: Exporting the operator affine_grid_generator to ONNX opset version 9 is not supported.
  6. a4纸和ipad对比_我告诉你10.2寸ipad和9.7寸对比
  7. 2021Web前端人事面试题总结精选
  8. STM32单片机课程自学知识点整理 - 指南版
  9. 什么是EJB?不再神秘!
  10. 一文了解常用效率记笔记软件(超过20款含有图片和双向链笔记)