订阅本站


feedsky

版权声明

Creative Commons License
本站文章采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
您可以随意转载我的文章,但是请注明,转自wettuy's blog

关于CE模糊搜索模拟器游戏

因为读者李伟朋友最近经常在博客上留言要我做一篇这样的教程,本来我打算用PC版的街霸4来完成的,不过不小心看到了MAME,想来还是用模拟器做的教程更符合你的要求吧,而且也更具有代表性^_^。

2010-01-14_201851

选择MAME进程,开始游戏。不过要注意,我用的模拟器是Mame plus,而进程要选择的是mamep.exe

2010-01-14_201913

因为血条是看不到数值的,所以从模糊搜索开始。选择unknown initial valus

 

2010-01-14_201945

返回,按几下打,然后搜索选择数值减少 (Decreased value)

 

2010-01-14_202036

300724个结果出现了。要有耐心

 

2010-01-14_202059

因为在格斗游戏中,往往计时的时间也是在一起减少的,为了把这些因素排除掉,进去随便打几下,但是没有掉血,切出来选择数值不变 (Unchanged value)。现在还剩下176963个地址。

 

2010-01-14_202227

继续不断的挨打数次,直到如上图这个状态。这里就已经是极限了,因为无论怎样继续搜索下次,始终都会剩下18个地址。

这里没有什么好办法,只能观察,仔细看的话会发现他的地址其实都很接近,完全可以视作相同值的不同字节。不过现在暂时不好判断,最快的方法就是一个一个试。

事实上我们并不用每个测试,只要测试每组相邻数值的第一个即可,比如 08048689 和 08088D3D。原因会在后面提到。

 

2010-01-14_202918

于是很快发现,这个孤零零的地址08088D3D正是我们所要的结果。

可是这个数值非常的大,显然不像通常意义上我们所见到的数值,所以我们右键查看内存地址,看一下他到底是什么样。

08088D3D    00 00 00 46 00 …

打开之后,我们看到的是这样的结果。PC游戏在内存中是以高位取反的方式出现的,把他按照这样的方式反过来之后,计算便可得

46000000H = 1174405120

是的,这正好证明我之前的猜测,因为模拟器是忠实的还原了原平台的运行效果的,也包括内存,所以在模拟器的游戏中是不存在高位取反的概念的,他的正确值就应该是

00000046H = 70

 

现在关于之前的问题,因为在搜索之初,我们并没有限定字节位数,因此修改器把所有的单字节、双字节和四字节的数值都进行了搜索,这就造成了许多重复。这也是我所谓只测试相邻地址中的第一个就可以了的原因。

 

 

2010-01-14_203136

所以干脆直接修改最后一位数的值并且对其进行锁定。

 

2010-01-14_203150

此地址测试有效。

 

 

很好,现在知道了吧,对于针对PC游戏所设计的修改器,他并不完全适用于模拟器。不过这不绝对,本例子中不就成功找到了么。

相关文章

25 条评论到 关于CE模糊搜索模拟器游戏

发表你的评论

 

 

 

你可以使用 以下 HTML 标签

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

:20: :21: :07: :04: :16: more »