试图确定消息的来源

Trying to determine where a message is coming from

我有一个复杂的应用程序。有一条 WM_MOUSEMOVE 消息来自某处,坐标与上一条 WM_MOUSEMOVE.

相同

所以我尝试遍历所有加载的模块,尝试绕过(使用 MS Detours 3.0)来自每个模块的任何 ::PostMessageA()::PostMessageW() 调用。当我这样做时,唯一显示为具有这些功能的模块是 C:\WINDOWS\SYSTEM32\USER32.dll(好吧!)。

我原以为每个模块都会有自己的调用跳转table,这就是为什么我认为我可以在每个模块的基础上绕行,但似乎并非如此,或者如果是,那么 DetourFindFunction() 命令无法识别它。从 C:\WINDOWS\SYSTEM32\USER32.dll 绕过本地模块将导致仅绕过本地模块的调用(我认为)。

是否有某种方法可以绕过从公共 execu 加载的每个模块中的相同函数table?

是否可以从加载模块的 POV 执行代码?

看来我错了。我似乎确实在拦截所有消息,这太棒了!

但是,该消息不是 PostMessage() 命令的结果。还不确定是什么导致了 lower down(或者我真的需要知道,可能有一些其他内部 windows 机制用于添加到消息队列),但它似乎是由正在使用 SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(-1, -1)) 的 DLL。这使得系统看起来鼠标正在移动,从而发送另一个具有相同位置的 WM_MOUSEMOVE