【问题标题】:Trying to determine where a message is coming from试图确定消息的来源
【发布时间】:2017-05-31 19:28:09
【问题描述】:

我有一个复杂的应用程序。有一条WM_MOUSEMOVE 消息来自与最后一个WM_MOUSEMOVE 坐标相同的地方。

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

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

是否有某种方法可以绕过从通用可执行文件加载的每个模块中的相同功能?

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

【问题讨论】:

    标签: detours


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多