问题标签 [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.

0 投票
0 回答
748 浏览

c++ - 在winsock recv上绕道不返回任何东西

我将一个 dll 注入到服务器中,因为我需要阻止一些服务器没有丢弃的坏数据包。

我的代码片段:

出于测试目的,我只是将数据打印出来。

现在我把它钩住了,它显示[ address ] successfully detoured..
我想一切都已经上钩并且正在工作。

现在我去客户端并开始发送数据包。
例如我登录,现在这会向服务器发送一个数据包。
而且我成功登录了,所以服务器应该已经收到了我发送的数据包。

现在我检查连接到 的控制台,但server没有打印任何内容。
这很奇怪,所以我尝试在服务器上连接 WPE_PRO 并再次开始与客户端通信。现在我发现即使是 WPE 也无法记录数据包。

这怎么可能?为什么会这样?

我正在尝试在服务器上构建一个数据包记录器/过滤器来阻止坏数据包。
黑客正在使用数据包来破坏我们的服务器。

我正在尝试挂钩的应用程序的信息:


更新

尝试在recv(),WSArecv()函数上设置断点,它不会中断。

当我检查 PE 时,只有这些 dll 被导入:


更新

只是为了测试我的代码是否有效,我将 DLL 连接到客户端,是的,数据包被记录/打印。确认我的代码有效。嗯。


更新

还试图绕道ff。

仍然没有。


更新

所以我使用wireshark并看到了通过的数据包。
我整天都在调试程序,在所有 winsock 调用上设置断点,但仍然一无所获。

0 投票
1 回答
475 浏览

c++ - 使用 Detours 挂钩 Api 在 Detach 上崩溃

我试图通过将 .dll 注入 explorer.exe 来绕过 NtQueryVolumeInformationFile。

在我尝试弹出 dll 之前它工作正常。弹出 .dll 后,explorer.exe 崩溃。

操作系统:Windows 7 32bit 编译器:带有 Detours 3.0 库的 Visual Studio 2012

DllMain.cpp:http ://pastebin.com/6PgZcdhi Header.h:http://pastebin.com/BGQ527Ym

我希望有人可以帮助我找出问题所在。我现在在这个问题上工作了 2 天,但没有任何线索。

感谢您的帮助:)

0 投票
1 回答
1327 浏览

c++ - 与 MS Detours 挂钩并使用 Withdll.exe 注入时应用程序崩溃

我正在FindNextFile()使用 MS Detours 进行连接。我已成功配置 Detours 库并编写了一个名为“Detuors.dll”的 dll 和一个名为“FNFSend.exe”的应用程序。以下是代码:

动态链接库:

两个代码都成功编译,没有错误。应用程序FindNextFile()以递归方式调用,dll 将其挂钩并将计数器写入文件。

然后,我使用 detours 库本身提供的名为“withdll.exe”的工具来创建一个注入了 dll 的进程。所以我使用命令将我的 dll 注入到应用程序中:

withdll /d:Detuors.dll "C:\FNFSend.exe"

注入后,函数hook成功,即在目录中创建文件,但应用程序突然崩溃。在visual studio中调试后,在“output.c”中看到异常如下:

请帮助纠正问题。

0 投票
1 回答
193 浏览

windows - 将整数内存地址转换为静态成员函数指针

我试图绕过二进制可执行文件中的成员函数。我只知道函数签名和方法的 VA。在 Detours Express 3.0 中包含的“方法”示例的帮助下,我想出了这个:

这给了我错误:

0 投票
2 回答
1418 浏览

c++ - Detours 3.0 钩子 GetProcAddresss()

我正在使用:

多发性硬化症 VS 10

Detours v3.0 速成版

完整的源代码DLL

我尝试查看 GetProcAddress 接收到的函数列表。但启动后,程序因错误而关闭:“ ACCESS_VIOLATION , UNABLE_TO_READ

有人可以提示如何解决它?

0 投票
1 回答
5390 浏览

c++ - 如何使用 DetourAttach() 指向十六进制函数的指针?

我正在尝试使用 detour 库制作教程。

在较早版本的 detour 库 v1.5 中,函数 DetourFunction 用于定义地址,因此 DLL 知道在哪里查找函数。

例如,它可以按如下方式使用:

http://www.moddb.com/groups/ibepex/tutorials/function-hooking

但是在较新的版本中,该功能更改为

其中 ppPointer 是指向要附加绕行的目标指针的指针。

现在因为我知道十六进制格式的目标函数的地址 0x01006F10,我想以某种方式将它用作 ppPointer 的参数。我试着写:

它编译得很好,但我的程序不像我想象的那样工作。似乎程序永远不会从该地址捕获函数。

所以基本上我的问题是,我是否正确使用了指向十六进制地址的指针,其次,我在使用 DetourAttach() 的方式上是否存在一些基本错误?

0 投票
1 回答
9410 浏览

c++ - 如何正确使用 C++ 中的 Detour 库来实现具有已知内存地址的函数的简单挂钩?

我无法使用 detour 来获得我的第一个钩子。我正在使用 Detour 3.0。

我的代码编译得很好,我可以使用Winject注入 DLL ,但是,我想挂钩的函数似乎没有被挂钩。我正在尝试在记事本中挂钩函数 InsertDateTime 。
http://www.9injector.com/winject-injector/

我使用IDA Pro Free以十六进制表示法找到了 InsertDateTime 的地址。

下面的代码中是否有任何根本性的错误,或者在每次调用时过程中的内存都不会同时出现?

我注入 DLL 的代码如下所示:

此外,代码主要取自使用 Detour 1.5 的旧教程。参考:http ://www.moddb.com/groups/ibepex/tutorials/function-hooking

0 投票
1 回答
1220 浏览

c++ - 如何在 C++ 中使用 Detours 扩展程序内函数而不进入无限循环?

我正在尝试学习使用弯路来修改和扩展程序中的功能。在这种情况下,我试图修改 Windows Notepad 32 位中的 InsertDateTime 函数。

我正在使用 Winject 注入我创建的用于修改函数的 dll。DLL 被正确注入,函数被绕道到我指定的新函数。但是,我绕行 InsertDateTime() 的新函数应该在名为 MyInsertDateTime() 的新函数的末尾调用原始函数InsertDateTime()。

但是,问题是,当调用新函数并最终尝试调用旧函数时。当然,这一个也会在无限循环中依次被重定向/绕道。所以永远不能调用原来的函数!

不知何故,我想我需要分离新功能才能调用旧功能。但是当我这样做时,我得到了错误?然而,这可能是一些根本性的错误。我应该如何正确地做到这一点?

代码如下:

最后是修改后的 MyInsertDateTime() ,我尝试在其中分离绕道。也许我在分离时做错了什么?

0 投票
1 回答
1530 浏览

c++ - 为什么 API 在 C++ 中挂钩 ExtTextOut 和 DrawText 只输出垃圾?

我正在尝试使用 Detour 制作一个 API 挂钩,以从第三方程序中提取文本输出。但是,我只得到垃圾,很多数字,没有文本输出。

究竟什么时候调用这些函数?他们是否也被要求画除文字以外的其他东西吗?如果第三方程序使用一些高级工具来避免拦截这些调用,是否有一些基本示例我可以尝试确保我的方法真正正确接收文本?换句话说,windows中是否有一些程序使用这些方法在屏幕上绘制文本?

我的代码如下所示:

0 投票
2 回答
466 浏览

c++ - 绕过 C++ 中的函数以在目标进程中从 ExtTextOut 复制数据字符串时,malloc 会导致崩溃吗?

我正在尝试使用 MSDN Detours 3.0 绕道来注册ExtTextOut()从第三方软件绘制的文本。我创建了一个 DLL,将其注入目标软件。当我绕过 ExtTextOut 时,我尝试复制发送到该方法的字符串并将文本读取到修改格式的文本文件中。由于输入字符串是 UTF-16 并且我只对保持 ASCII 字符低于 127 感兴趣,我为此做了一些逻辑。

但是,问题是我的程序在注入目标后会崩溃一段时间。我怀疑它可能与malloc 函数有关。

如果我使用 malloc 在进程中定位内存,我可以保证这不会覆盖目标进程中的任何内存吗?如果是这种情况,我如何创建一个函数来确保我的 malloc 不会干扰目标进程。

编码: