Detours HOOK 库 Hook 过滤LoadLibraryExW 一丶简介 1.1 Detours库简介 Detours是微软提供的HOOK库.为我们Hook提供了方便.再也不用手撸 HOOK了 二丶使用Detours的步骤 2.1下载Detours.以及使用 说到使用,我们必须要下载Detours.当然我会上传.你可以去CSDN下载.或者自己下载源码编译.我下了好多.也编译好了.会上传.直接下载即可 首先使用Detours. Detours有两个头文件.我们都包含即可. #include "detours.h" #include "detver.h" 还需要一个lib库.我们放在VS工程中即可. #pragma comment(lib,"Detours.lib") 2.2使用Detours步骤很简单.都是固定API 如下: void DetoursHook() { DetourRestoreAfterWith
无论您是刚接触Detours的新手,还是希望深入了解其高级功能的老手,这篇文章都将提供有价值的参考。 通常情况下Detours库只会用于函数挂钩,但实际上Detours库不仅可以拦截函数,还提供了对动态链接库的注入功能。本章将详细讲解每个注入函数的使用方法、参数和实际应用。 #include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib, "detours.lib")int main #include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib, "detours.lib")// 自定义的进程创建例程 #include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib, "detours.lib")int main
Detours 是微软开发的一个强大的 Windows API 钩子库,用于监视和拦截函数调用。它广泛应用于微软产品团队和众多独立软件开发中,旨在无需修改原始代码的情况下实现函数拦截和修改。 Detours 在调试、监控、日志记录和性能分析等方面表现出色,已成为开发者的重要工具。本章将指导读者运用 Detours 库实现模块查询与枚举功能,帮助读者熟悉该库的使用技巧。 使用示例#include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib,"detours.lib")typedef 使用示例#include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib,"detours.lib")int 使用示例#include <windows.h>#include <iostream>#include "detours.h"#pragma comment(lib,"detours.lib")int
detours的下载与编译 02 - detours简介 Detours 是Microsoft开发一个库 它有下面这两方面的功能: 1 拦截x86机器上的任意的win32 API函数。 - detours的下载与编译 下载地址:http://research.microsoft.com/en-us/projects/detours/ 下载得到的是一个名为Detours的压缩包,将其解压出来 ,比如我是解压到了C盘根目录下的detours文件夹。 03 detours的使用实例 好了,万事俱备了,小伙伴们此时是不是按耐不住内心的激动想要搞点事情了呢? 别急。咱们先来看看detours中的几个关键函数吧: 1.对detours进行初始化. 更新进行detours的线程.
Detours的安装: 下载部分: 1.直接在百度搜”detour”,进对应的网站下载。 2.在上面的命令工具找到对应下载文件的路径,并在终端转到”Detours”文件夹下的”src”文件。如:D:\VS2013\VC\Detours\src。再一次输入”nmake”。 /Detours/include/detours.h” #pragma comment (lib,”.. /Detours/lib.X86/detours.lib”) 本人已将编译好的Detour文件夹放到程序根目录,否则需要给出绝对路径。(尽可能复制) 2.要对挂钩函数进行保存。 /Detours/include/detours.h" #pragma comment (lib,"..
库的使用(32位) 前面的内容我们是自己实现的Hook代码,在生产环境中一般都会使用Hook库,常用的Hook库有免费开源的MinHook和商业的Detours Hook 这里我就默认使用Detours Detours 库在4.x开始就已经基于MIT许可开源了,GitHub地址: https://github.com/Microsoft/Detours 首先在Git上下载,下载好以后直接解压到指定磁盘, #include <Windows.h> #include <detours.h> #pragma comment(lib,"detours.lib") static int(WINAPI *OldMessageBoxA #include <Windows.h> #include <detours.h> #include <stdio.h> #pragma comment(lib,"detours.lib") static #include <Windows.h> #include <detours.h> #include <stdio.h> #pragma comment(lib,"detours.lib") static
这里我们需要用到两个工具Detours-master(微软的hook库)和imgui-master,主要讲D3D9HOOK。我们先来创建一个DLL项目。 到路径里nmake进行编译X64:找到Visual Studio2017,打开“适用于VS 2017的 x64 本机工具命令提示”,然后cd到路径里nmake进行编译7.打开项目文件夹8.新建一个目录Detours ,将lib.x86、lib.x64和include复制过来(将lib.去掉方便后续识别)9.新建筛选器,命名Detours10.在Detours中添加现有项,选定两个头文件detours.h和detver.h11 .配置lib库11.1选择属性11.2 编辑包含目录,宏-包含目录-$(ProjectDir)Detours\include,应用11.3编辑附加库目录,宏-附加库目录-$(ProjectDir)Detours \Lib\$(platformTarget),应用11.4 编辑附加依赖项,添加detours.lib,应用11.5 不使用预编译头12.配置imgui12.1在D3D9HOOK目录下,新建imgui文件夹
要实现下面程序,首先我们需要三个文件 detours.h ,detours.lib ,detver.h(可以去网上下载) 1. 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<windows.h> 5 #include"detours.h " 6 //#include"detver.h" 7 #pragma comment(lib , "detours.lib") 8 9 // 存储函数指针地址 10 //指针分为:一般指针,多级指针
我的Hook方案使用的是微软的Detours。 (转载请指明出处) Detours的Hook和反Hook的写入如下: DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread MapFuncPointerIter; typedef MapFuncPointer::const_iterator MapFuncPointerCIter; 寻找原始函数的入口地址可以通过Detours 使用Detours进行Hook特别要注意这点,否则会出现你也想不到的问题。
首先介绍下Detours,该库是c++库,该库可以方便hook windows的api。 然后再介绍下Api Monitor,是一个api监控工具。 最后介绍下mstsc,远程桌面用的。 这里使用Api Monitor配合Detours进行相关api的数据hook。
6.1 Detours库 该库支持 32 位和 64 位进程,这里拿MessageBox函数来进行讲解。在做挂钩的时候必须要确定原始函数的地址和钩子函数地址的目标指针。 6.1.1 Detours库安装 [源码下载地址]:https://github.com/Microsoft/Detours。这里以64位进行实验。 Native Tools Command Prompt for VS 2019 和 x86 Native Tools Command Prompt for VS 2019,这两个可以分别用来编译64位和32位的Detours 编译后会生成一下三个目录 •bin.X64•include•lib.X64 vs建立工程添加 •detours.h•detours.lib 打开程序包管理器控制台执行 Install-Package Detours #include <Windows.h>#include <detours.h>#pragma comment (lib,"detours.lib")static int(WINAPI* TrueMessageBox
在之前的文章,hook rdp对外连接的账号密码 中有提到利用Detours进行hook得到rdp的账号密码,今天正好看到绕过AMSI的文章,那我们今天继续利用这个库来达到绕过AMSI的目的。 3、hook AMSI 在之前的文章,hook rdp对外连接的账号密码 已经提到了一些Detours的用法,这里再说下其简单的用法。 详细代码如下 #include <Windows.h> #include <detours.h> #include <amsi.h> #include <iostream> #pragma comment
指令覆盖目标函数的开始,这个跳转将我们发送到我们作为攻击者控制的函数,因此得名trampoline hook #include <iostream> #include <Windows.h> #include <detours.h hWnd, LPCSTR lpText, LPCTSTR lpCaption, UINT uType) { return OriginalMessageBox(NULL, L"We've used detours DetourTransactionCommit(); std::cout << "[+] Message Box Unhooked" << std::endl; } 上面的代码片段显示了如何使用detours 我们要做的主要更改是创建一个DllMain(注意:创建一个新的 dll项目要容易得多,因此VS会为您设置所有内容,还可以通过NuGet添加 #include <Windows.h> #include <detours.h 看到传入的参数也很有趣,我们使用与之前相同的绕过方式,只是传入一个安全字符串,因此AMSI不会标记真正的字符串 如果我们使用调试器,我们实际上可以在反汇编AmsiScanBuffer的前几条指令时查看detours
我们将使用 Microsoft Detours 来执行挂钩操作,在处理 LSASS 等关键进程时最好不要使用手动挂钩,因为崩溃将不可避免地导致重新启动。 我不会详细介绍如何编译和设置 Detours,它非常简单,我将在 HppDLL 的存储库中包含一个已编译的 Detours 库。 <windows.h> #include <SubAuth.h> #include <iostream> #include <fstream> #include <string> #include "detours.h 在第 24 到 27 行,Detours 发挥了它的魔力,并MsvpPasswordValidate用我们的流氓HookMSVPPValidate函数代替。 ; return true; } } 这个功能也依赖于 Detours 魔法。
RdpThief使用detours库开发,通过挂钩以下几个API从RDP客户端提取明文凭据,可以使用API Monitor工具监控mstsc.exe进程在登录过程中调用了哪些API? https://github.com/microsoft/Detours http://www.rohitab.com/apimonitor CredReadW --> ServerIP SspiPrepareForCredRead https://github.com/IlanKalendarov/PyHook RDPCredentialStealer RDPCredentialStealer使用C++中的API Hooking和Detours
2012年,我写了一篇介绍Windows系统下Ring3层API的hook方案——《一种注册表沙箱的思路、实现——Hook Nt函数》,其在底层使用了微软的Detours库。 我最开始的想法是找一个Linux下的Detours库,于是找到了subhook。其原理是:修改被Hook函数起始地址处的汇编代码,让执行流程跳到我们定义的函数中。
我使用detours库Hook了这个函数 #include "AutoDump.h" #include <windows.h> #include ".. /detours/detours.h" #include "CreateDump.h" LONG WINAPI NewUnhandledExceptionFilter( struct _EXCEPTION_POINTERS
Release blog post[3] v2.1.0 Hunter X Hunter 全职猎人 "You should enjoy the little detours to the fullest.
API 钩子:对 API 插入额外逻辑 API 钩子大体上可分为两种类型: 改写目标函数开头几个字节 改写导入地址表(Import Address Table,IAT) 2、用 Detours 实现一个简单的 API 钩子 本小节利用微软研究院发布的 API 钩子库 Detours :http://research.microsoft.com/en-us/projects/detours/ , LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); // dllmain.cpp #include "stdafx.h" #include "detours.h
} int main(){ test(); return 0; } 可以参考 subhook: https://github.com/Zeex/subhook Microsoft Detours : https://github.com/microsoft/detours MinHook: https://github.com/TsudaKageyu/minhook PolyHook: https