gpt4 book ai didi

c++ - WinAPI:钩子(Hook)函数中的非dll数据

转载 作者:太空狗 更新时间:2023-10-29 21:22:07 24 4
gpt4 key购买 nike

我想安装一个 Hook (在使用 WinAPI 和 C++ 的 Windows 上)来获取发送到特定进程/线程(我的程序通过进程 ID 知道)的 WindowProc 的键输入事件。据我所知,我必须将 Hook 程序放入 DLL 中。到目前为止,一切对我来说都很好。但是 Hook 过程需要使用安装 Hook 的程序的数据。现在我不知道如何从 DLL 中的 Hook 过程访问这些数据。

我的第一个想法是在 DLL 本身内部维护一个数据结构,并通过调用放置在 DLL 中的另一个函数从外部更新它。但我不确定,究竟该怎么做(例如:我假设这个数据结构必须是共享数据,以便所有调用都是相同的,无论来自哪个进程/线程,但我不确定它)。

我看过一些关于如何实现 Hook 的示例,但这些示例从未使用过安装 Hook 的原始程序(或任何其他“用户代码”)中的数据。

如果有人能向我解释这一点,甚至给我一个关于如何解决上述问题(以及我的方法是否正确)的简要概述,我将不胜感激。

非常感谢!

最佳答案

您可以使用共享数据部分

 // dll.cpp
#pragma data_seg("myshared")
int iShared;
#pragma data_seg()
#pragma comment(linker, "/section:myshared,RWS")

从 DLL 中导出一个函数,允许传递用于该部分中的变量的值。从 Hook EXE 中调用该函数( Hook 之前)。 Hook 进程中的实例 DLL 将看到 Hook EXE 设置的值。

关于c++ - WinAPI:钩子(Hook)函数中的非dll数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com