Detours 劫持
在使用 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 劫持相关推荐
- 使用detours实现劫持
第一步:下载detours3.0,安装detours 第二步:构建库文件,nmake编译 第三步:包含库文件和头文件 #include "detours.h" //载入头文件 #p ...
- C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)
要实现下面程序,首先我们需要三个文件 detours.h ,detours.lib ,detver.h(可以去网上下载) 1. 首先让我们看看,一个最简单的C程序,如何劫持system函数. 1 #i ...
- c语言编写劫持dll,c语言-----劫持自己02
在上一节 c语言-----劫持原理01 已经叙述了劫持原理,下边正式进入劫持实战 1. 需要实现的功能 在c语言中 system("notepad") 可以打开一个记事本 syst ...
- C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)
目录 劫持 detours 实现劫持 步骤: 1. 安装Detours 2. 编译Detours工程 3. 把静态库和头文件引入工程 4. 函数指针与函数的定义 5.拦截 劫持QQ 实现劫持syste ...
- 二进制分析工具自动发现DLL劫持漏洞
aDLL简介 aDLL是一款功能强大的代码分析工具,可以帮助广大研究人员以自动化的方式识别并发现DLL劫持漏洞.该工具可以分析加载至内存中的源码镜像,并在加载过程中搜索DLL,并且利用了微软Detou ...
- 分析DLL搜索顺序劫持的原理
Context的智能和响应团队已经看到DLL搜索命令被滥用,作为在真实环境中进行网络入侵的一种手段.滥用DLL搜索顺序并利用这种机制来加载一个流氓DLL而不是合法的被称为DLL预加载,或者在MITRE ...
- 【C/C++】劫持技术
劫持 劫持的原理就是把目标函数的指针的指向修改为自定义函数的地址. 函数是放在内存中的代码区,所以劫持与代码区密切相关. 实现劫持需要使用detours. detours detours是微软亚洲研究 ...
- 黑客技术之移花接木(劫持)
1.这里所说的移花接木分三个级别:@1对自己写的函数使用:@2对别的程序的函数使用:@3对操作系统程序使用. 简单地说就是让改变程序的走向,本来调用的函数不调用了,调用你写的函数,用你的花去接别的程序 ...
- 2345浏览器网址_2345网址导航回应“浏览器主页劫持”丨开发者日报
1.2345网址导航回应"浏览器主页劫持" "浏览器主页被2345劫持怎么解决?""如何解决浏览器被2345主页劫持的问题?"--在网民吐槽 ...
- 首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持
首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇 ...
最新文章
- Docker在公有云的应用处理能力
- [转]Python 命令行参数和getopt模块详解
- python爬虫教程pdf-《Python爬虫开发与项目实战》pdf完整版
- zabbix proxy mysql_zabbix proxy 配置
- 为什么实施的项目会失败??
- 计算机学院学生会宣传稿,计算机与信息工程学院学生会
- 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!
- 老男孩python第一天笔记
- Web---HTTP请求、重定向、转发和数据压缩
- 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
- OTSU算法(大津法—最大类间方差法)原理及实现
- uchome 2.0 存在持久XSS漏洞
- 百度指数 如何批量获取?
- matlab中正弦信号的功率计算,范数norm
- OPC UA客户端工具Softing OPC Client使用_推荐使用
- linux下配置网络环境
- 低端N卡完美硬解1080p的WMV3
- 图片公式提取至文档word
- vue前端上传文件给后端的两种方式
- 跳跃游戏 Jump Game 分析与整理
热门文章
- 清华紫光输入法linux,清华紫光拼音输入法
- 卡巴斯基安全部队 2012 (KIS 2018) 激活key (9月5日更新)=最新卡巴斯基永久激活码
- xposed框架安全模式_Android 系统上的 Xposed 框架中都有哪些值得推荐的模块?
- 用Python中的VTK库导入并显示Assembly的STL文件
- RuntimeError: Exporting the operator affine_grid_generator to ONNX opset version 9 is not supported.
- a4纸和ipad对比_我告诉你10.2寸ipad和9.7寸对比
- 2021Web前端人事面试题总结精选
- STM32单片机课程自学知识点整理 - 指南版
- 什么是EJB?不再神秘!
- 一文了解常用效率记笔记软件(超过20款含有图片和双向链笔记)