2017-05-31 40 views
1

来我有一个复杂的应用程序。有一个WM_MOUSEMOVE消息来自与最后一个WM_MOUSEMOVE相同的坐标的地方。尝试确定其中消息从

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

我原以为每一个模块将有它自己的呼叫跳转表,这就是为什么我认为我可以在每个模块为基础的弯路,但是这似乎并没有这样的情况,或者如果是的话,那不被DetourFindFunction()命令识别。从本地模块C:\WINDOWS\SYSTEM32\USER32.dll迂回将导致只有来自本地模块的调用将绕道(我认为)。

是否有某种方式迂回是从一个共同的可执行文件加载每个模块在同一个函数?

也许它有可能具有的代码从所述装载的模块的POV执行?

回答

0

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

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