草庐IT

C++ - 绕过 WinSock Hook

我想做的是使用theDetourslibrary连接到应用程序WinSock2send()和recv()函数(数据包记录器)。虽然它确实适用于send()函数,但它不适用于recv()函数。这是我的相关代码:#include#include#include#include#include#include#include#pragmacomment(lib,"Ws2_32.lib")#pragmacomment(lib,"detours.lib")#pragmacomment(lib,"detoured.lib")#pragmacomment(lib,"Mswsock.lib")std:

C++ -- Detours (Win32 API Hijacking) -- 劫持类方法

很长一段时间我都没有遇到使用Detours劫持函数的问题...当我试图劫持类方法时(在我的例子中是IHTMLDocument2::writefrommshtml.dll)我遇到了无穷无尽的问题(主要是类型不匹配)。由于我没有在网上找到任何相关示例,我开始怀疑是否可以这样做。我的问题是:是否可以使用Detours劫持类方法?我可以举个例子吗?如果不是,是否可以使用另一个Hook库以更简单的方式劫持类方法?提前谢谢大家! 最佳答案 IHTMLDocument2::write不仅仅是一个类方法;这是一个COM方法。这意味着更多。例如,还有

c++ - "empty"函数的外部进程中的 Detours Hook 不起作用

我通过函数偏移量在外部进程中Hook函数。到目前为止,这对于我Hook的函数来说效果很好——但是我发现一个“debugLog(char...)”函数仍然存在于二进制文件中但不进行任何打印——它看起来像这样debugMessageprocnear;xoreax,eax;LogicalExclusiveORretn;ReturnNearfromProceduredebugMessageendp它是这样称呼的pushoffsetdebugString;"Thisisadebugmessage"...calldebugMessage;CallProcedure现在调试消息显然已被禁用,我想连接

封装Detours用于Python中x64函数hook

Detours代码仓库:https://github.com/microsoft/Detoursx64写一个任意地址hook要比x86麻烦的多,所以这里直接封装框架来用于x64的hook。Detours是微软发布的一个APIhook框架,同时支持x86和x64,看文档说也支持ARM和ARM64的Windows。编译文档Detours翻了下github,并没有发现什么编译文档,就只有README里面有这么一段话:大概意思是说打开visualstudio的命令行,然后切换到源码目录,执行nmake就能编译,测试除了一个小问题确实是可以编译成功。visualstudio的命令行在开始菜单里打开,上面

windows - Microsoft Detours 如何工作以及如何使用它来获取堆栈跟踪?

我是MicrosoftDetours的新手。我已经安装它来跟踪进程进行的系统调用。我运行以下从网上获得的命令syelogd.exe/qC:\Users\xxx\Desktop\log.txtwithdll.exe/d:traceapi.dllC:\ProgramFiles\Google\GoogleTalk\googletalk.exe我得到了日志文件。问题是我不完全明白这里发生了什么。弯路如何运作?它如何跟踪系统调用?我也不知道如何读取log.txt中的输出。这是log.txt中的一行20101221060413329291250.60:traceapi:001GetCurrentT

c# - ws_32.dll connect detouring hook 无连接失败

我试图绕过ws_32.dll的连接函数。绕行有效,但调用原始函数时出现问题。我使用一个相对未知的库来挂接该函数。它被称为白魔法。它适用于其他功能,但不适用于此功能。我在InternetExplorer上试过,但无法连接到任何地方。如果我用Thread.Sleep阻塞100毫秒,它会起作用。publicstaticUIntPtrConnectSocketDetoured(UIntPtrs,refNativeSocks.sockaddrname,intnamelen){Magic.Instance.Detours[DetouredConnectId].Remove();varretVal=

c# - ws_32.dll connect detouring hook 无连接失败

我试图绕过ws_32.dll的连接函数。绕行有效,但调用原始函数时出现问题。我使用一个相对未知的库来挂接该函数。它被称为白魔法。它适用于其他功能,但不适用于此功能。我在InternetExplorer上试过,但无法连接到任何地方。如果我用Thread.Sleep阻塞100毫秒,它会起作用。publicstaticUIntPtrConnectSocketDetoured(UIntPtrs,refNativeSocks.sockaddrname,intnamelen){Magic.Instance.Detours[DetouredConnectId].Remove();varretVal=

c++ - Microsoft Detours - DetourUpdateThread?

我有几个关于MicrosoftDetoursLibrary的快速问题。我以前用过(成功),但是我只是想到了这个功能:LONGDetourUpdateThread(HANDLEhThread);我在别处读到这个函数实际上会挂起线程直到事务完成。这看起来很奇怪,因为大多数示例代码调用:DetourUpdateThread(GetCurrentThread());无论如何,显然这个函数“招募”了线程,这样当事务提交(并且绕行)时,如果它们位于“目标函数或trampoline函数中的重写代码内”,它们的指令指针就会被修改。"我的问题是:事务提交时,当前线程的指令指针是否会在DetourTran

Detours库使用与原理分析

目录1.什么Detours2.编译方法 3.使用方法4.原理分析1.什么DetoursDetours是经过微软认证的一个开源Hook库,其作用是拦截应用层及系统层API,注入进程代码等功能,能在无源码的情况下修改原API功能,具有线程安装效率高稳定的特点源码及静态库下载地址: Detours源码与静态库下载2.编译方法2.1解压源码于任意路径 2.2.打开Vs安装目录下的(D:\ProgramFiles(x86)\MicrosoftVisualStudio12.0\Common7\Tools\Shortcuts)的cmd(VS2013开发人员命令提示vs下的工具根据自己的安装路径),切换到vs

Detours库使用与原理分析

目录1.什么Detours2.编译方法 3.使用方法4.原理分析1.什么DetoursDetours是经过微软认证的一个开源Hook库,其作用是拦截应用层及系统层API,注入进程代码等功能,能在无源码的情况下修改原API功能,具有线程安装效率高稳定的特点源码及静态库下载地址: Detours源码与静态库下载2.编译方法2.1解压源码于任意路径 2.2.打开Vs安装目录下的(D:\ProgramFiles(x86)\MicrosoftVisualStudio12.0\Common7\Tools\Shortcuts)的cmd(VS2013开发人员命令提示vs下的工具根据自己的安装路径),切换到vs
12