《红色警戒2·尤里复仇》-第一章 无限金币

第一章   无限金币

荒塘前言:

红色警戒这款游戏相伴我童年时光,非常喜欢玩这款游戏,当年也是看着我叔打,自己慢慢磨出各种一抽七冷酷敌人的打法、北极图断桥法、5台光陵灭国,还尝试过只放一次闪电风暴直接带走满血基地(石油危机版)。但对于红警的认识还不算深入,当初我也是小学生,喜欢打街机,回家打电脑红警、拳皇、合金等,爱好打机,就是玩玩打打那种。本次逆向只专注于学识研究,望小技不耻辱,大技不买卖。

分析前准备:  红色警戒-尤利复仇单机版    CE    脑子和手  


思考下:无限金币的含义?

无限金币分为  真·无限金币   和  假·无限金币  两种

第一招:一夜暴富法(假·无限金币)

所谓假无限金币,就是只是将金币的数据改成很大,就像是本来没钱的,被富婆包养一夜成为有钱人花不完钱那种

 

逆向分析

  • 将游戏设置为一个简单敌人,避免多敌人影响下断等(可能会被电脑灭掉N次,赶紧逆出来干死他)

 

《红色警戒2·尤里复仇》-第一章 无限金币_第1张图片

  • 开始游戏,附加CE,观察金币值,搜1000,然后花掉金币,再搜

《红色警戒2·尤里复仇》-第一章 无限金币_第2张图片

 

  • 得到3个地址,发现都是存放金币的,接下来就是修改金币,看看哪个会生效。这里,我第一次逆时候,我也以为绿色那两个其中一个是,其实你会神奇地发现,第三个不是绿色的才是钱包(真正存放金币的)。

  • 修改金币为99999,实现无限金币哈哈(这种就是传说中的一夜爆富,肯定是被富婆包养了,此时敌方的内心是奔溃的)

好了,这里就是一夜暴富法,但是你发现每次启动,钱包(存放金币的临时变量地址)会变,

这种暴富法是最基础的方式

(这里埋下一个坑,后面如何实现找到统一的一夜暴富法,就是无论什么时候启动,都会找到这个地方,也就是所谓的  基址+偏移 )

 

 

第二招:无敌霸王餐(真·无限金币)

想必看到霸王餐应该知道是什么原理了吧,就是吃饭不给钱呗,为何这种方式叫做真·无限金币呢?如果买东西都不用花钱,那钱就没有存在的意义了,也就是暴富也没意义了对吧




 

逆向分析

  • 上面讲到,第三个才是真正金币值数据,那是谁改写了这里的数据呢(饭店收费员是谁)?
    《红色警戒2·尤里复仇》-第一章 无限金币_第3张图片

 

找到收费员(显示反汇编)

《红色警戒2·尤里复仇》-第一章 无限金币_第4张图片

  • 观察一下收费员,你会发现,eax是剩余的钱,[ebx+30c]是我的钱包,再往上会看到 sub eax , edi   ,那意思就是  

我剩余的钱 = 我的钱  -  炒饭的费用   

我剩余的钱 放入 钱包

这里只是猜测,很有可能不出炒饭的费用,很有可能是你儿子问你拿钱买零食的费用,一般不会一次拿这么多,每次拿1块,拿十次这样,原因很简单,细致发现,金币是缓慢减少的,不是一次性扣完的。

  • 开始监视这个收费员日常收费(下断),你会发现频繁断下,那是因为这收费员服务太好了,一直在收钱,那么如何判断是不是收我的费呢?
    ebx+30c  =  我的钱包   我的钱包知道了,ebx就知道了,只要ebx符合就是在对我收费!!

    《红色警戒2·尤里复仇》-第一章 无限金币_第5张图片

     
  • 这时候你也会发现edi(收费的费用)是多少了,那么如果我不给钱(将edi改为0)?
    将sub eax,edi    nop掉

    发现,成功吃上了霸王餐!!当你点了霸王餐突然又不想吃了,他还会退钱回你哈哈
    (这里再埋下一个坑: 一旦这样nop掉,你又会惊奇地发现,全世界的人都能吃霸王餐了,那这样的话霸王餐也没有意义了对吧)

    《红色警戒2·尤里复仇》-第一章 无限金币_第6张图片

(荒虾说:世界上最富有的时候,不是你有多少钱!而是你做啥都不用花钱!!!)

小白虾问:老哥,C++如何实现?
荒塘虾说:下次一定

你可能感兴趣的:(红色警戒2逆向)