KaQqi 发表于 2019-5-19 11:17

红色警戒2尤里的复仇科技全开

本帖最后由 KaQqi 于 2019-5-21 18:02 编辑

我都不知道我这个东西写了多少期了,所以就不写期号了。。
本来这个内容在这篇帖子

对红色警戒2及尤里的复仇的逆向总结
https://www.52pojie.cn/thread-878171-1-1.html
(出处: 吾爱破解论坛)
已经有所提及,可是写的太不详细。。鉴于私信一堆人让我详细写这个,以及上次科技全开没成功写到程序里的尴尬,于是就写了这篇文章。

先做一下免责声明:
科技全开在红色警戒战网对战可用,所以请不要用于商业用途(上次发的居然有人用于商业用途,一个外挂100块钱,是谁我就不点名说了)。用于商业用途请自己承担所有责任。
从本论坛下载的内容仅供交流学习,请在下载后24小时内删除,请勿用于商业用途,否则后果自负
相关视频:https://space.bilibili.com/251535501

https://static.52pojie.cn/static/image/hrline/2.gif

前情回顾:
上一次我们讲到了无限核弹。
红色警戒实现无限核弹的艰辛之路
https://www.52pojie.cn/thread-935581-1-1.html
(出处: 吾爱破解论坛)
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,

mov edx,
mov ecx,


push 0
push 0
mov ecx,
push 1
call 006CB560
mov eax,
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret
在逆向总结那一节里,我们提到了NewConstructionOptions的那个call。进去之后可以发现一个大大的switch结构。
006CC103|> \6A FF         push -0x1                              ;Case 0 of switch 006CC0F3
006CC105|.83CA FF       or edx,-0x1
006CC108|.B9 D4248400   mov ecx,gamemd.008424D4                  ;EVA_NuclearMissileReady
006CC10D|.EB 6A         jmp short gamemd.006CC179
006CC10F|>6A FF         push -0x1                              ;Case 1 of switch 006CC0F3
006CC111|.83CA FF       or edx,-0x1
006CC114|.B9 BC248400   mov ecx,gamemd.008424BC                  ;EVA_IronCurtainReady
006CC119|.EB 5E         jmp short gamemd.006CC179
006CC11B|>6A FF         push -0x1                              ;Case A of switch 006CC0F3
006CC11D|.83CA FF       or edx,-0x1
006CC120|.B9 A4248400   mov ecx,gamemd.008424A4                  ;EVA_ForceShieldReady
006CC125|.EB 52         jmp short gamemd.006CC179
006CC127|>6A FF         push -0x1                              ;Case 2 of switch 006CC0F3
006CC129|.83CA FF       or edx,-0x1
006CC12C|.B9 8C248400   mov ecx,gamemd.0084248C                  ;EVA_LightningStormReady
006CC131|.EB 46         jmp short gamemd.006CC179
006CC133|>6A FF         push -0x1                              ;Case 7 of switch 006CC0F3
006CC135|.83CA FF       or edx,-0x1
006CC138|.B9 70248400   mov ecx,gamemd.00842470                  ;EVA_PsychicDominatorReady
006CC13D|.EB 3A         jmp short gamemd.006CC179
006CC13F|>6A FF         push -0x1                              ;Case 3 of switch 006CC0F3
006CC141|.83CA FF       or edx,-0x1
006CC144|.B9 58248400   mov ecx,gamemd.00842458                  ;EVA_ChronosphereReady
006CC149|.EB 2E         jmp short gamemd.006CC179
006CC14B|>6A FF         push -0x1                              ;Cases 5,6 of switch 006CC0F3
006CC14D|.83CA FF       or edx,-0x1
006CC150|.B9 40248400   mov ecx,gamemd.00842440                  ;EVA_ReinforcementsReady
006CC155|.EB 22         jmp short gamemd.006CC179
006CC157|>6A FF         push -0x1                              ;Case 8 of switch 006CC0F3
006CC159|.83CA FF       or edx,-0x1
006CC15C|.B9 2C248400   mov ecx,gamemd.0084242C                  ;EVA_SpyPlaneReady
006CC161|.EB 16         jmp short gamemd.006CC179
006CC163|>6A FF         push -0x1                              ;Case 9 of switch 006CC0F3
006CC165|.83CA FF       or edx,-0x1
006CC168|.B9 14248400   mov ecx,gamemd.00842414                  ;EVA_GeneticMutatorReady
006CC16D|.EB 0A         jmp short gamemd.006CC179
006CC16F|>6A FF         push -0x1                              ;Case B of switch 006CC0F3
006CC171|.83CA FF       or edx,-0x1
006CC174|.B9 FC238400   mov ecx,gamemd.008423FC                  ;EVA_PsychicRevealReady
006CC179|>E8 82650800   call gamemd.00752700
006CC17E|>8B0D 84EDA800 mov ecx,dword ptr ds:          ;Default case of switch 006CC0F3


根据各种case,我们可以获得超级武器的编号:
0 Nuclear Missle(核弹)
1 Iron Curtan(铁幕,也就是台湾人翻译的无敌)
A force shield(立场护盾,你造了高科之后的那个蓝蓝的东西,跟铁幕差不多,但是只能套建筑)
2 Lightning storm(闪电风暴,盟军的无污染超武,符合科学发展观)
7 PsychicDominator(心灵控制,尤里的无污染超武)
…………
剩下我就不说了,大家都识字。。自己去上面的代码里翻。。

有了这些编号,我们是不是可以调用这些超武呢?
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,

mov edx,
mov ecx,


push 0
push 0
mov ecx,
push 1
call 006CB560
mov eax,
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret
这些参数的哪些表示超级武器呢?
根据上一节的提示,第一个call是获取eax的。而eax就是超级武器编号,那么我们直接修改eax行不行呢?
我们发现,修改eax的只有mov eax,。那我们把ebx+98变成1,得到:
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,

mov edx,
mov ecx,


push 0
push 0
mov ecx,
push 1
call 006CB560
mov eax,1
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret
立刻注入,发现:

此时发现:

又是那个不能用的超级武器。。
那说明没有调整cd
而出现了核弹0:00说明调整的是核弹的cd。。
那肯定是调整cd那个call参数错了。。
上面那个参数忘记改了。。
重写代码,得到:
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,1

mov edx,
mov ecx,


push 0
push 0
mov ecx,
push 1
call 006CB560
mov eax,1
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret
再次注入:

{:301_993:}

不过我们发现一个尴尬的事情,用完之后那个铁幕选项不会消失。。
管它呢,反正我也不追求完美2333
同理,可以得到其他超级武器

因此,我们得到超级武器的注入代码为:
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,2//此处为超级武器编号

mov edx,
mov ecx,


push 0
push 0
mov ecx,
push 1
call 006CB560
mov eax,2//此处为超级武器编号
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret

https://static.52pojie.cn/static/image/hrline/2.gif
到了这里,还有几个人记得住我们的题目?
对,没错,科技全开。。
顾名思义,添加所有能够添加的建造选项。
那肯定是最后一个call的事情了。
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret
我们知道eax是超级武器编号,那么1f是否为类型呢?


我们跟进最后一个增加建造选项的call,发现又是一个大大的switch。

在这里下断点,然后窗口化运行程序,动态调试,当建造选项增加的时候会断下来。
依次造步兵、建筑、坦克,得到:

再看刚刚的代码,1f表示的就是超级武器。



因此,假如我们想要科技全开,首先要做到建筑全开。
然后有个猜想,建筑就不用调cd了吧,都是54下。。
建筑cd相关帖子:

论红色警戒2尤里的复仇如何实现秒建
https://www.52pojie.cn/thread-846492-1-1.html
(出处: 吾爱破解论坛)
那我们直接调用最后一个call
先改个7

pushad
mov ecx,0087f7e8
mov edx,
mov eax,0
push eax
push 7
call 006a6300
popad
retn
提醒一句,前面基地址啊还有字符串的参数该传还要传。。
eax我们先改成0,看看注入后会出现什么。(因为下标一般都从0开始)


然并卵。。
猜想原因:0这个建筑就是盟军电场,因为游戏是美国人做的,美国的建筑 的下标肯定靠前2333
那改成A
pushad
mov ecx,0087f7e8
mov edx,
mov eax,A
push eax
push 7
call 006a6300
popad
retn


精彩!
然后我们把自己的国家换成苏军,依次得到:
0=发电厂
1=盟军矿石精炼厂
2=盟军建造厂
3=盟军兵营
4=沙袋
5=盟军维修厂
6=盟军作5战实验室
7=盟军战车工厂
9=磁能反应炉
A=苏联作战实验室



这要试试到什么年份。。
我怎么知道所有建筑的编号。。
接下来是翻车时间:
——肯定不能这么试试,那我们看看有没有能找到建筑编号的地方,最好就像刚刚那种switch一样
跳转跟过来,得到:

跟进本switch每一个call,得到




最后问了一个红警ini大佬,得到了答案:




因此,可以得到一个简单粗暴的办法:用一个循环来搞定。

2019-5-19:纠正一个错误,上图的je应该写成jnz
这里给出红警大佬所给的全部代码
0=GAPOWR;盟军发电厂
1=GAREFN ;盟军矿厂
2=GAPILE ;盟军兵营
3=GAWEAP ;盟军兵工厂
4=GAAIRC ;盟军空军指挥部
5=AMRADR ;美国空军指挥部--AmericanParaDropSpecial
6=GADEPT ;盟军维修厂
7=GAYARD ;盟军船厂
8=GATECH ;盟军实验室
9=GAROBO; 控制中心 ---
10=GAOREP; 矿石精鍊器
11=GAWALL; 盟军围墙
12=GAPILL; 机枪碉堡---Vulcan2
13=NASAM ;爱国者飞弹 --RedEye2
14=GAGAP ;裂缝产生器
15=ATESLA ;光棱塔----PrismShot / PrismSupport
16=GASPYSAT; 间谍卫星
17=GACNST ;盟军建造场
18=GTGCAN ;法国巨炮  GrandCannonWeapon
19=GACSPH ;超时空传送仪 --- ChronoSphereSpecial
20=GAWEAT ;天气控制器 --- LightningStormSpecial
21=GASAND ;沙袋
22=GAGATE_A; 闸门
23=;===苏军======;
24=NAPOWR; 磁能反应炉
25=NAREFN ;苏军矿厂
26=NAHAND; 苏军兵营
27=NAWEAP; 苏军兵工厂
28=NARADR ;苏军雷达 --- SpyPlaneSpecial
29=NADEPT ;苏军维修厂
30=NAYARD ;苏军造船厂
31=NATECH ;苏军实验室
32=NANRCT ;核子反应堆 --- NukePayload
33=NAINDP ;工业工厂
34=NAWALL ;苏军围墙
35=NABNKR ;战斗碉堡
36=NALASR ;哨戒炮--Vulcan
37=NAFLAK ;防空炮--FlakWeapon
38=TESLA ;磁暴线圈 -- CoilBolt / OPCoilBolt
39=NACNST ;苏军建造厂
40=NAIRON ;铁幕 --- IronCurtainSpecial
41=NAMISL ;核弹发射井 -- NukeSpecial
42=NAPSYB ;心灵信标
43=;===尤里======;
44=YAPOWR ;生化反应炉
45=YAREFN ;奴隶矿厂
46=YABRCK ;尤里兵营
47=YAWEAP ;尤里兵工厂
48=NAPSIS ;心灵感应器 --- PsychicRevealSpecial
49=YAYARD ;尤里船厂
50=YAGRND ;部队回收厂
51=YATECH ;尤里实验室
52=GAFWLL ;尤里围墙
53=NATBNK ;坦克碉堡
54=YAGGUN ;盖特机炮
55=YAPSYT ;心灵控制塔----MultipleMindControlTower
56=NACLON ;复制中心
57=YAGNTC ;基因突变器 --- GeneticConverterSpecial
58=YAPPET ;心灵控制器 --- PsychicDominatorSpecial
59=YACNST ;尤里建造场
60=YAROCK ;不明建筑物
61=YACOMD ;尤里指挥中心
62=;===平======;
63=GASAND;沙墙
64=CAAIRP;科技机场---ParaDropSpecial
65=CAOILD;=科技钻油厂
66=CAPARS01;=艾菲尔铁塔
67=CAEAST02;=尤里雕像----PrismShot
68=CATRAN03;=尤里要塞
69=CAEAST01;=复活岛石像
[步兵类代码]
0=E1;美国大兵
1=E2;苏联动员兵
2=SHK;磁爆步兵
3=ENGINEER;盟军工程师
4=JUMPJET;火箭飞行兵
5=GHOST;海豹部队
6=YURI;尤里
7=IVAN;疯狂伊万
8=DESO;生化步兵
9=DOG;苏联军犬
10=CIV1;平民1
11=CIV2;平民2
12=CIV3;平民3
13=CTECH;技师
14=WEEDGUY;防IE挂载(没用)
15=CLEG;超时空兵团
16=SPY;间谍
17=CCOMAND;超时空突击队
18=PTROOP;伞兵
19=CIVAN;超时空伊万
20=YURIPR;尤里改
21=SNIPE;狙击手
22=COW;奶牛
23=ALL ;鳄鱼
24=TANY;谭雅
25=FLAKT;防空步兵
26=TERROR;恐怖分子
27=SENGINEER;苏联工程师
28=ADOG;盟军军犬
29=VLADIMIR;VLADIMIR
30=PENTGEN;PENTGEN
31=PRES;总统
32=SSRV;终级保镖
33=CIVA;德克萨斯平民A
34=CIVB;德克萨斯平民B
35=CIVC;德克萨斯平民C
36=CIVBBP;棒员运动员
37=CIVBFM;海滩肥男
38=CIVBF;海滩女
39=CIVBTM;海滩瘦男
40=CIVSFM;雪中肥男
41=CIVSF;雪中肥女
42=CIVSTM;雪中瘦男
43=POLARB;北极熊
44=JOSH;猴子
45=YENGINEER;尤里工程师
46=GGI;重装大兵
47=INIT;尤里新兵
48=BORIS;鲍裏斯
49=BRUTE;狂兽人
50=VIRUS;病毒狙击手
51=CLNT;快枪手
52=ARND;终结者
53=STLN;蓝波
54=CAML;骆驼
55=EINS;爱因斯坦
56=MUMY;木乃伊
57=RMNV;洛马诺夫总理
58=LUNR;登月火箭兵
59=DNOA;暴龙
60=DNOB;暴龙
61=SLAV;奴隶矿工
62=WWLF;(木乃伊)
63=YDOG;尤里军犬
64=YADOG;尤里军犬
65=CIVFM;海滩肥女
[战车类代码]
0=AMCV;盟军移动基地车
1=HARV;尤里奴隶采矿车
2=APOC;天启坦克
3=HTNK;犀牛坦克
4=SAPC;装甲运输船
5=CAR;汽车
6=BUS;校车
7=WINI;wini
8=PICK;小货车
9=MTNK;灰熊坦克
10=HORV;武装采矿车
11=TRUCKA;货车A
12=TRUCKB;货车B
13=CARRIER;航空母舰
14=V3;V3火箭车
15=ZEP;基洛夫空艇
16=DRON;恐怖机器人
17=HTK;防空履带车
18=DEST;驱逐舰
19=SUB;飓风级战舰
20=AEGIS;宙斯盾战舰
21=LCRF;盟军运输船
22=DRED;无畏级战舰
23=SHAD;夜鹰直升机
24=SQD;乌贼
25=DLPH;海豚
26=SMCV;苏联移动机基车
27=TNKD;坦克杀手
28=HOWI;榴弹炮
29=TTNK;磁爆坦克
30=LTNK;轻坦克
31=CMON;超时空采矿车(不回)
32=CMIN;超时空采矿车
33=SREF;光棱坦克
34=XCOMET;位置标定器
35=HYD;海蝎
36=MGTK;幻影坦克
37=FV;多功能步兵车
38=VLAD;维拉迪摩指挥舰
39=DTRUCK;自爆卡车
40=PROPA;宣传车
41=CONA;挖掘机
42=COP;cop
43=EUROC;欧洲汽车
44=LIMO;豪华轿车
45=STANG;小轿车
46=SUVB;小汽车A
47=SUVW;小汽车B
48=TAXI;出租车
49=PTRUCK;货车C
50=CRUISE;巡游船
51=TUG;拖船
52=CDEST;海岸巡逻船
53=YHVR;尤里气垫船
54=PCV;尤里机动基地车
55=SMIN;尤里奴隶矿厂
56=SMON;超时空采矿车
57=YCAB;黄色计程车
58=YTNK;盖特炮坦克
59=BFRT;战斗要塞
60=TELE;磁电坦克
61=CAOS;神经突袭车
62=DDBX;巴士
63=BCAB;黑色计程车
64=BSUB;雷鸣潜艇
65=SCHP;武装直升机
66=JEEP;卡车
67=MIND;精神控制车
68=DISK;镭射幽浮
69=UTNK;激光坦克
70=ROBO;遥控坦克
71=SCHD;武装直升机
72=DOLY;摄影车
73=CBLC;电车
74=FTRK;救火车
75=AMBU;救护车
76=CIVP;民航机
77=V3V3;V3火箭车
78=TURCKB;货车B
[飞机类代码]
0=APACHE;阿帕奇
1=ORCA;入侵者战机
2=HORNET;大黄蜂
3=V3ROCKET;V3火箭
4=ASW;舰载反潜机
5=DMISL;无畏级导弹
6=PDPLANE;运输机
7=BEAG;黑鹰战机
8=BPLN;米格战机(鲍里斯的飞机)
9=SPYP;侦察机
10=CMISL;雷鸣导弹
他怎么搞的我就不知道了。。我只在ini里翻出来了建筑编号。。
再提醒一句,这个是10进制,代码注入的时候是16进制

如果你担心不够保险,怕eax=f的时候没跳出去,然后就无线循环了,还可以把je改成ja。。
同理,对于小兵、坦克车的科技全开也是如此。。
我没去翻小兵,坦克车的ini,不知道从0循环到几。。大家自己写就行了


这个代码的好处就是,不会像地图全开那样注入两次程序就堆栈爆炸gg了。。所以可以随便找个地方写下来。
然后要注意的是,千万千万不能写在NewConstructionOptions里面,否则会无限递归。
效果图:


奇葩的事情出现了:小兵和坦克出现了一堆我不认识的什么乱七八糟的东西。。


https://static.52pojie.cn/static/image/hrline/2.gif
写文章不容易求加分点赞..

科技全开在红色警戒战网对战可用,所以请不要用于商业用途(上次发的居然有人用于商业用途,一个外挂100块钱,是谁我就不点名说了)。用于商业用途请自己承担所有责任。
从本论坛下载的内容仅供交流学习,请在下载后24小时内删除,请勿用于商业用途,否则后果自负



https://static.52pojie.cn/static/image/hrline/2.gif

等等,你以为这样就结束了吗?
你以为这种暴力循环就能完美解决科技全开问题了吗?
不!真正的实现方式在下面:


调用添加建造函数的实现方式只是一种。那调用添加建造函数的函数是谁呢?
我们下断点,建造任意能提升科技等级的建筑,断点断下,回到上一层,得到:



我们发现无论是28号车船,还是10号小兵,还是7号建筑,都有着相似的结构——判断建筑是否可用,添加建造选项,删除建造选项
(5-20添加:28号,10号,7号指的是16进制)


那我们是否可以修改判断建筑是否可用的返回值来实现科技全开呢?
我们下断点,动态跟踪,然后ctrl+f9到段尾,发现是retn c,而eax返回值是0.也就相当于c语言里面的return 0。那是不是无法建造就返回0呢?
我们把他修改成0,试试


004F7870      B8 00000000   mov eax,0x0                              ;判断建造选项是否可用call
004F7875      C2 0C00       retn 0xC
004F7878|.55            push ebp
004F7879|.8BE9          mov ebp,ecx
004F787B|.56            push esi




那添加建造选项肯定就是-1或者1咯哈哈哈
当x=-1时(啊呸,什么x,是eax)

当x=+1时

发现建筑可用,但是造车场之后车造不出来了。。
同理,x=2时防御建筑可用,但是兵造不出来了。
难道不同的返回值对应不同的建造类别??
用ida f5看一下,发现好像确实是有不同返回值
       return 0;
      if ( v61 <= 0 )
      return 1;
LABEL_189:
      v63 = (*(int (__thiscall **)(_DWORD))(*(_DWORD *)a2 + 64))(a2);
      if ( sub_49FAE0(v63) < *(_DWORD *)(a2 + 952) )
      return 1;
      if ( !a4 )
      return -1;
      v42 = 0;
      if ( vA83E40 <= 0 )
      return -1;
      v64 = vA83E34;
      break;
}
while ( *(void **)(*(_DWORD *)(v64 + 4 * v42) + 108) != v4 )
{
LABEL_197:
    ++v42;
    if ( v42 >= vA83E40 )
      return -1;
}
if ( !((int (*)(void))sub_4CA160)()
    || (v65 = sub_4CA160(*(_DWORD *)(vA83E34 + 4 * v42)), (*(int (__thiscall **)(int))(*(_DWORD *)v65 + 132))(v65) != a2) )
{
    v64 = vA83E34;
    goto LABEL_197;
}
LABEL_199:
if ( *(_DWORD *)(vA83E34 + 4 * v42) )
    return 1;
return -1;
}
那这么搞的话修改起来又有2种思路,一种是造不同的类型,然后看看他是从哪个return出去的,在return 之前把返回值eax修改了。。
我没采用这个方法,因为他的retn和下面的case都连在一起了,修改起来很麻烦,还要写跳转。。

如上图,retn下面就是下一个case。直接改会把下面内容覆盖掉,所以要写跳转。那光返回0的情况就2重,这要写多少个跳转。。太麻烦了


第二种办法是在call外面直接mov eax,对应值。。
还是比较麻烦,一是因为

这也太多了吧。。。
二是因为涉及到一个堆栈平衡的问题,还要把堆栈pop出去,寄存器参数改回去
不过我选的第二种。。



https://static.52pojie.cn/static/image/hrline/2.gif
你以为又结束了?
没错,我也觉得结束了。我修改了10个调用这个函数的地址,基本可以科技全开了
但是修改到第十几个的时候,发现了游戏消息循环的下一层call也调用了这个(这个位置我之前做过标记,所以一眼就能看出来)这是一个令人振奋的消息,因为修改这里很可能就相当于修改了全部

这是一个很大的jnz,直接跳过了很多内容,这些内容通过分析,发现居然是循环删除不可建造的!!
006AA790|> \8B0D 4C3DA800 |mov ecx,dword ptr ds:
006AA796|.8B06          |mov eax,dword ptr ds:
006AA798|.3B81 64020000 |cmp eax,dword ptr ds:
006AA79E|.73 16         |jnb short gamemd.006AA7B6
006AA7A0|.8B89 58020000 |mov ecx,dword ptr ds:
006AA7A6|.8B1481      |mov edx,dword ptr ds:
006AA7A9|.33C0          |xor eax,eax                           ;kernel32.BaseThreadInitThunk
006AA7AB|.8A42 6D       |mov al,byte ptr ds:
006AA7AE|.3BC7          |cmp eax,edi
006AA7B0|.0F85 B2020000 |jnz gamemd.006AAA68
006AA7B6|>8B4424 2C   |mov eax,dword ptr ss:
006AA7BA|.3938          |cmp dword ptr ds:,edi
006AA7BC|.0F84 BA000000 |je gamemd.006AA87C
006AA7C2|.8B4C24 18   |mov ecx,dword ptr ss:
006AA7C6|.33D2          |xor edx,edx                           ;gamemd.<ModuleEntryPoint>
006AA7C8|.8A93 CE0C0000 |mov dl,byte ptr ds:
006AA7CE|.8B01          |mov eax,dword ptr ds:
006AA7D0|.8B0E          |mov ecx,dword ptr ds:
006AA7D2|.52            |push edx                              ;gamemd.<ModuleEntryPoint>
006AA7D3|.51            |push ecx
006AA7D4|.50            |push eax                              ;kernel32.BaseThreadInitThunk
006AA7D5|.A1 4C3DA800   |mov eax,dword ptr ds:
006AA7DA|.6A 10         |push 0x10
006AA7DC|.8B48 30       |mov ecx,dword ptr ds:
006AA7DF|.51            |push ecx
006AA7E0|.8D8C24 880000>|lea ecx,dword ptr ss:
006AA7E7|.E8 84C1E1FF   |call gamemd.004C6970
006AA7EC|.813D C802A800>|cmp dword ptr ds:,0x80
006AA7F6|.7D 53         |jge short gamemd.006AA84B
006AA7F8|.8B0D D002A800 |mov ecx,dword ptr ds:
006AA7FE|.8BF0          |mov esi,eax                           ;kernel32.BaseThreadInitThunk
006AA800|.8D14C9      |lea edx,dword ptr ds:
006AA803|.8D0C91      |lea ecx,dword ptr ds:
006AA806|.8DBC49 D402A8>|lea edi,dword ptr ds:[ecx+ecx*2+0xA802D>
006AA80D|.B9 1B000000   |mov ecx,0x1B
006AA812|.F3:A5         |rep movs dword ptr es:,dword ptr d>
006AA814|.66:A5         |movs word ptr es:,word ptr ds:[esi>
006AA816|.A4            |movs byte ptr es:,byte ptr ds:[esi>
006AA817|.FF15 30157E00 |call dword ptr ds:[<&WINMM.timeGetTime>>;winmm.timeGetTime
006AA81D|.8B0D D002A800 |mov ecx,dword ptr ds:
006AA823|.8B7424 10   |mov esi,dword ptr ss:
006AA827|.89048D 543AA8>|mov dword ptr ds:,eax   ;kernel32.BaseThreadInitThunk
006AA82E|.8B15 D002A800 |mov edx,dword ptr ds:
006AA834|.A1 C802A800   |mov eax,dword ptr ds:
006AA839|.42            |inc edx                                 ;gamemd.<ModuleEntryPoint>
006AA83A|.83E2 7F       |and edx,0x7F
006AA83D|.40            |inc eax                                 ;kernel32.BaseThreadInitThunk
006AA83E|.8915 D002A800 |mov dword ptr ds:,edx         ;gamemd.<ModuleEntryPoint>
006AA844|.A3 C802A800   |mov dword ptr ds:,eax         ;kernel32.BaseThreadInitThunk
006AA849|.33FF          |xor edi,edi
006AA84B|>8B4424 18   |mov eax,dword ptr ss:
006AA84F|.8B00          |mov eax,dword ptr ds:
006AA851|.83F8 07       |cmp eax,0x7
006AA854|.74 05         |je short gamemd.006AA85B
006AA856|.83F8 06       |cmp eax,0x6
006AA859|.75 21         |jnz short gamemd.006AA87C
006AA85B|>57            |push edi
006AA85C|.B9 E8F78700   |mov ecx,gamemd.0087F7E8
006AA861|.893D 8C098800 |mov dword ptr ds:,edi
006AA867|.893D 90098800 |mov dword ptr ds:,edi
006AA86D|.C705 94098800>|mov dword ptr ds:,-0x1
006AA877|.E8 74E3DFFF   |call gamemd.004A8BF0
006AA87C|>3BDF          |cmp ebx,edi
006AA87E|.0F84 AD000000 |je gamemd.006AA931
006AA884|.8A8B CE0C0000 |mov cl,byte ptr ds:
006AA88A|.8B13          |mov edx,dword ptr ds:
006AA88C|.57            |push edi
006AA88D|.51            |push ecx
006AA88E|.8BCB          |mov ecx,ebx
006AA890|.FF52 2C       |call dword ptr ds:
006AA893|.8B0D 4C3DA800 |mov ecx,dword ptr ds:
006AA899|.50            |push eax                              ;kernel32.BaseThreadInitThunk
006AA89A|.E8 715CE5FF   |call gamemd.00500510
006AA89F|.85C0          |test eax,eax                            ;kernel32.BaseThreadInitThunk
006AA8A1|.0F84 8A000000 |je gamemd.006AA931
006AA8A7|.8B0E          |mov ecx,dword ptr ds:
006AA8A9|.8B5424 18   |mov edx,dword ptr ss:
006AA8AD|.33C0          |xor eax,eax                           ;kernel32.BaseThreadInitThunk
006AA8AF|.8A83 CE0C0000 |mov al,byte ptr ds:
006AA8B5|.50            |push eax                              ;kernel32.BaseThreadInitThunk
006AA8B6|.8B02          |mov eax,dword ptr ds:
006AA8B8|.51            |push ecx
006AA8B9|.8B0D 4C3DA800 |mov ecx,dword ptr ds:
006AA8BF|.50            |push eax                              ;kernel32.BaseThreadInitThunk
006AA8C0|.6A 2E         |push 0x2E
006AA8C2|.8B51 30       |mov edx,dword ptr ds:
006AA8C5|.8D8C24 F40000>|lea ecx,dword ptr ss:
006AA8CC|.52            |push edx                              ;gamemd.<ModuleEntryPoint>
006AA8CD|.E8 9EC0E1FF   |call gamemd.004C6970
006AA8D2|.813D C802A800>|cmp dword ptr ds:,0x80
006AA8DC|.7D 53         |jge short gamemd.006AA931
006AA8DE|.8B0D D002A800 |mov ecx,dword ptr ds:
006AA8E4|.8BF0          |mov esi,eax                           ;kernel32.BaseThreadInitThunk
006AA8E6|.8D14C9      |lea edx,dword ptr ds:
006AA8E9|.8D0C91      |lea ecx,dword ptr ds:
006AA8EC|.8DBC49 D402A8>|lea edi,dword ptr ds:[ecx+ecx*2+0xA802D>
006AA8F3|.B9 1B000000   |mov ecx,0x1B
006AA8F8|.F3:A5         |rep movs dword ptr es:,dword ptr d>
006AA8FA|.66:A5         |movs word ptr es:,word ptr ds:[esi>
006AA8FC|.A4            |movs byte ptr es:,byte ptr ds:[esi>
006AA8FD|.FF15 30157E00 |call dword ptr ds:[<&WINMM.timeGetTime>>;winmm.timeGetTime
006AA903|.8B0D D002A800 |mov ecx,dword ptr ds:
006AA909|.8B7424 10   |mov esi,dword ptr ss:
006AA90D|.89048D 543AA8>|mov dword ptr ds:,eax   ;kernel32.BaseThreadInitThunk
006AA914|.8B15 D002A800 |mov edx,dword ptr ds:
006AA91A|.A1 C802A800   |mov eax,dword ptr ds:
006AA91F|.42            |inc edx                                 ;gamemd.<ModuleEntryPoint>
006AA920|.83E2 7F       |and edx,0x7F
006AA923|.40            |inc eax                                 ;kernel32.BaseThreadInitThunk
006AA924|.8915 D002A800 |mov dword ptr ds:,edx         ;gamemd.<ModuleEntryPoint>
006AA92A|.A3 C802A800   |mov dword ptr ds:,eax         ;kernel32.BaseThreadInitThunk
006AA92F|.33FF          |xor edi,edi
006AA931|>8B4C24 30   |mov ecx,dword ptr ss:
006AA935|.3BCF          |cmp ecx,edi
006AA937|.7E 64         |jle short gamemd.006AA99D
006AA939|.8B4424 1C   |mov eax,dword ptr ss:
006AA93D|.8BD1          |mov edx,ecx
006AA93F|>8B08          |/mov ecx,dword ptr ds:
006AA941|.8B1E          ||mov ebx,dword ptr ds:
006AA943|.3BCB          ||cmp ecx,ebx
006AA945|.75 50         ||jnz short gamemd.006AA997
006AA947|.8B48 04       ||mov ecx,dword ptr ds:
006AA94A|.8B5E 04       ||mov ebx,dword ptr ds:
006AA94D|.3BCB          ||cmp ecx,ebx
006AA94F|.75 46         ||jnz short gamemd.006AA997
006AA951|.8B0D 84EDA800 ||mov ecx,dword ptr ds:
006AA957|.897C24 34   ||mov dword ptr ss:,edi
006AA95B|.897C24 38   ||mov dword ptr ss:,edi
006AA95F|.897C24 3C   ||mov dword ptr ss:,edi
006AA963|.897C24 40   ||mov dword ptr ss:,edi
006AA967|.897C24 48   ||mov dword ptr ss:,edi
006AA96B|.894C24 50   ||mov dword ptr ss:,ecx
006AA96F|.897C24 58   ||mov dword ptr ss:,edi
006AA973|.897C24 5C   ||mov dword ptr ss:,edi
006AA977|.B9 0D000000   ||mov ecx,0xD
006AA97C|.8D7424 34   ||lea esi,dword ptr ss:
006AA980|.8BF8          ||mov edi,eax                            ;kernel32.BaseThreadInitThunk
006AA982|.C64424 4C 00||mov byte ptr ss:,0x0
006AA987|.C74424 60 010>||mov dword ptr ss:,0x1
006AA98F|.F3:A5         ||rep movs dword ptr es:,dword ptr >
006AA991|.8B7424 10   ||mov esi,dword ptr ss:
006AA995|.33FF          ||xor edi,edi
006AA997|>83C0 34       ||add eax,0x34
006AA99A|.4A            ||dec edx                              ;gamemd.<ModuleEntryPoint>
006AA99B|.^ 75 A2         |\jnz short gamemd.006AA93F
006AA99D|>8B45 54       |mov eax,
006AA9A0|.83F8 01       |cmp eax,0x1
006AA9A3|.7E 29         |jle short gamemd.006AA9CE
006AA9A5|.8B4C24 28   |mov ecx,dword ptr ss:
006AA9A9|.8D50 FF       |lea edx,dword ptr ds:
006AA9AC|.3BCA          |cmp ecx,edx                           ;gamemd.<ModuleEntryPoint>
006AA9AE|.7D 1E         |jge short gamemd.006AA9CE
006AA9B0|.8D0C40      |lea ecx,dword ptr ds:
006AA9B3|.8D1488      |lea edx,dword ptr ds:
006AA9B6|.8B4424 24   |mov eax,dword ptr ss:
006AA9BA|.C1E2 02       |shl edx,0x2
006AA9BD|.2BD0          |sub edx,eax                           ;kernel32.BaseThreadInitThunk
006AA9BF|.8B4424 20   |mov eax,dword ptr ss:
006AA9C3|.52            |push edx                              ;gamemd.<ModuleEntryPoint>
006AA9C4|.50            |push eax                              ;kernel32.BaseThreadInitThunk
006AA9C5|.56            |push esi
006AA9C6|.E8 C5F61100   |call gamemd.007CA090
006AA9CB|.83C4 0C       |add esp,0xC
006AA9CE|>8B45 54       |mov eax,
006AA9D1|.C64424 16 01|mov byte ptr ss:,0x1
006AA9D6|.48            |dec eax                                 ;kernel32.BaseThreadInitThunk
006AA9D7|.C64424 17 01|mov byte ptr ss:,0x1
006AA9DC|.8D0C40      |lea ecx,dword ptr ds:
006AA9DF|.8D1488      |lea edx,dword ptr ds:
006AA9E2|.8D4C95 00   |lea ecx,dword ptr ss:
006AA9E6|.8D5440 06   |lea edx,dword ptr ds:
006AA9EA|.8979 64       |mov dword ptr ds:,edi
006AA9ED|.8979 58       |mov dword ptr ds:,edi
006AA9F0|.8D4490 02   |lea eax,dword ptr ds:
006AA9F4|.8979 5C       |mov dword ptr ds:,edi
006AA9F7|.8979 60       |mov dword ptr ds:,edi
006AA9FA|.8D59 74       |lea ebx,dword ptr ds:
006AA9FD|.897C85 00   |mov dword ptr ss:,edi
006AAA01|.8979 6C       |mov dword ptr ds:,edi
006AAA04|.A1 84EDA800   |mov eax,dword ptr ds:
006AAA09|.33D2          |xor edx,edx                           ;gamemd.<ModuleEntryPoint>
006AAA0B|.8903          |mov dword ptr ds:,eax            ;kernel32.BaseThreadInitThunk
006AAA0D|.8B4424 6C   |mov eax,dword ptr ss:
006AAA11|.89B9 80000000 |mov dword ptr ds:,edi
006AAA17|.8943 04       |mov dword ptr ds:,eax          ;kernel32.BaseThreadInitThunk
006AAA1A|.8953 08       |mov dword ptr ds:,edx          ;gamemd.<ModuleEntryPoint>
006AAA1D|.8B5C24 28   |mov ebx,dword ptr ss:
006AAA21|.8B5424 24   |mov edx,dword ptr ss:
006AAA25|.89B9 88000000 |mov dword ptr ds:,edi
006AAA2B|.8B45 54       |mov eax,
006AAA2E|.B9 34000000   |mov ecx,0x34
006AAA33|.48            |dec eax                                 ;kernel32.BaseThreadInitThunk
006AAA34|.4B            |dec ebx
006AAA35|.2BD1          |sub edx,ecx
006AAA37|.8945 54       |mov ,eax                        ;kernel32.BaseThreadInitThunk
006AAA3A|.8B4424 2C   |mov eax,dword ptr ss:
006AAA3E|.895C24 28   |mov dword ptr ss:,ebx
006AAA42|.8B5C24 18   |mov ebx,dword ptr ss:
006AAA46|.895424 24   |mov dword ptr ss:,edx         ;gamemd.<ModuleEntryPoint>
006AAA4A|.8B5424 20   |mov edx,dword ptr ss:
006AAA4E|.2BC1          |sub eax,ecx
006AAA50|.2BD9          |sub ebx,ecx
006AAA52|.2BD1          |sub edx,ecx
006AAA54|.C645 3C 01    |mov byte ptr ss:,0x1
006AAA58|.894424 2C   |mov dword ptr ss:,eax         ;kernel32.BaseThreadInitThunk
006AAA5C|.895C24 18   |mov dword ptr ss:,ebx
006AAA60|.895424 20   |mov dword ptr ss:,edx         ;gamemd.<ModuleEntryPoint>
006AAA64|.2BF1          |sub esi,ecx


!!!!!
靠,为什么我一开始分析的时候想不到从游戏主循环这里下手???一层就能分析到这!!
立刻jnz改成jmp,完美了!只需要科技全开一次,本次游戏就可以永久保留科技等级了!!!



https://static.52pojie.cn/static/image/hrline/2.gif
你以为这就结束了吗??
这还真就结束了。。



科技全开在红色警戒战网对战可用,所以请不要用于商业用途(上次发的居然有人用于商业用途,一个外挂100块钱,是谁我就不点名说了)。用于商业用途请自己承担所有责任。
从本论坛下载的内容仅供交流学习,请在下载后24小时内删除,请勿用于商业用途,否则后果自负
相关视频:https://space.bilibili.com/251535501

bbsokok 发表于 2019-5-19 12:05

有下载直接用的吗?

人善最美丽 发表于 2019-5-20 15:35

xwk 发表于 2019-5-19 18:39
单机模式下,只有玩家有超武,电脑没有

你怕是没有玩过红警吧~~

KaQqi 发表于 2019-5-19 11:26

本帖最后由 KaQqi 于 2019-5-21 18:05 编辑

从本论坛下载的内容仅供交流学习,请在下载后24小时内删除,请勿用于商业用途,否则后果自负


建筑物代码相关资料我会以其他形式上传

KaQqi 发表于 2019-5-19 11:57

苏紫方璇 发表于 2019-5-19 11:47
膜拜大神,大神好厉害,看完大神的帖子终于可以完爆1v7超武冷酷了

表示我不开挂就能1v7冷酷23333

shqvc 发表于 2019-5-19 20:02

KaQqi 发表于 2019-5-19 11:57
表示我不开挂就能1v7冷酷23333

我除了有桥的可以断桥来做的基本上玩不过1V7把你改的这个发上来我们也玩一下呗

苏紫方璇 发表于 2019-5-19 11:47

膜拜大神,大神好厉害,看完大神的帖子终于可以完爆1v7超武冷酷了

zhaotianss 发表于 2019-5-19 11:39

单机是不是可以1挑8了

涛之雨 发表于 2019-5-19 12:02

KaQqi 发表于 2019-5-19 11:26
从本论坛下载的内容仅供交流学习,请在下载后24小时内删除,请勿用于商业用途,否则后果自负

我好想明白有什么深层含义了。{:17_1068:}
我是不是知道的太多了?{:17_1062:}
大神给点封口费吧。{:17_1074:}

KaQqi 发表于 2019-5-19 12:06

bbsokok 发表于 2019-5-19 12:05
有下载直接用的吗?

没有了。。上次外挂泛滥了,本来ra2ol平台没有外挂。。

bbsokok 发表于 2019-5-19 12:08

可惜了,我就喜欢单机玩而已

涛之雨 发表于 2019-5-19 12:17

KaQqi 发表于 2019-5-19 12:06
没有了。。上次外挂泛滥了,本来ra2ol平台没有外挂。。

。。。我寄几和寄几玩是吧。。。。
楼主可真皮。。。。
攻防转换。。好快啊。。。{:17_1089:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 红色警戒2尤里的复仇科技全开