4

我正在尝试通过从游戏的进程内存中提取值来为游戏编写统计工具(因为没有其他方法)。最大的挑战是找出存储我感兴趣的数据所需的地址。更难的是动态内存分配——我不仅需要找到存储数据的地址,还需要找到指向这些内存块的指针,因为每次游戏重新启动时地址都会发生变化。

现在我只是使用内存编辑器(ArtMoney)手动搜索游戏内存,并寻找随着数据变化(或不变化)而改变其值的地址。找到地址后,我正在寻找一个以类似方式指向该内存块的指针。

我想知道这些任务有哪些技术/工具?也许有一些我可以阅读的文章?掌握反汇编程序是唯一的出路吗?例如,游戏培训师正在解决类似的任务,但他们在几天内就完成了,而我已经苦苦挣扎了好几个星期。

谢谢。

PS。一切都在窗户下。

4

3 回答 3

1

掌握反汇编程序是唯一的出路吗?

是的; 从http://www.microsoft.com/whdc/devtools/debugging/default.mspx下载 WinDbg ,或者如果你有一些钱要花,IDA Pro 可能是最好的工具

于 2009-03-25T04:37:37.880 回答
0

你可以看看DynInst (Dynamic Instrumentation)。特别是查看动态探针类库 (DPCL)。这些工具将允许您通过调试器接口附加到正在运行的进程,并在它们运行时将您自己的工具(通过特殊的探针类)插入其中。您可能会使用它来检测访问数据结构的例程,并在创建或修改您感兴趣的值时进行跟踪。

以这种方式执行此操作可能比手动执行所有操作更容易。这些页面上有很多论文,您可以查看其他人如何构建类似的工具。

我相信 Windows 支持得到维护,但我自己没有使用它。

于 2009-03-25T04:46:22.213 回答
0

如果您知道如何用 C 编写代码,则很容易搜索内存值。如果您不懂 C,如果您可以使用 C# 编写代码,此页面可能会为您提供解决方案。将他们拥有的 C# 移植到 Java 并不难。

于 2009-03-25T04:29:53.577 回答