红警2尤里的复仇 单位全三星、控制对方单位
本帖最后由 KaQqi 于 2019-6-2 10:05 编辑本期的主题是单位三星,而不是题目里面后面那两个。。
后面那两个是因为研究三星时候顺便就搞出来了。。
首先,祝大家六一儿童节快乐!视频版本地址:https://www.bilibili.com/video/av54231226/
https://static.52pojie.cn/static/image/hrline/2.gif
开始正题:
一.捡箱子全捡到升级
对于单位三星的问题,我的思路是找出各个单位的基地址,然后对比数据结构。
那么问题来了,你怎么让他升级三星呢?
a自己坦克升级不了。。
a电脑坦克,搞着搞着你家被电脑拆了。。
{:301_999:}
于是第一步,想起了捡箱子模式,先去实现捡箱子全捡到升级
有了上一期捡箱子全捡到基地,相信大家自己就会实现了。
首先还是字符串搜索crate at,定位到捡箱子
通过百度翻译的支持和本人高中词汇量的支持,查到了veterancy是老兵的意思
然后再看捡箱子的开头,是一个标准的switch结构
直接把switch的jmp跳到定点——veterancy这里,完事
https://static.52pojie.cn/static/image/hrline/2.gif
二.单位无限血
有了三星箱子的支持,再也不怕家被电脑拆了。。
{:17_1089:}
调试的时候只需要开一个人的游戏,就可以放心的开ce干了。
这里还要感谢战网的捡箱子模式。。
(以下内容很写的很brief,不懂CE的建议先去学下ce再来看帖子)
通过搜索犀牛坦克的血量变化——一开始是400,然后a自己一炮,变成310,分别得到编号为1、2 坦克的血量地址
注意能搜到2个地址,有一个是血条条的,那个没用,我们要的是血量的地址,不是显示的血条的地址。
然后分别f6,得到单位基地址和血量偏移+6c
单位无限血很简单,就是把这里nop了,然后处理下共用代码即可。
公用代码的处理下一部分会讲到
https://static.52pojie.cn/static/image/hrline/2.gif
三.单位三星
因为单位肯定是一个类或者结构体,不管各个变量是private类型还是protective public,我们的大ce都能搜到
然后我们把一个单位搞三星,另一个单位不三星,对比一下数据结构就知道三星的偏移是哪一个了。。
这是都是0星的的数据结构对比,这时候的红色肯定不是三星。
差异的颜色可以设置的,我设置成红色,比较显眼。
然后用刚刚的成果,一个坦克去捡箱子,升级为三星,再次对比数据结构
在像羊毛一般的双线操作后,终于单位2变成了三星
也就是说数据结构对比窗口里右边那个是三星。
看看哪有不同吧
指针不同的地方肯定不是三星。。
我一开始猜想没星的话变量肯定是0,然后1星是1,三星是2或者3
这时候我突然发现,为什么红警没有2星。。。
{:17_1089:}
然后我发现,竟然没有一个地方是这种0,1,2,3的。。
那只能暴力了
把单位1与单位2不同的地方修改掉,全变成单位2的
指针啊这一类的就不用改了,还有+6c那个地方也不需要改了,那是血量。。
改到+150时,终于发现一个可疑的地址了。立马修改,发现:
成功了。
那作者为什么要把这么一个奇怪的数值定义为三星呢?
换算成16进制看看他是什么
竟然是0x40000000!!!!
因此,单位三星只需要把+150 改成0x40000000
https://static.52pojie.cn/static/image/hrline/2.gif
四、应用
那这个东西怎么应用呢?总不能拿个时钟时时刻刻变量玩家所有单位吧。。
我用过红警修改大师,可惜只能修改原版,不能修改yr和战网。但是至少给我了一个思路——选中单位三星
这里感谢一下JSAMA的RA2Dbg out
在里面可以发现很多输出信息,比如lose mouse什么的,后面还跟一个地址。
那就可以证明选中单位有一个指针,指向的是选中单位的基地址。
先选中单位1,ce搜索单位1基地址,再选中单位2,ce搜索单位2基地址,得到:
这时候你就会发现编队的好处,不编队你现在都不知道哪个是单位1单位2了。。
搜索到之后就有实现思路了。
当指针改变时,修改0C8C07C0+150 为0x40000000
所以我们对着这个地址f6,看是谁修改了他。
005F469A - 89 31- mov ,esi
然后从od里跟过去。
其实从这里可以看到选中单位的基地址是【00a8ecbc 】
我们可以先用一个跳转跳到一个空地,然后mov ,0x4000000,然后再跳回去
就像这样
这样,我们就把单位三星成功写到程序里了。
我是这么改的:
只要选中一个单位,就会变成三星
完美
不过要注意上面的图要写esi而不是ecx,因为选中单位基地址存在esi里了,ecx存的是个指针。。
然后还要说一下,上面的代码只适用于坦克,步兵的偏移不一样。这就说明的步兵和坦克是两个类
所以想做到点步兵升级请自行找偏移,如果我有空,也会在找出来之后把偏移告诉大家
https://static.52pojie.cn/static/image/hrline/2.gif
五.控制对方单位
单位肯定有很多属性。我们目前知道了+6c是血量,+150是等级。那么我看很多辅助都有直接控制对方单位的操作,比如红警修改大师
那我猜想单位类里面肯定有一个指针指向所属玩家。
那这个指针是多少呢?
我们知道游戏有一个数据基址,这个基地址在这篇帖子里提到过
对红色警戒2及尤里的复仇的逆向总结
https://www.52pojie.cn/thread-878171-1-1.html
(出处: 吾爱破解论坛)
数据基址指向的就是玩家数据了。
我们以16进制的形式显示,可以得到
然后再用数据分析工具,ctrl+f搜索这个地址可以发现+21c和+14c都存了这个地址。
分别修改21c、14c的数值,改为我方的
可以发现,修改14c的时候没用,而修改21c的时候敌方的单位转移为了我。
灰熊坦克:?????我们的基地怎么回事
因此,转移单位所属就是这样
我们只需要再在刚刚选中单位三星那里加一行
mov dword ,[+21c],就可以了
这指针嵌套,看着就难受。{:300_965:}
只可惜,连指针嵌套都不让你写
还要写个中转变量
https://static.52pojie.cn/static/image/hrline/2.gif
七.让我成为我的对手
修改单位所属的指针为我的数据地址,单位会转移为我的。修改我的数据地址为单位所属者呢?
奇葩的事情发生了,我居然成为了对手,游戏界面全是对手的操作和数据
红警2 冷酷的电脑vs冷酷的电脑 冷酷的电脑第一视角
https://www.bilibili.com/video/av54330483/
https://static.52pojie.cn/static/image/hrline/2.gif
写贴不易,求加分点赞投币。。
视频版本我也会传
最后,再祝大家六一儿童节快乐!
视频版本地址:https://www.bilibili.com/video/av54231226/
视频版本只有三星部分哦,后面两个部分没有 厉害了,很少有时间再玩了,纯支持一下吧
本帖最后由 KaQqi 于 2019-6-1 14:55 编辑
JuncoJet 发表于 2019-6-1 13:21
我还在研究0冷却时间建造
感谢大佬的ra2dbg out
如果能把default和focus之类的过滤掉就更好了
就是过滤的那一句改成这样
if(!strstr(d,"Theme")&&!strstr(d,"Mouse")&&!strstr(d,"Focus")&&!strstr(d,"Default"))
0冷却建造有了思路实现就非常简单
我一开始也是因为没有思路而无从下手
我的帖子如果不嫌弃的话可以参考一下哦
论红色警戒2尤里的复仇如何实现秒建
https://www.52pojie.cn/thread-846492-1-1.html
(出处: 吾爱破解论坛)
有魔域方面的修改么那个也是老游戏了 儿童节哈哈哈 那个红警对战平台可以用吗{:1_904:} 红警已经被你们玩坏了 楼主6666 我还在研究0冷却时间建造 有木有局域网联机可以改的东西!? 收下了,刚好最近要用上这个软件 收下了,刚好最近要用上这个软件