注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨夜归人

专业收集资料,个人爱好!

 
 
 

日志

 
 

【原创】【种瓜培训班第一课】内存搜索  

2009-05-19 16:32:02|  分类: CCB的教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
种瓜培训班开始讲课了!

准备工作:

必备软件:
CE
WINHEX
HEXWORKSHOP
能支持大文本文件浏览的文本编辑器如LARGEEDIT

必备资料:
最好是有前一版本的这两个东西:
1,游戏在内存中的完整映像
2,游戏主要部分的反汇编源代码
如果没有,至少是要知道前一个版本可用的各个功能的内存地址和原始数值以及修改数值。

最后还有一件东西是一定要的,就是一个有求知欲的人脑。

并且,我假设你是知道CE怎么用的了,并且多少了解一些关于汇编指令和数据格式方面的常识。如果不懂,看前面的教程之后再来看这个。

好了,开始吧。

一:

首先,以飞天为例,说明如何在各个新版本中找到那些静态数据的地址。

我们知道,类似飞天还有高跳,水平加速以及假MISS之类的数据,这些在内存中是静态的,不会随游戏的运行而改变,而且同一版本中每次运行时它们的位置也固定的,我们就暂且把这样的数值叫做静态数据吧。这类数据的查找相对来说非常简单,它们有几个特点:
1,数据是以四字节存放
2,这一类数据在同一版本中,存放的位置都不会太远,甚至是以隔四个字节相邻存放着
3,前一版本中两个静态数值,原来距离多少字节,新版本中这个距离一般也不会变
4,这类数据一般是在006XXXXX这一段

那么,我们知道以前的版本,飞天位置原来的数据是40 9F 40,这是三个字节,那么在CE中要怎么查找呢?

开CE,开游戏,然后在CE中指定游戏,这样就可以开始搜索了,不过CE里面的VALUE TYPE,默认是4BYTE的,所以不容易搜索得到。不过还好,其实飞天在内存里面是00 40 9F 40。这样,我们可以有两种方法来搜索:

1,按4BYTE搜索
因为数据在内存中存放是低位在前的,所以要按4BYTE方式来搜索时,要先转换,就是前后倒置,另外CE默认的输入数值是十进制的,而我们知道的是十六进制数,所以要在输入数值的输入框前面把HEX打上勾,然后输入409F4000,再搜索。

2,按BYTE ARRAY搜索
这个很好用,特别是后面搜索指令的时候就一定要用到它了。
用BYTE ARRAY来搜索比较方便,就算只知道3个BYTE也能搜索,先在VALUE TYPE那里选择BYTE ARRAY,这个时候数值输入框前面的HEX会自动打上勾,然后输入40 9F 40,开始搜索就行了。

不管用上面的哪一种方法,一般都会只搜索到一个地址。如果搜索到的地址不止一个,那么根据我们已知的知识,这类数值一般是在006XXXXX这一段,如果几个结果中只有一个在这一段,那么应该就是它了,如果结果中有好几个是在006XXXXX这一段的,那么就要进行筛选了。具体怎么做呢?这个时候就要用到前一版本的数据了,用HEXWORKSHOP打开前一版本的内存映像,根据前一版本飞天所在的内存地址,看前一版本中,飞天相邻的前后内容来判断哪一个是正确的。另外还可以在CE中修改然后进游戏中试试看效果,有效果的那个就是正确的。

关于比较前一版本的内存映像,补充一下,因为保存后再在十六进制编辑器中调入,是从00000000开始的,而原来它在内存中是从00400000开始的,所以地址为减掉这个偏移量。具体地以飞天来说,022版本的地址是006147E5,那么你把022版本的内存映像调入到十六进制编辑器里面后,要看的地方是006147E5-00400000=002147E5,看看它前后几个字节的内容,然后在CE中,在找到的几个可能的结果中,点右键,Browse this memory region就能直接打开Memory view对话框并转到这个位置,然后比较CE中这个地址的前后位置的内容,如果和前一版本内存映像的这个数值的前后位置内容相同,就说明这一个是对的。

用同样的方法,可以找到新版本的各个静态数值的位置,这个方法,只要游戏不做大规模的修改,适合以后各个新版本,所以大家可以看到,保存前一版本的内存映像确实很重要。

好了,现在是课间休息,CCB也要吃饭和干活了。希望大家根据上面的讲课内容,自己用CE能搜索到相应的地址,下一课有时间我再来讲讲稍为复杂一点的搜索指令的方法。

考虑到好多人可能以前没做内存映像的保存,所以我这里提供022版几个静态数据的位置以及该位置原来的内容,包括前后四个字节的内容,以供大家学习。

022静态数据(每个数据提供地址和十二个字节,该地址之前和之后的各四个字节在括号中):
飞天 006147E4:(00 00 00 00) 00 40 9F 40 (1D D4 41 1D)
高跳 006147B5:(00 00 00 00) 00 58 81 C0 (00 00 00 00)
水平加速00612034:(00 00 00 00) 00 40 5F 40 (1C C7 71 1C)
假MISS 006121B6:(00 00 F0 69) F8 40 2E (9C 12 AC B5)
  评论这张
 
阅读(261)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017