Cheat Engine 高级应用——指针修改

原文
http://www.luoshen.cn/blog/pc/580.html

早就打算写个关于指针修改的文章了,只是一直没找到合适的范例游戏。前段时间不小心修改了下红警3,发现这个游戏确实太适合拿来用做修改的演示了,呵呵。

说起来,指针确实是一个非常恐怖的东西。首先,到底什么是指针呢?以下是引用自维基百科的解释:

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中的寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象语言如Java一般避免用指针,而是引用。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。

提起指针,就不得不让人想到了CE的教程里那个十分可怕的最终章里,那个指向指针的指针的指针的指针,也就是传说中的4级指针,变态无比。不过好在一般游戏中几乎是不会看到这么过分的东西出现的。说起来,CE的那个教程Cheat Engine Tutorial是十分棒的东西,如果你对于修改还有什么不明白的地方的话,建议先去试试那个东西,会很有帮助的。

那么,现在就让我们来看看指针修改在实际游戏中的具体应用吧。就以红警3为例。

ce

首先当然是祭出我们的CE大神了。嘛,虽然我自己有做过汉化的版本,不过实际上一般修改仍然喜欢使用英文版的,嘿嘿。

 

pic000

进游戏

pic001

很容易就找到了钱的地址。请注意,红警3可能会找出很多个不同的地址,其中有些地址是无效的,如果你最终出现了什么问题,有可能就是这里选择错了地址。没有什么特别好的办法,只能一个一个试。现在我们添加钱的地址,然后老办法选择Find out what writes to this address,查找是什么在写入该地址,然后回游戏接着造点东西。

pic002

同样是很同意就找到了唯一的一个操作码,双击该操作码打开扩展信息窗口。这个窗口中的信息十分有用,请注意红字标出来的操作码,mov [esi+04], eax。这就是该我们钱的操作码,而[]中的就是指针,也就是真正的钱所在的地方。

现在我们就开始寻找这个指针。在这个窗口下面找到ESI的值:056951D8,然后回主窗口(扩展信息窗口可以先不关闭),点开一个新的搜索,勾上HEX,然后搜索这个ESI的值,一般就能找到一个唯一的地址。

pic003

找到以后不要着急双击。点击地址列表上面的“手动添加地址”,然后在弹出的窗口中勾上“Pointer”也就是指针。现在可以在地址栏里填入刚才扫描出来的地址了,05065c38。注意,还记得刚才的扩展信息窗口吗,里面指针的地址实际上是esi+04,也就是说,我们还需要在地址后面加上+04的偏移量。

pic004

添加以后,看到数值了吗?指针的值和我们刚才搜索到的钱的值是一样的,这就对了。

pic005

现在你可以随便对他下手了。

pic006

至此修改完成。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

− 1 = 1