【游戏分析】RTS类游戏通用修改方法

前言:RTS类游戏曾经红极一时,但随着时代的发展,逐渐没落。人们对其漏洞的研究也越来越少,今天我们就以一款RTS游戏,探究对整个RTS类游戏的修改。

 

一:金钱的修改

RTS游戏没有钱就没有一切,我们从最重要也是最基础的金钱来开始修改。

用CE附加游戏进程

搜索初始金钱10000

第二次搜索减少了500的数值

右击,选择寻找是什么改写了这个地址

查看反汇编

很明显,sub指令减少了我们的金钱,最简单的修改就是把sub改成add,实现无限金钱

(可以看到金钱不但没有减少500反而增加了500)

RTS类游戏修改金钱的通用方法:查找金钱数目->金钱变动,在第一步基础上查找变动的数值->找到存放金钱的地址->继续寻找基址,锁定金钱数目或者修改代码,如sub改为add

 

二. 单位血量的修改

照旧,先通过搜索单位血量找到其地址,涉及到伤害计算一般都是浮点数,搜索的时候要注意。

找到其反汇编代码

下断,查看寄存器

基本可以判断出

xmm2存放的是最开始时单位的HP

xmm3存放的是受到攻击掉的HP

Xmm0存放的是单位收到攻击后的HP

 

知道了这些,将单位修改为无敌的做法就多了,我们可以直接Nop掉这一句:

发现攻击单位不会掉血了,同时发现了这样一个现象,对其修理并不会修复血量。

看来修理也是走了这个地方的函数,只不过是负的攻击,增大血量罢了,nop掉之后自然不会修理成功。

RTS类单位无敌修改的通用方法:查找单位HP->改变单位HP,CE在第一次的基础上寻找改变的数值->找到存放单位的地址->寻找基址,锁定数值或者修改代码,如Nop掉伤害代码。

 

三. 建造速度的限制

RTS类里,建造任何东西都需要读条,如果你把游戏速度调慢,你会发现,他总是要走固定的条数,只不过读条的速度有差异而已。

本游戏中,经过试验,每一个单位/建筑的产生都需要从走100条。

如图所示,将游戏速度调慢,这是该进度条走了百分之三时候的样子:

那么我们就可以这样做:

如此反复,最终得到存放走的条数的地址。

修改之后:

进度条增加,改进后可实现无读条建造。

其他单位同理。

RTS类建造限制的通用方法:测试建造走的总条数->通过改变进度条找到地址->找到基址锁定值或修改代码

 

四. 由电力的限制引发的思考

从两个角度出发,分当前电力与当前负载。前者的话跟金钱改法类似,不再赘述。

我们研究一下比较少见的切入点,寻找负载。

找到基址,发现建造会在这里增加负载,那么直接把add改为sub即可。

负载为负:

发散一下思维,既然这里跟电力有关,那么电力影响建造速度/电力影响雷达开关是否会在附近呢?具体的还需要在OD里多探究,本文只是抛砖引玉,介绍了一些RTS类通用修改的方法,其他功能的实现,都可以在此基础上进行研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值