我有一个复杂的应用程序。来自某个地方的WM_MOUSEMOVE
消息的坐标与上一个WM_MOUSEMOVE
的坐标相同。
所以我尝试遍历所有已加载的模块,尝试绕道(使用MS Detours 3.0)从每个模块调用::PostMessageA()
和::PostMessageW()
。当我这样做时,唯一显示具有这些功能的模块是C:\WINDOWS\SYSTEM32\USER32.dll
(好吧!)。
我原本以为每个模块都有它自己的调用跳转表,这就是为什么我认为我可以绕过每个模块,但这似乎不是这种情况,或者如果它是,那么它是DetourFindFunction()
命令无法识别。从C:\WINDOWS\SYSTEM32\USER32.dll
的本地模块中剔除将导致只有来自本地模块的调用将被绕道(我认为)。
是否有某种方法可以绕过从通用可执行文件加载的每个模块中的相同功能?
是否可以从加载模块的POV执行代码?
答案 0 :(得分:0)
似乎我错了。我似乎正在拦截所有消息,这太棒了!
但是,该消息不是PostMessage()
命令的结果。还不确定到底是什么导致了降低(或者我真的需要知道,可能还有一些其他内部窗口机制用于添加到消息队列中),但它似乎是由正在使用的DLL触发的SendMessage(hwnd, WM_MOUSEMOVE, 0, MAKELPARAM(-1, -1))
。这使得系统看起来鼠标正在移动,从而发送具有相同位置的另一个WM_MOUSEMOVE
。