心得
也算是记录一下最近熬了三天,修改街机游戏的心得。
对于编程 我也只是算刚入门,所以关于程序方面可能有说的不对的地方,如果有大神求纠正,然后说下原理,我也学习学习。
PC上我们接触的街机游戏都是模拟器运行的,用CE或者OD也好 调试的数据都是一些和你找到的地址
可能是没有关系的地址,为什么说是可能? 因为你说没关系但是它又访问着你的地址且寄存器也有你
地址的指针。
你说有关系,它这些地址又不像。比如 游戏人物HP 加减问题。 汇编肯定是一些加法减法指令。
但是它可能就是一些赋值的指令,而且 貌似 大部分游戏数据 你访问以后都会出现相同的地址。
所以初期用OD去试着改基本放弃了。
后来查了查资料, 说游戏本身是是6502汇编之类的开发。需要专门的调试器才看到真实的游戏数据
而且你还要看得懂6502汇编指令。想想头痛放弃了。
转战了CE,问题也很明显。找不到基址。而且数据都是虚拟机运行起来重新分配地址
尝试CE的人造指针碰到的问题如上面说OD是一样的。想造但是真实地址都不给你没法造。
最后只能使用特征码定位 这次问题解决了。
操作中碰到的一些坑
这里说下模拟器和模拟器之间地址上有不同的地方,比如游聚平台的虚拟机你特征码定位
就会附加一堆没用地址跟着你定位的地址,你不管怎么定位永远都不可能是一个地址。
我们都知道特征码定位,网上说的能定位一个地址的特征码才可以用。
nebula,winkawaks 类似于这种模拟器比较好 可以定位到一个地址。
解决方法
先说碰到游聚这种问题的方法。当然此方法可能只适用于街机游戏
我们可以通过写一个过滤程序来过滤 ,如何过滤呢?通过调试发现了一个规律。
例如我们的特征码 00 11 22 33 44 定位出我们的地址123bc,下一次定位就是456bc
前面是动态的后面不改变。那么我们可以通过不变的地方定位,画个图。
无用地址+我们要的地址。
通过BC,我们将这些数据加入数组,之后遍历数组。看一看数组里这些地址哪一条符合要求
然后取出使用。
然后就是普通模拟器,基本没问题常规搜索使用就好。
以上就是一些方法和心得。希望对你有帮助