吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 41671|回复: 138
收起左侧

[原创] 对红色警戒2及尤里的复仇的逆向总结

    [复制链接]
KaQqi 发表于 2019-2-24 13:54
本帖最后由 KaQqi 于 2019-4-20 20:01 编辑

鉴于网络上没有红警2的逆向过程,于是整个寒假都在逆向这个老游戏,终于摸透了一些内容。今天写一篇帖子总结一下
(之所以没有继续发视频是因为剩下的内容都可以在对战联机使用,某对战平台老板出于某种考虑不让发,想学习的同学可以私聊找我要)
程序是vc++6.0 非mfc编译的



一、程序运行流程(与破解作弊无关,不感兴趣可跳过)
启动程序后,先进入main函数。中间选择游戏、国家、地图的部分我就不说了,然后读条(加载一些东西)。其次进入一个循环,只要游戏开始,就会一直在这个循环里,直到游戏退出。我称之为游戏主循环。
TIM截图20190224123932.png
根据动态调试跟踪得知,游戏开始后,两个je一直成立,jnz不成立(废话,je成立了都执行不到他),而当你退出时,第一个je不成立,第二个jnz成立跳出,而不是下面je不不执行。因此,我们首先对55cfd0进行反编译。
TIM截图20190224124653.png
这个函数里有一个巨大的判断,根据动态调试得知在游戏正常玩的时候四个字节都为0,直接return 0结束。而当游戏退出的时候,a83d48字节是1.
其次还有2个2级判断,在游戏退出时,第一个二级判断是不执行的。而后面的else if是执行的,并且发出退出提示音。因此,将字节a83d48化为1是程序正常退出的方式。
TIM截图20190224124926.png
那么剩下几个字节是干什么用的?我分别做了测试
a83d49:不知道,没测试出来
a8ecd0:重新读条
8b41c0:直接显示得分界面
因此,程序通过改变这几个字节的数值来执行想要做的离开游戏、重新加载、玩家胜利。
这样,程序运行的方式就搞懂了。为什么要搞懂这些?你在亲自尝试第二部分的某些内容后就知道了。

然后还有一个非正常退出,就是显示你掉线。通过SetTImer断点,进行回溯,找到了掉线的关键call 648710,进行反编译,了解了掉线的基本流程。
游戏在获取不到别人的消息之后就会掉线,关键地方如下
TIM截图20190224125942.png
其中指针lparam的内容就是剩下允许的时间。


由上内容,怎么实现直接胜利(联机对战有用),大家请自己研究,也可以找我要视频


二、游戏破解的思路梳理
思路1:查找储存数据的内存地址,通过ce查看谁改写了这里的地址,然后修改达到破解的目的
事例1:无线金钱 视频(那个KaQqi是我):https://www.bilibili.com/video/av37135363/
事例2:无线电力(跟上面思路一样。。。):https://www.bilibili.com/video/av39528567/(我的改负载不改电力的方式比较优雅)
事例3:秒建、瞬间建造 :https://www.bilibili.com/video/av39396344/
这个可能难理解,解释一下:游戏建造一个建筑需要闪动54下,建筑不同每一次闪动的时间也不同,但终究都是54下。细心的话可以听出来、看出来。
事例4:视野全开 (由于联机可用,我不能发视频。)
首先,还是打开我们的ce,模糊搜索,查看哪些数值改变。然后不要展开基地,我们移动一下我们的单位,获取视野。一个开始变动的比较多,有几千多个
TIM截图20190224131045.png
思路嘛,要灵活。然后我们不动小兵了,再搜索未变动的数值,哈哈,一下子少了很多。
TIM截图20190224131147.png
就这样,一直变啊不变啊搜啊搜啊,最后只剩七十多个。然后你会发现这七十多个地址是连在一起的,说明这是一个数组。这个就是战争迷雾数组了。然后我们还是用我们大ce的f6——查看谁改变了这个地址,在od中跟踪、回溯。
TIM截图20190224131410.png
第一层回溯,我们找到了战争迷雾一有变化就经过这里的位置。
TIM截图20190224131510.png
第二层回溯,我们找到了战争迷雾一减少,也就是视野增加就经过这里的位置。
第三层回溯,我们就找到了开全图。这里你要用间谍卫星去改变战争迷雾数组,因为我们要开全图,不是要开部分图。。。(这个位置不透露了,有兴趣自己找,很简单)
然后代码注入器,注入即可。
视频地址:https://www.52pojie.cn/thread-915389-1-1.html


事例5:单位无线血、三级、单位所属(利用这个可以控制对方单位):https://www.bilibili.com/video/av41826178/(后面两个对战可用,视频里没有透露。不过都在一个call里,找起来不麻烦)
然后这里我还有一个问题,由于我太菜了,通过这里无法控制对方的油井,要么就是控制了不给我加钱。。大神们有没有提示呢?


事例6 战斗要塞等载具无限装兵
这个任务是@Hmily 大神提出的
这个一开始实现的思路是,红警的单位储存方式应该是按链表储存的,于是在内存中搜索,无效。
于是第二思路就是本部分的标题,ce大法
打开游戏,建造一个战队要塞,推荐用战斗要塞而不是ifv什么的因为要塞能装5个,ce定位搜索的话更精确
然后每装一个兵搜索一次,从1搜索到5
TIM截图20190302175851.png
一开始比较多,搜到3 4的时候基本就只剩一个了
TIM截图20190302180011.png
看一下这个部分的内存,嘿嘿,是不是很熟悉?上面全是这个单位的数据,如果你看了我的对于单位血量修改的视频,就会熟悉了
TIM截图20190302180353.png
然后使用ce的f6大法,可以得到2个关键地址。这两个关键地址都是在一个call内的
[Asm] 纯文本查看 复制代码
00473403 - C7 07 00000000 - mov [edi],00000000
0047340C - 89 17  - mov [edi],edx

用od到这个地址,查看一下。
TIM截图20190302180144.png
根据动态调试可知,当且仅当载具的passenger参数发生变化的时候,会调用这里。因此,这里就是载具装人的关键函数
用一个简单粗暴的办法,把2句赋值语句都nop掉,就可以实现要塞无线装兵了
TIM截图20190302180524.png
论红色警戒2尤里的复仇如何实现战斗要塞等载具无限容量——尤里的复仇逆向系列7
https://www.52pojie.cn/thread-885017-1-1.html
(出处: 吾爱破解论坛)


思路2:字符串查找
事例1:随处建造(对战可用,无视频)
建筑放下不了的时候我们会听到CannotDeployHere,搜索,定位。
TIM截图20190224132042.png
查看有没有跳转跳到这里,或者跳过这里,统统修改掉。
TIM截图20190224132131.png
大功告成


事例2:箱子(对战可用)
其实我最先发现箱子函数不是字符串搜索,是从捡到金钱箱子,金钱改变然后回溯发现的。为了总结思路,咳咳,就把他归于这一类
字符串搜索crate at,可得
TIM截图20190224132341.png
英语不好,我就给你们翻译几个。得到一个单位,视野全开(从这也可以找到刚刚的位置。有兴趣自己试试),得到金钱,增加力量,获得洲际导弹(ICBM百度翻译说是洲际导弹,实际上在游戏里是核弹),增加移动速度。
关于无限核弹的
https://www.52pojie.cn/thread-935581-1-1.html


然后我就演示一个,剩下都一样。比如核弹吧,进入,代码注入即可(核弹是最简单的一个,没几行代码)
TIM截图20190224132610.png

事例3:科技全开(对战可用)
这个其实也不是搜索字符串发现的,是从刚刚核弹之后一个call,这个call是添加建造选项用的。里面有NewConstructionOptions的提示语。为了总结思路,咳咳。。
TIM截图20190224132924.png
然后这里分为两部分,一部分是删除不可用的建造项目,一个是增加可用的建造项目。我第一次逆向这里的时候改第二个call,发现没效果,调试后发现增加的项目全给删了。。


事例4:超级武器CD重置
这个也不是搜索字符串得来的,还是刚刚获得核弹下面一个call发现的。但是里面有warning:nuclear missle launch的提示语(哈哈,说到这我想起之前一个我写的qt crakeme,你不输对密码就给你提示这些),就暂时归于这一类吧。。。。。(你为什么不写一个思路3........)
TIM截图20190224133450.png
然后我们发现,除了正常的超级武器在这个call里,侦察机、心灵探测、伞兵飞机也在这个call里。。总之就是有CD的东西都在这个call里。。。(你说话能不能准确点?)不能,我找不到好词概括这个call,暂且叫他超级武器call吧
TIM截图20190224133913.png
一个小小的switch,决定了哪个超级武器好了。然后我们还是进行代码注入,注意一下switch过后还有一个函数也要注入进去。
TIM截图20190224134019.png
switch只是提供一个堆栈参数,然后修改寄存器的值,最终实现还是要那2个call。


事例5:自动修理(对战可用)
刚刚搜索的下面有一个repair的提示,进去看看。
我进去的是Eva_repair的那个,不是repair sound。我没试过第二个,应该可以回溯到一个地方。
TIM截图20190224134428.png
回溯,反编译。可见参数有一个是单位地址。代码注入即可。
同理,也可以实现自动售卖。没什么用,谁1v1的时候把自己建筑全卖了。。(那残血建筑卖掉不是很实用吗?)我有点懒,不想写一个程序,先判断这是什么单位,总不能把残血基地卖了,再查数据,看看剩20%的时候卖掉,还要用到Timer。。今后有时间可以写一写。








额,以上就是我一个月努力的成果。剩余的我没有观察到还能修改什么,要么就是我觉得没什么意义没写到帖子上(比如自动售卖。)如果大家还有什么想修改的请回复,我要补充帖子,成为红警2尤里的复仇最全面的修改指南。


然后现在有红警修改大师这种东西,他除了自动修理好像都实现了。有空我把自动修理也补上。


感谢@苏紫方璇 大神,我有问题的时候她5分钟就能给出解答

还有,找我要过视频的同学不要外传,也不要修改后外传,万一让clsky发现了……


转载注明原作者KaQqi{原名cqr2287)


想说的话:高一了,没时间玩这游戏了,我想对陪伴我3年的红警说一句


红警,再见!





点评

能对战进行,还能任意位置建造,这个经典游戏的确是可以再下载回来玩玩。  发表于 2019-2-25 08:44

免费评分

参与人数 45威望 +1 吾爱币 +58 热心值 +43 收起 理由
丶林小志 + 1 + 1 我很赞同!
siuhoapdou + 1 + 1 谢谢@Thanks!
majun0020 + 1 + 1 我很赞同!
sniper9527 + 1 + 1 谢谢@Thanks!
万怡之殇 + 1 + 1 谢谢@Thanks!
lsrh2000 + 1 + 1 热心回复!
jerryma0912 + 1 + 1 谢谢@Thanks!
52pur + 1 + 1 用心讨论,共获提升!
承心 + 1 + 1 我很赞同!
Hmily + 1 + 8 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
萌新与小白 + 1 + 1 我很赞同!
zxl1993 + 1 + 1 高一大佬,膜拜,没这折腾的精力了
ycbb123 + 1 + 1 谢谢@Thanks!
/bq + 1 + 1 谢谢@Thanks!
午后阳光 + 1 + 1 谢谢@Thanks!
CrazyNut + 3 + 1 大佬太牛逼了!我高一的时候还在用尿和沙子玩呢
何故 + 3 + 1 用心讨论,共获提升!
gtqi12 + 1 + 1 我很赞同!
翰墨留香 + 1 + 1 谢谢@Thanks!
丶懒喵喵 + 1 + 1 可惜的是 win10跑不起来
剧终OL + 1 + 1 我很赞同!
自由之心 + 1 + 1 谢谢@Thanks!
默沉醉 + 1 + 1 我很赞同!
特百惠 + 1 + 1 求,红警老版本的下载,要通用系统的(没有系统限制)。
cr7890 + 1 + 1 谢谢@Thanks!
生如夏花。 + 1 + 1 用心讨论,共获提升!
feelings + 1 + 1 用心讨论,共获提升!
MingLei_0612 + 1 + 1 用心讨论,共获提升!
涛之雨 + 2 + 1 意思之前初中?初三玩红警?还录教程?!
woailushibiao + 1 + 1 谢谢@Thanks!
qkonline + 1 楼主得了哮喘,语句中总是咳咳。。,我只能表达,楼主真的辛苦你了。
chkds + 1 + 1 谢谢@Thanks!
snccwt + 1 + 1 用心讨论,共获提升!
巧言乱德 + 1 用心讨论,共获提升!
MGHT + 1 + 1 谢谢@Thanks!
lyrong + 1 + 1 辛苦了,好文!
abigsun + 1 + 1 我很赞同!
小小的爱2009 + 1 热心回复!
q74330 + 1 + 1 我很赞同!
XhyEax + 1 + 1 我很赞同!
WYWZ + 1 + 1 她5分钟就能给出解答,传说中苏紫方璇大神真是女生?
三生三世 + 3 + 1 好久不见
苏紫方璇 + 1 + 1 膜拜会搞辅助的大神
id3389 + 1 + 1 我很赞同!
zedong + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2019-2-24 14:38
膜拜大神,大神好厉害,我高一的时候还啥都不会呢

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
KaQqi + 3 + 1 太谦虚了

查看全部评分

头像被屏蔽
one486 发表于 2019-2-24 14:31
 楼主| KaQqi 发表于 2019-2-24 14:00
本帖最后由 cqr2287 于 2019-2-25 18:57 编辑

@苏紫方璇 快过来,我要给你加cb加热心加加加加加

还记得那首儿歌

苏紫方璇呀璇
苏紫方璇呀璇
苏紫方璇呀璇
苏紫方璇呀璇


另外win10是可以玩的,下载一下对战平台,打补丁4
平台中文红色警戒战网
英文ra2ol
拼音日啊二喔勒
爱敷衍 发表于 2019-2-24 14:16
说真的红警是真好玩     玩法太多了

免费评分

参与人数 1热心值 +1 收起 理由
KaQqi + 1 我1v1还是玩的不错的

查看全部评分

AA20072008 发表于 2019-2-24 14:16
天纵之才
snly 发表于 2019-2-24 14:20
还以为只有我们这些老骨头还玩这游戏,原来小鲜肉们也同样热爱这款老游戏呀
fq645122 发表于 2019-2-24 14:22
红警都搞这么复杂
q956672350 发表于 2019-2-24 14:31
小时候每天放学必玩
吾爱丶加油 发表于 2019-2-24 14:35
这使用的是什么没看懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 15:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表