真实键盘模拟

Real keyboard simulation

我正在尝试为游戏编写一个机器人。几个月来我 运行 遇到的一个大问题是键盘模拟
我的操作系统是 windows 10。在那个 OS 上,当试图通过代码模拟按键时,windows 10 向请求添加了一个标志。此标志表示此按键来自程序,而不是来自硬件。
这样游戏就可以检查用户输入并过滤所有按键模拟按键

我的游戏就是这样,所以我一直在努力寻找一种方法来通过它。

VirtualBox
第一个解决方案是 运行 从虚拟盒子进入游戏。然后 运行 从主机上安装 bot 程序。当专注于 VirtualBox 时,程序能够毫无问题地模拟键盘。 (那是因为 VirtualBox 确实“愚弄”了关键模拟来自硬件的 OS)

这种方式效果很好,但主要缺点是运行在VM上运行游戏超级慢,游戏翻转很多。我已经尝试了多个关于如何在 VM 上获得最佳游戏结果的教程,但没有任何效果..

真实键盘模拟
我最近想到了这个想法。我想知道我是否可以以某种方式欺骗我的 PC,使其认为按键来自硬件。
也许使用公对公 USB 电缆并将 PC 连接到自身,然后进行真正的键盘模拟(从 USB 的一侧发送键盘请求并通过另一侧获取)。
或者也许可以通过其他方式实现?

我不想要的
有一些解决方案可能会奏效,但我不想尝试:

  1. 将我的 OS 更改为 windows 7:我不想降低我的 OS 版本
  2. 双启动windows 7: 我之前试过linux的双启动,让它工作是可怕的

问题是,您是否知道如何以 Windows 10 不会添加“rat”标志的方式模拟键盘

选项 1

Windows 驱动正是您所需要的。在您的 windows 驱动程序中,创建键盘 HID 设备,然后通过此 HID 设备发送您的键。

  • 优点:
    • 软件总数
  • 缺点:
    • 复杂
    • Windows 驱动程序应该被签名(你必须为此付费),或者你必须将你的 windows 10 设置为 Test Mode 以加载驱动程序

选项 2

使用 Arduino 发送您的密钥。参考 https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

  • 优点
    • 简单易学
  • 缺点
    • 需要硬件。

你需要 driver level key simulation.
因为 D3D game engine 制作的某些游戏会像 winAPIpykeyboard.
那样阻止 system level simulation
我曾经在游戏中使用 driver level key simulation 作弊,例如 lol、cs、pubg...

所以,如果你使用 python,你可以使用 keyboardmousectypes,等等
如果你是 win32 平台,你可以使用 winiopydamo.

他们都是driver level simulation.

ps:如果您的游戏阻止了一种解决方案,请尝试另一种解决方案。


keyboard
ctypes simulation