内存搜索与修改 现在很多游戏都使用了DMA,就是动态内存定位,每次启动游戏,某个数值在内存中的位置都有可能不一样。不过游戏自己也要知道HP 或MP 等数据所在的具体位置,所以会有另一个固定的地址来存放这些变化的地址,这些固定的地址就叫“指针”。看看 CHEAT ENGINE 之类的工具的HELP,会对这类问题比较容易理解。 要在使用DMA 的游戏中找到指针,做法是先找到 HP 或MP 的位置,然后再根据找到的地址来找指针的地址。如果是要做成修改器的话,一般是要对游戏程序打补丁或者在指针位置先读取地址后再进行修改。 所谓动态数据和非动态数据,其实说穿了是取决于变量所依赖的对象是静态对象还是动态对象。现在基本上所有的游戏都是OOP 的(不用辩驳,这个是事实,OOP 确实是实现游戏类程序的最好方法。),HP、MP 等都依赖于人物对象,他们相对与对象头的偏移是不会变的。如果对象头(其实也就是对象类指针)的地址是固定的(静态),那么 HP、MP 等数据的地址肯定就是静态的,反之,则为动态的。这样一来,查找 HP、MP 地址就转化为查找对象头。一般来说,方法都是对 HP、MP 地址下访问断点,然后依次逆向跟上去。这些东西都不难,是调试最基础的入门功课。大家试试吧。 ===== CHEAT ENGINE 入门教程 在这个教程里面,你不会看到任何图片,因为我觉得我能用纯文字教你使用CE,如果你觉得没有图片就一定学不会,我想你没必要看下去了,因为我没空做图片,并且我觉得文字已经足够表达,没必要用多余的图片。 还有如果你喜欢这个入门教程,你可以把它转载到任何地方,但在转载之前,请你征得本人的同意,并且在转载时注明作者为 CCB。 好了,废话少说,进入正题吧。 其实,使用CE 的基本步骤,可以简单到一句话: 1. 运行 CE‐>2.运行游戏‐>3.在CE 中指定要修改的游戏‐>4.首次搜索一个数值‐>5.回游戏中让这个数值增加或减少 ‐>6.回CE 按数值增减的情况再次搜索‐>7.重复 5和 6 直到得到一个或很少的几个结果‐>8.在这几个结果中判断哪一个是真正的结果。 而下面的这个教程,就是要对上面说的这些步骤进行详细的解释,然后再用一个具体的例子来让大家真正掌握 CE 的用法。 当然,要用一个具体的例子来讲解CE 的用法,需要一个游戏,以这个游戏的修改来讲解。不过,如果真正的用一个游戏来做例子,那么大家也得找到我用的游戏,就算找得到,还有可能要安装,确实比较麻烦。幸好,CE 本身带了一个TU...