乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 12497|回复: 1

[CE-OD] 某网游强行获取房主权限call的分析和实现

[复制链接]

[CE-OD] 某网游强行获取房主权限call的分析和实现

[复制链接]
已绑定手机
尘。
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
470
注册时间
2014-8-18
最后登录
1970-1-1

勋章墙

2016-1-26 17:37:37 | 显示全部楼层 |阅读模式
本帖最后由 尘。 于 2016-1-26 17:42 编辑

随便创建一个房间,等待其他玩家进入之后下WSASend断点,把房主转移给其他玩家


查看调用列表
调用堆栈:     主线程3@
地址       堆栈       函数过程 / 参数                       调用来自                      结构
0012EC38   00C25B75   WS2_32.WSASend                        KartRide.00C25B6F
0012EC3C   00000C10     Socket = 0xC10
0012EC40   0012EC60     pBuffers = 0012EC60
0012EC44   00000001     nBuffers = 0x1
0012EC48   0012EC6C     pBytesSent = 0012EC6C
0012EC4C   00000000     Flags = 0
0012EC50   0AE35030     pOverlApped = 0AE35030
0012EC54   00C25BF0     Callback = KartRide.00C25BF0
0012EC68   00C26538   KartRide.00C25B10                     KartRide.00C26533
0012ECC0   0097A898   KartRide.00C26280                     KartRide.0097A893
0012ECC4   12A7D540     Arg1 = 12A7D540
0012ECE4   00979BBA   ? KartRide.0097A7A0                   KartRide.00979BB5
0012ED18   00973662   KartRide.00979A50                     KartRide.0097365D             0012ED14
0012EEE4   009B5881   KartRide.00972F60                     KartRide.009B587C             0012EEE0
0012EF04   00C1D554   包含KartRide.009B5881                   KartRide.00C1D552             0012EF00
0012EF34   00C1D772   KartRide.00C1D320                     KartRide.00C1D76D
0012EF58   00B3EB78   KartRide.00C17F40                     KartRide.00B3EB73

前面两个函数你都会发现是和WSASend这个API有关的,那就不是我们要找的call
0097A7A0    55              push ebp
0097A7A1    8BEC            mov ebp,esp
0097A7A3    83EC 18         sub esp,0x18
0097A7A6    894D EC         mov dword ptr ss:[ebp-0x14],ecx
0097A7A9    8B45 08         mov eax,dword ptr ss:[ebp+0x8]
0097A7AC    8B4D EC         mov ecx,dword ptr ss:[ebp-0x14]
0097A7AF    8D8C81 84010000 lea ecx,dword ptr ds:[ecx+eax*4+0x184]   ; 同房间人物信息的读取
在这函数里面看到lea ecx,dword ptr ds:[ecx+eax*4+0x184]这就比较符合我们要找的东西了
往下看这个函数
0097A80D    6A 14           push 0x14
0097A80F    E8 985C1E00     call KartRide.00B604AC                   ; 申请0x14字节的内存
这里就是构造整个封包的代码的头部了
往上看发现有2个判断,应该就是判断是否允许发送这个报文的地方了,尝试把第一个判断修改成0097A7CC   /EB 3F           jmp short KartRide.0097A80D这样就等于把判断都过掉了,剩下的就是call的部分了
随便在函数内部找一个地方下断,转移房主
触发的时候ctrl+F9然后F8回到上层调用
00979BB1    52              push edx
00979BB2    8B4D DC         mov ecx,dword ptr ss:[ebp-0x24]
00979BB5    E8 E60B0000     call KartRide.0097A7A0
这里可以发现这个call就一个参数,断下来看看这个edx是什么一个形式的数据

EDX==1 而且我转移房主的玩家的位置就是1,我们可以猜测这个1就是玩家的位置



把代码改成如图然后去测试,发现不管你怎么转移房主获得房主的玩家的位置都是2号位那个了,那就说明猜测是对的
代码编写,首先这个call有一个ecx传址
断下来找ecx的来源,此时ecx== 140FEC98

Ce搜索 140FEC98 熟悉这个游戏的可以发现第一个基址就是指向人物信息的人物基址了


下面用易语言编写代码

游戏中就可以随意获取房主了,0是自己,1-7是房间中的其他7个网络玩家



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1易币 +10 金钱 +20 收起 理由
揰掵佲 + 10 + 20 微信搜索leybc_2015 关注微信号,体验功能!http://www.ley

查看全部评分

回复

使用道具 举报

已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
33792
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2016-1-26 20:52:31 | 显示全部楼层
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-5-1 01:53 , Processed in 0.047692 second(s), 49 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

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