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

无翼风的网易博客

欢迎光临无翼风的网易博客

 
 
 

日志

 
 

从游戏修改开始学数据跟踪  

2010-03-23 14:51:37|  分类: 编程与电脑技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先先申明一下,我语言组织能力不好,没看懂的别踩我。

需要工具:
1。任意一款游戏修改软件(我使用GameMaster8.0)
2。任意一款调试工具        (我使用OllyDBG)

引子:
经常玩单机游戏的人应该常常使用一些游戏修改工具修改游戏,达到无敌或锁定游戏数据的效果。但是用修改工具的话,我们常常会发现每次修改的地址都不一样,这就是常说的动态内存地址。像我这样的懒人喜欢一劳永逸的游戏方式。这样的话,我们显然不能用普通的方法做一个专用修改器或修改器地址存档。那么有没有办法解决这个问题呢?我的回答是:电脑这东西,只有你想不到的,没有你做不到的。那么怎么去修改这样的游戏呢?那么请看下文。

跟踪:
首先我们拿红警2来做个示范(这个游戏不大,想更着文章做的可以去下一个)。

我们先进入游戏,用游戏修改器查找到金钱的地址。(这个步骤不用我教你吧?)

我这里找到的是0EA37254这个地址。正常情况下我们用游戏修改器把这个地址锁定就可以无限钱了,但是你换一个颜色地址又变了,我们要做的就是找到关于控制金钱的那条语句,并修改它。

接下来我们打开调试工具。我用OD做示范。首先把OD附加在game这个进程上。文件>附加>选中game进程>点击附加。读取完内存数据后你会发现RA2像死机一样,切换不回窗口了。这是正常的,因为OD在附加完成后会暂停这个进程的。点击调试>运行,取消暂停。转到表达式地址0EA37254(我们刚才找到的地址)。在0EA37254这一行上点鼠标右键>断点>内存写入,设置一个断点。这样做的意义就是:当任何一条语句试图改变0EA37254这个地址的值的时候,OD就会暂停游戏并停止在这条语句上。我进入游戏并随便做个什么,使钱减少。这个时候OD就会弹出游戏,并停在004E53AF这个地址上。很显然,004E53AF就是我们要找的金钱控制地址了,我们来看看这条语句内容:
mov    [ebx+24C], eax (把EAX里的值压入EBX+24C这个地址中)。
那么我们就知道了EAX是游戏里金钱的变量,EBX是一个基础地址,EBX+24C就是我们找到的那个地址0EA37254。我们再往上看几行:
[004E53A9]    sub    eax, edi
[004E53AB]    mov    [esp+24], edi
这2条语句的含义就是:
sub    eax, edi (EAX与EDI这2个地址的值做减法运算)得出:EDI就是你做的那个东西的价格。
mov    [esp+24], edi (把EDI的值压入ESP+24这个地址<我们不需要它,不管它>)
那么很简单的可以得出一个结论,如果我把sub    eax, edi 这个减法运算改为加法的话,我做东西不还会加钱吗?我们来试试看。双击这条语句>把SUB改为ADD>点汇编。切进游戏做个电厂(价格800),YEAH~~~~钱是不是增加了800块?这下不怕没钱了吧。

后期:
有刚才的修改,我们知道了,只要把游戏里004E53A9这个地址的2B改成03就可以了。(SUB的16进制表示为2B ;ADD的16进制表示为03)
接下来的工作就是做一个专用的修改器了。不会编程的朋友直接用修改器改也可以。
关于怎么做专用修改器,我会在以后的文章里告诉大家的。
  评论这张
 
阅读(230)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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