3

I'm writing a program in C# that is attaching on to another process and reading memory etc. from this other process. I'm looking for a way to simulate mouse movements in this other process, but the other process specifically blocks methods such as PostMessage, SendMessage etc. I'm trying to stay away from injection or memory writes, so those aren't an option for this. I've been told the best way would be to create a virtual mouse driver and hook it on to the other process. Anyone have any other ways I could do this or how I would go about hooking a virtual mouse driver?

4

3 回答 3

0

在开发 SCAR(一个 RuneScape 宏程序)时,开发人员最终不得不在 java 文件(称为 SMART)周围构建一个包装器,并在这个包装器内有一个“假鼠标”,可以使用基本的函数调用来控制。我不知道如何在 C# 中做到这一点,但在 Java 中是可能的。在 SMART 之前,您要么必须允许使用鼠标(因此直接移动鼠标),要么使用称为“静音鼠标”的东西。正如 Kai 所描述的,静音鼠标连接到 java.exe 及其 JVM 中的函数并控制鼠标输入。然而,正如凯所描述的那样,这很容易被发现,所以没有人使用它。

于 2009-07-16T21:26:15.713 回答
0

使用单独的程序(例如 autohotkey)来驱动鼠标移动是否可行?因为那是我会做的。

于 2009-07-16T21:03:21.953 回答
0

我不确定你的目标是什么程序,但我已经看到了阻止 PostMessage 的游戏的很酷的解决方法(游戏应该是未命名的;p)。

我不知道挂钩虚拟鼠标驱动程序是否可行。我以前听说过这种方法,但我的感觉是,如果 PostMessage 被阻止,那将是徒劳的。鼠标驱动程序不只是使用标准窗口消息向游戏窗口发送消息吗?

我见过开发人员阻止 PostMessage/SendMessage 的最常见方法是从系统文件夹中复制 Windows DLL 并将其与游戏一起分发(我想知道这是否合法?)。由于 DLL 将函数加载到游戏地址空间的本地,游戏可以通过确保调用者也是游戏地址空间的本地来阻止其他进程访问这些函数。

绕过此问题的一种简单方法是将 DLL 注入游戏进程并挂钩到它们的函数中。但是,开发人员对这种方法很了解,并且仍然可以通过在函数的入口点执行某些检查来阻止您的调用(我不确定这些检查是什么)。据我了解,解决此检查的一种简单方法是自己定义 PostMessage 函数的前几个字节,然后跳转到 PostMessage 中检查后的某个点。

我不想再详细说明了,因为我要讨论的内容非常具体,而且主题非常深入,不断变化,而且并没有真正针对 Stack Overflow 上的人。

我提到的所有这些东西都是我从浏览各种游戏黑客论坛中获得的基本想法——这些都是寻找这类问题的地方。游戏黑客社区对他们的信息非常严格,但经过足够的时间后,每个人都愿意分享他们的方法:)

于 2009-07-16T21:12:25.350 回答