吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 42721|回复: 201
收起左侧

[原创] 红色警戒实现无限核弹的艰辛之路

    [复制链接]
KaQqi 发表于 2019-4-20 19:59
本帖最后由 KaQqi 于 2019-4-29 20:32 编辑

这个思路从寒假就提出了,只是当时一直没有空实现。这个周末有空了,就想试试,顺便看看联机能不能用。
待会可以又水一期视频了。。


视频版本地址:https://www.bilibili.com/video/av49956719/
下面开始正题









根据之前的成果,通过搜索字符串定位到关键部分。
TIM截图20190420192317.png
之前已经有过注入箱子实现无限钱和地图全开的经验了(详见前贴),所以知道第一个call仅仅是一个提示而已,没什么用。。于是往下跟踪
TIM截图20190420192616.png
这部分代码没有多少内容,一共就3个call。依次看了看,通过字符串可以确定每一个call的用途。
TIM截图20190420192725.png
第三个call之前做科技全开的时候提到过。。是添加建造选项的。于是第一反应就是用@苏紫方璇 大神的注入器调用这个call。。
跟进call发现,这个call需要2个堆栈参数,一个寄存器参数
TIM截图20190420192935.png
TIM截图20190420192925.png
于是现在的任务就是找一下ecx和eax的值哪来的。。
向上回溯,得到

00482D44  |.  B9 E8F78700   mov ecx,gamemd.0087F7E8
对于eax,则需要动态跟踪。
回溯发现
00482D3E  |.  8B83 98000000 mov eax,dword ptr ds:[ebx+0x98]
那么ebx又是从哪来的呢?
回溯发现
00482CC5  |.  8BD8          mov ebx,eax                              ;  kernel32.BaseThreadInitThunk
额,那么此时eax又是从哪来的呢?
代码不多,果断下断点动态跟踪。发现第一个call就是用来获得eax的。。
[Asm] 纯文本查看 复制代码
00482CB8  |.  B9 14000000   mov ecx,0x14
00482CBD  |.  E8 EEC12400   call gamemd.006CEEB0                     ;  得到eax



这样,三个参数就集齐了。立刻打开代码注入器
[Asm] 纯文本查看 复制代码
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,[ebx+98]
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret

TIM截图20190420193703.png
@610100 TIM图片20190420193751.png 要这核弹有个屁用,不能用

这估计就是倒数第二个call作的怪了。
点进去一看有点眼熟,再跟踪一层突然想起在无线超武那一节研究过这里
TIM截图20190420193940.png
TIM截图20190420193934.png
跟进分析
发现有3个堆栈参数,一个寄存器参数。
[Asm] 纯文本查看 复制代码
00482D17  |.  6A 00         push 0x0
00482D19  |.  6A 00         push 0x0
00482D1B  |.  8B0C81        mov ecx,dword ptr ds:[ecx+eax*4]         ;  ecx来源
00482D1E  |.  6A 01         push 0x1
00482D20  |.  E8 3B882400   call gamemd.006CB560                     ;  调整cd
00482D25  |.  84C0          test al,al


然后向上回溯找ecx。发现ecx竟然是由一个堆栈地址赋值的。。
00482D13  |.  8B4C24 3C     mov ecx,dword ptr ss:[esp+0x3C]          ;  ntdll.7701E115
于是从头开始往下跟踪,盯着第15行什么时候变成09xxxxxxx。。跟踪了一个小时都没发现这个堆栈地址从哪付的值。定睛一看,诶
TIM图片20190420194338.png
610:这tmd不是esp+3c吗。。
00482CE3  |.  895424 3C     mov dword ptr ss:[esp+0x3C],edx          ;  edx给ecx赋值
往上回溯分析,看看谁给edx付的值。
00482CDD  |.  8B92 58020000 mov edx,dword ptr ds:[edx+0x258]         ;  edx+258给edx赋值
继续跟踪
00482CC9  |.  8B91 1C020000 mov edx,dword ptr ds:[ecx+0x21C]         ;  ecx+21c给edx赋值
再继续
00482CC2  |.  8B4D 08       mov ecx,[arg.1]                          ;  把arg1给ecx
arg1是个眼熟的东西。。之前两次使用代码注入让我知道了他可以是基地址。于是果断写代码
根据这个分析
[Asm] 纯文本查看 复制代码
00482CA1  |> \0FBF4E 26     movsx ecx,word ptr ds:[esi+0x26]
00482CA5  |.  0FBF56 24     movsx edx,word ptr ds:[esi+0x24]
00482CA9  |.  51            push ecx
00482CAA  |.  52            push edx                                 ;  gamemd.<ModuleEntryPoint>
00482CAB  |.  68 F0CE8100   push gamemd.0081CEF0                     ;  Crate at %d,%d contains ICBM\n
00482CB0  |.  E8 2B3CF8FF   call gamemd.004068E0
00482CB5  |.  83C4 0C       add esp,0xC
00482CB8  |.  B9 14000000   mov ecx,0x14
00482CBD  |.  E8 EEC12400   call gamemd.006CEEB0                     ;  得到eax
00482CC2  |.  8B4D 08       mov ecx,[arg.1]                          ;  把arg1给ecx
00482CC5  |.  8BD8          mov ebx,eax                              ;  kernel32.BaseThreadInitThunk
00482CC7  |.  33C0          xor eax,eax                              ;  kernel32.BaseThreadInitThunk
00482CC9  |.  8B91 1C020000 mov edx,dword ptr ds:[ecx+0x21C]         ;  ecx+21c给edx赋值
00482CCF  |.  8B8A 64020000 mov ecx,dword ptr ds:[edx+0x264]         ;  edx+264
00482CD5  |.  85C9          test ecx,ecx
00482CD7  |.  0F8E 18060000 jle gamemd.004832F5
00482CDD  |.  8B92 58020000 mov edx,dword ptr ds:[edx+0x258]         ;  edx+258给edx赋值
00482CE3  |.  895424 3C     mov dword ptr ss:[esp+0x3C],edx          ;  edx给ecx赋值
00482CE7  |.  8BFA          mov edi,edx                              ;  gamemd.<ModuleEntryPoint>
00482CE9  |>  8B17          /mov edx,dword ptr ds:[edi]
00482CEB  |.  8B52 28       |mov edx,dword ptr ds:[edx+0x28]         ;  <&KERNEL32.GetVersion>
00482CEE  |.  83BA B4000000>|cmp dword ptr ds:[edx+0xB4],0x0
00482CF5  |.  74 0D         |je short gamemd.00482D04
00482CF7  |.  40            |inc eax                                 ;  kernel32.BaseThreadInitThunk
00482CF8  |.  83C7 04       |add edi,0x4
00482CFB  |.  3BC1          |cmp eax,ecx
00482CFD  |.^ 7C EA         \jl short gamemd.00482CE9
00482CFF  |.  E9 F1050000   jmp gamemd.004832F5
00482D04  |>  83F8 FF       cmp eax,-0x1
00482D07  |.  0F84 E8050000 je gamemd.004832F5
00482D0D  |.  8B83 98000000 mov eax,dword ptr ds:[ebx+0x98]
00482D13  |.  8B4C24 3C     mov ecx,dword ptr ss:[esp+0x3C]          ;  ntdll.7701E115
00482D17  |.  6A 00         push 0x0
00482D19  |.  6A 00         push 0x0
00482D1B  |.  8B0C81        mov ecx,dword ptr ds:[ecx+eax*4]         ;  ecx来源
00482D1E  |.  6A 01         push 0x1
00482D20  |.  E8 3B882400   call gamemd.006CB560                     ;  调整cd
得到

[Asm] 纯文本查看 复制代码
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,[ebx+98]

mov edx,[00a83d4c]
mov ecx,[edx+258]
mov ecx,dword ptr ds:[edx+0x264]

push 0
push 0
mov ecx,[ecx+eax*4]
push 1
call 006CB560
mov eax,[ebx+98]
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret

写完了果断注入,注入了果断报错。
TIM截图20190420194854.png
TIM图片20190420195008.jpg
我哪写错了,不是逐句写的吗
610:我觉得我们不如去搞比利
TIM图片20190420195121.png
于是不得已请教了szfx大神,szfx大神给出了调试注入器的办法。
1.用一个od调试注入器,下 kernel32.CreateRemoteThread 的断点
2.断下后得到地址,在游戏od里跟踪这个地址
TIM图片20190420195328.png
3.进入,下断,然后让注入器od运行起来。
TIM图片20190420195425.png
然后走着走着发现,走过一个mov居然崩溃了。。

走过mov还能崩溃?定睛一看,发现崩溃的原因是后面的地址不存在。
仔细检查一番,发现mov ecx,dword ptr ds:[edx+0x264]这一行是多余的,因为他既不影响下面的edx的取值,从而影响最终ecx的取值、还会影响ecx本身的取值,导致程序gg

最终写出代码注入的代码
[Asm] 纯文本查看 复制代码
pushad
mov ecx,0x14
call 006ceeb0
mov ebx,eax
mov eax,[ebx+98]

mov edx,[00a83d4c]
mov ecx,[edx+258]


push 0
push 0
mov ecx,[ecx+eax*4]
push 1
call 006CB560
mov eax,[ebx+98]
mov ecx,0087f7e8
push eax
push 1f
call 006a6300
popad
ret

by KaQqi 20190420

ps:对战注入这个拿这个炸人真爽

如果需要的话,可以在b站发一下过程视频。风格和上次地图全开一样,不是为了直接得出答案,而是用来幽默的逆向(呸,是为了哗众取宠),积累逆向经验(呸,是播放量),增加收货(呸,是粉丝量)

我太菜了,搞了一个下午。。

视频版本地址:https://www.bilibili.com/video/av49956719/
TIM图片20190420195425.png

免费评分

参与人数 59威望 +2 吾爱币 +63 热心值 +55 收起 理由
扑街卖菠菜 + 1 我很赞同!
黄昏末日 + 1 + 1 热心回复!
爱是武城 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
无名i + 1 我很赞同!
gx14799612075 + 1 + 1 用心讨论,共获提升!
k123258 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Lifetimer + 1 我很赞同!
lanif + 1 + 1 我很赞同!
18323874251 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
轩辕忆苦 + 1 + 1 谢谢@Thanks!
庆少 + 1 + 1 超级大神啊
HYQL + 1 + 1 热心回复!
abzy01 + 1 + 1 谢谢@Thanks!
淡淡不揩油i + 1 + 1 谢谢@Thanks!
韩非文 + 1 无限核弹,爽,厉害
cocococ + 1 + 1 用心讨论,共获提升!
lyslxx + 1 + 1 我很赞同!
Hmily + 2 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
heroes52 + 1 + 1 谢谢@Thanks!
wenyuanzh + 1 我很赞同!
卡拉肖克倩 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
张国荣Leslie + 1 + 1 求个成品大佬
徐一一 + 1 + 1 我很赞同!
lr9569 + 1 求PM成品
tao15119119267 + 1 + 1 我很赞同!
touhoufans + 1 + 1 我很赞同!
q3602360 + 1 + 1 我很赞同!
q74330 + 1 我很赞同!
sniper9527 + 1 + 1 谢谢@Thanks!
17863906417 + 1 + 1 我很赞同!
海天一色001 + 1 + 1 热心回复!
yufan1123 + 1 + 1 谢谢@Thanks!
cwazl + 1 不错啊!学习了!
asdfffff + 1 + 1 热心回复!
涛之雨 + 3 + 1 用心讨论,共获提升!
ldr + 1 + 1 支持,想起了当年打红警的时候
codeqq + 1 我很赞同!
BoatJ + 1 + 1 谢谢@Thanks!
super163 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sheldon_wxd + 1 + 1 看得哥一愣一愣的
lsrh2000 + 1 + 1 热心回复!
yingwl + 1 + 1 汇编代码注入器 给个下载吧,谢谢
lickety + 1 + 1 热心回复!
杀猪用牛刀 + 1 + 1 谢谢@Thanks!
tony1314 + 1 + 1 我很赞同!
妹控真是太好了 + 1 热心回复!
羽翼Rain + 1 + 1 谢谢@Thanks!
yi025 + 1 + 1 谢谢@Thanks!
x34178148 + 1 + 1 奖励会动手的小徒弟
jiaokeer + 1 + 1 牛逼啊,膜拜大佬
zhou220 + 1 + 1 用心讨论,共获提升!
winamp8 + 1 + 1 我很赞同!
月下飞天镜 + 1 + 1 我很赞同!
D小小贱 + 1 + 1 膜拜大佬
深巷丶 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
19955563626 + 1 + 1 用心讨论,共获提升!
zzzain46 + 3 + 1 用心讨论,共获提升!
苏紫方璇 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
610100 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

苏紫方璇 发表于 2019-4-20 20:21
膜拜会无限扔核弹的大佬

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
KaQqi + 3 + 1 膜拜szfx大佬

查看全部评分

laochai 发表于 2019-4-20 20:35
写完了果断注入,注入了果断报错
这句话很有幽默感

免费评分

参与人数 3吾爱币 +2 热心值 +1 收起 理由
风绕柳絮轻敲雪 + 1 果断就会白给
57yn + 1 犹豫,就会败北
KaQqi + 1 我很赞同!

查看全部评分

zhou220 发表于 2019-4-20 21:55
厉害,越来越深入了。
我以前只是用CE简单修改内存完成这些功能。
但是做任务的时候,没有基地。。。只有几个兵。。。
那时候不用基地,直接把兵营功能给打开,把小兵建造也给打开了,可惜不能造小兵。
希望楼主也能从这个方向研究研究。

免费评分

参与人数 1热心值 +1 收起 理由
KaQqi + 1 我很赞同!

查看全部评分

he1231234 发表于 2019-4-20 20:21
厉害  辛苦了咳咳咳咳
橘子啤 发表于 2019-4-20 20:24
有成型品没,小白不懂
19955563626 发表于 2019-4-20 20:26
这个真是硬核
liuyanjie2012 发表于 2019-4-20 20:37
膜拜会无限扔核弹的大佬
qiuss 发表于 2019-4-20 20:47
如果联网时,选一群动员兵,能给自己加铁幕不死,然后举枪就是射核弹。。。对面联网的玩家会说啥?
Norton 发表于 2019-4-20 20:48
楼主给力
what01 发表于 2019-4-20 20:49
都是高手啊!膜拜一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 16:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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