下面以CE5.2版(内存工具软件)寻找游戏 武林外传SF 的一级基址为实例做一个简单的教程
游戏:武林外传SF;工具 CE5.2版
一,打开游戏和CE5.2(先打开游戏再打开CE),用CE载入游戏
二,让游戏人物的血量回到最满血状态,记住血量值
如上图,游戏人物是1312点血,好的,用CE搜"1312",.用"Exact Value"方式,4字节
搜到N个址,好,再回到游戏里,我们让人物掉点血(打怪什么的,最好多掉点,这样方便后面来查数),再用"Decreased Value"(减少了的数)来搜,这样掉点血,搜一次,搜点血搜一次,几次下来,好的,找到的地址就只剩四个了(我是两次就找到只剩四个了,电脑不同,可能找的次数也不同,不过方法是一样的,先找最大血量值,然后,再掉点血,再用减少的搜,如此循环几次就OK了)记下第一个地址(为什么用第一个地址,CE的教程里说,一般如果找到少量的地址后,正确的一般在第一个,如果你不确定,你可以让人物自动回血,就可以看到,第一个地址的数也在跟着增加:)~)
接着,把第一个地址双击,加入下面的栏里,再在地址上单击右键,弹出菜单中选"Find out what writes to this address"(谁在改定这个地址),调出监视窗口,再回到游戏,掉点血,就可以看到监视窗口里己经有改写该地址的命令了~
选中该命令,点"Mor information",得到如下图
mov [esi+00000254],ecx 红色加亮的这句,(+00000254也就是血量的偏移量了)
可以看到,是把ECX的值写入ESI+00000254这个内存地址中,所以,我们记下下面的ESI地址:ESI=05C0B548,再回到CE主界面,搜"05C0B548"这个数(选中HEX,用十六进制四字节方式搜)
得到26个地址都含有这个数,好的,把最前面的三个数保存到下栏里,然后,小退一下(回到人物选择界面,再进入游戏),就可以看到,三个地址的数值都有变化了.好,再重新执行上面的找血量地址,得到ESI的值,记下来,对比刚保存 下来的三个地址内的数,呵呵,发现
010AEAE4里的值刚好等于ESI,这就可以肯定,010AEAE4一定二级基址了,好,我们监视010AEAE4,"Find out what writes to this address".好,再次小退一下,再进入游戏,这时监视窗口有东东了,如下图
得到:mov [esi+24],0000000
记下ESI的值,010AEAC0,再回到CE主界面,用十六进制的方法找010AEACO
得到N个数,反复搜几次,好,得到下图
按CE教程说的,一般最是地址最小的就是正确的,呵呵,有点那个啊,~~~~
选第一个008BE594,加到下面的栏里,完全退出游戏,再进入游戏
重复,最后还是得到008BE594,这样就可以肯定,008BE594就是一级基址了
得出公式如下
一级基址:008BE594
008BE594地址里面保存的数值+24的偏移=二级基址
二级基址里面保存的地址数+254的偏移得到血量的地址