问题标签 [detours]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
32-bit - 构建 32 位 Detours 库
我正在使用 Microsoft 的 Detours 库,并且我使用的是 32 位版本(免费)。我现在正在安装 Windows 7 的 64 位,我似乎无法使用 nmake 编译 Detours。
这是错误:
如您所见,它正在尝试编译为 64 位。如何强制 nmake 构建 32 位?
谢谢,戴夫
c - 如何挂钩 __usercall、__userpurge (__spoils) 函数?
有人知道钩子__usercall
类型的函数吗?我成功挂机__thiscall
,__stdcall
并__cdecl
打电话,但这对我来说已经足够了。
知道有人为 's 挂钩库或__usercall
如何使用翻译来挂钩这种类型的函数吗?__stdcall
__cdecl
我首先必须挂钩的功能是:
c++ - 使用 Microsoft Detours - 一堆未定义的
我尝试在谷歌上搜索编译器错误,但它甚至没有返回搜索结果。所以,我在这里有点迷路了。我刚刚下载了 microsoft detours,构建了它并从中获取了 detours.h、detours.lib、detoured.lib 和 detoured.dll 文件。然后,尝试在我自己的项目中使用它,我收到以下错误:
http://friendpaste.com/4egvgn7lOeIVOGkbROCnOC
那是源代码,底部是编译器错误。如果有人可以澄清导致这些问题的原因,那将很有帮助。谢谢!^_^
c++ - 如何使用 DetourAttachEx 创建蹦床功能?(与 MS 绕道而行)
我有一个 dll,我想绕道它的导出函数之一,
- dll 不是 Windows 的一部分。
- 我需要能够在绕道之后调用真正的函数(从绕道的函数中调用真正的函数)
- 我知道函数的确切签名。
- 我已经能够绕过该功能,但现在我无法调用真正的功能。
我意识到我需要使用蹦床功能,我看过网上的例子。问题是:所有这些示例都显示了如何绕过 Windows API 函数,我需要对我通过 dll 导入完成的函数执行相同的操作。
欢迎任何帮助
--edit 澄清一下,我试图通过指针调用原始函数,但这不起作用。还尝试使用此堆栈溢出文章中的方法
这甚至没有崩溃,但看起来它进入了一个无限循环(我假设因为在原始函数中有一个跳转到绕行的那个)
编辑——解决了!不知道是什么解决了它,以此作为参考。
- 停止使用 getProcadder 而是开始使用 DetourFindFunction
- 清理了代码(很确定我清理了导致问题的任何原因)
有效,还是谢谢
c# - 非托管函数挂钩,调用约定的堆栈/注册问题?
这不是关于 EasyHook 的特定功能,而是关于挂钩的一般功能。我想用这个签名挂钩一个函数:
这显然是非托管代码,我正在尝试使用 EasyHook 将它与我的托管 c# 代码挂钩。但我认为这不是 EasyHook 造成的问题,而是我对调用约定等的了解......
这就是我定义 DllImport 和删除的方式:
但是一旦我注入钩子,钩子程序就会继续崩溃 - 不足为奇。我认为这是调用约定的问题,并且我的钩子函数以某种方式干扰了钩子程序的堆栈。
因此,我查看了另一个项目,该项目确实挂钩了相同的功能,但在 c++ 中绕道(挂钩部分):
和被调用的函数:
(目标程序集和 c++ 示例都是用 Visual c++ 编译的)。我想在调用原始函数之前我必须保存一些寄存器并修复堆栈?或者任何其他想法我在这里做错了什么?
detours - 功能绕道包如何规避安全性
我正在查看一些使用名为 DetourXS 的函数 detour 包的代码。我的应用程序针对 Microsoft Server 操作系统。Microsoft Research 也有一个 Detours 包,他们有一篇关于它如何工作的文章。他们修补加载到内存中的机器代码,并将无条件跳转到新注入的代码中的代码插入。
如果此代码通过在运行时修改机器代码来工作,则它们应该面临操作系统的安全限制。这将是操作系统上的一个严重安全漏洞,因为我可以修改任何关键的 DLL,如 kernel32 来做任何我想做的事情。我的理解是,如果用户进程试图修改已加载到内存中的 dll 的代码,它应该被操作系统停止。Widows Server OS 中是否有启用/禁用此检查的设置?
他们如何克服这一点?
有没有人有在企业生产环境中的任何应用程序中使用这种 detour 包的经验?
windows - Microsoft Detours 如何工作以及如何使用它来获取堆栈跟踪?
我是 Microsoft Detours 的新手。我已经安装它来跟踪进程进行的系统调用。我运行以下从网上获得的命令
我得到日志文件。问题是我不完全理解这里发生了什么。弯路如何运作?它如何跟踪系统调用?另外我不知道如何读取 log.txt 中的输出。这是 log.txt 中的一行
最后我想得到进程的堆栈跟踪。我怎么能得到那个?
c# - 使用 QWidget::find() 导出的库挂钩不起作用
我有一个 QT hook.dll 库,它使用 detours.dll 注入到 3rd 方应用程序中。如果我将 QWidget::find() 方法添加到 hook.cpp,那么我在安装这个钩子的过程中会得到 DllNotFoundException。否则,如果我不将 QWidget::find() 添加到 .cpp 中,则挂钩正常建立。使用 VS2008 使用 QT 4.7.1 构建挂钩
请帮忙,我被这个错误折磨了 2 天:(
c++ - MS Detours库,绕行非win api函数
我想使用windows detours库来绕过一个非win api函数。该函数是 Qt 库 (QtGui4.dll) 的一部分。我想知道如何设置函数签名:
我对此进行了尝试,它收到了我通常的错误份额,对需求的一些解释也会很有趣:
这是它们在 Windows API 下 TextOut 的样子:
因此,按照 Gene 的建议,我尝试了:
但是得到了错误,'函数式转换为内置类型只能接受一个参数。
所以不管怎样,他们都说有点当众羞辱对灵魂有好处,我的灵魂一定是度过了最美好的时光……
谢谢。
c++ - 尝试使用程序集绕过功能时出现问题
只是为了好玩,我正在尝试制作一个简单的绕道库,通过修改类的 vtable 来绕道成员函数以创建绕道。我有一些奇怪的行为。这是整个程序(我使用的是 MSVC++ 2010):
它jmp
正确地指向新函数的地址,但在那之后它崩溃了。当我在 ollydbg 中查看它为什么会崩溃时,会发生一些非常奇怪的事情。它会直接走过一些指令而不做任何事情。我在调试器中看到 apush xxx
时,堆栈不会被修改。在我看到 aretn 4
的地方,事物将继续前进,进入函数之间的空间,充满int 3
s。有谁知道为什么会这样?
编辑:没关系,我找到了答案。