4

背景

我在玩东方系列游戏之一的不朽之夜。射击按钮是'z',移动较慢的是'shift',箭头键移动。对我来说不幸的是,使用 shift-z 会重影我的右箭头键,所以我在射击时无法向右移动。这种重影发生在所有应用程序中,并且切换键盘可以解决它。

目标

我想在反汇编代码中找到获取键盘输入并将其与“z”键进行比较的directx 函数,然后将该键更改为“a”。我认为这是一个有趣的项目。假设扫描码的大小相同,这应该相当简单。而且因为可执行文件只有400k,也许这将为我提供一个独特的机会来探索计算黑社会的黑暗面(开玩笑)。

相关经验

我有一些在汇编中编码的经验,但在反汇编方面没有。我没有使用 DirectX api 的经验。

问题

我需要一些指导。我找到了一个directx 键盘扫描代码列表,以及一个名为PEExplorer 的程序,看起来它可以满足我的需求。

有没有一种方法可以让我使用 C 函数调用来转换一些程序集,以便更容易阅读?我需要找到游戏检索当前按键的位置,将它们与列表进行比较,这就是我需要修改的列表。

任何投入将不胜感激。

4

1 回答 1

5

您可能对 Microsoft Research 的Detours库感兴趣,它允许您挂钩函数调用并更改其参数。这样做,您的代码可以将不会重影的键的扫描代码更改为游戏期望的代码。

于 2010-03-15T05:31:21.890 回答