12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 208|回复: 0

逆向分析某网游明文call

[复制链接]

59

主题

59

帖子

128

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
128
发表于 2020-5-11 10:26:50 | 显示全部楼层 |阅读模式
前言
先吐槽一下,悲催的3月11日,该游戏公司,居然停服了我分析了好几个月的游戏,那么多数据就没用了,哼,生气。
不过就当练技术了吧,哈哈。不过,忍一时越想越气,退一步越想越亏,下载该公司的另一款网游,使劲盘解解气!
正好今天注册吾爱成功,发发贴证明我是活人,嘻


开始分析明文call
游戏下好后,走起来,OD走起来,断点走起来,发现是使用WSASend函数发包,而且是线程循环发包。

好,我们去游戏里聊天,打上11111



此时断下后,堆栈如图所示



当然我们只需关心第2个参数:0A53095C,右键跟随到数据窗口看一看



第一个呢就是包长,第二个就是包的地址,我们看看这个包里面有什么东西,点击第二个,回车


嗨呀!居然是明文,老泪纵横呀。上一个游戏不仅是线程发包,而且加密了的,这次貌似要轻松一点。


运行起来,我又去游戏聊天,这次我打22222,发现包的地址变了

前一次是15152028,这一次是1514400c





em.....我又反复聊天试了几次,发现是两个地址交替使用,那么排队队吧,一个一个脖子伸出来

15152028地址下写入断点,走起,呃呃呃呃,游戏居然断线了,重连重试了几次还是会断线,情况不妙啊....
那对
1514400c地址下写入断点试试,结果不出所料,依然断线。看来这游戏把包的写入盯得死死的呀。

那我们换个思路吧,看上面我两次聊天,第一次发的11111,第二次发的22222,都是5个字符,两次包长都是0x23没变,而且存储包长的地址0A53095C也是不变的,好,我们下个写入断点试试(果然不断),那我们用CE监测吧:添加地址 0A53095C ,找写入



10050DD8 - 89 51 20  - mov [ecx+20],edx
10050D16 - C7 41 20 00000000 - mov [ecx+20],00000000

OK,去OD分析第一条,转到地址 10050DD8 ,分析后注释如下:


后来我继续追eax的来源,在上层下断后,老是断,无法去游戏里聊天,所以此路不通。

那就不往上追,既然edx是包长,而且edx = [eax+20],那么eax+20这个地址里的包长是哪里来的呢?
好,我们去游戏聊天,发固定长度的话,使包长也等于0x23。断下后,记下eax+20 == 0A5309CC,反复聊天几次发现这个值不变,好的,又祭出CE监测 0A5309CC,找写入
10050D87 - 89 7E 20  - mov [esi+20],edi
10050DCB - 89 78 20  - mov [eax+20],edi
好嘞,去OD分析 10050D87处的代码(累吧,OD和CE换来换去的用,,,,)

继续追上层


追到这层后,我试着又往上追ebx包长的来源,发现上层也是经常断,那么断了念想吧(同追妹子一样不好追)
纠结了一会,我开始分析上图的倒数第三行:1004FE6E  51  push ecx对倒数第三行下断,去游戏里聊天,发5个1,使包长等于0x23,然后看看ecx里面的值:


每次聊天断下发现ecx是不变的,只是里面的明文在变,那么我们试着对明文下写入断点(这次居然在OD里下写入断点不奔溃了,哈哈):断在下图中:

看到了吧,esi里也是明文,此处在写入明文包,我聊天时发的5个1,31就是1的ASCII码嘛。
断在这里时,删除内存断点,不要运行,去堆栈窗口找到返回地址,右键跟随到反汇编,返回到了1001E167处然后我分析这一层的代码,如下:


如注释所说,明文包地址时刻在变,无法分析,只有从包长入手对上图第一条代码下断,发现每次聊天esi也是不变的,
在数据窗口查看esi + 1C4,出出出出大事了,断下时+1C4处有值,运行时没值



那么又用CE监测0A531FC4吧,找写入
1001EB17 - 89 46 08  - mov [esi+08],eax
1001EB5D - 89 48 08  - mov [eax+08],ecx

啊啊啊啊,什么时候是个头啊,用OD分析1001EB17,哈哈哈哈哈哈,咸鱼翻身了,看看看,看到了啥,三个黄金大字:主线程!
看来我们终于跳出循环发包的子线程了哟


双击下断,去游戏里聊天、走路各自断下,记录栈回溯,就找到了明文call了。经过测试,用这个明文call一下子就找到跳跃call和选怪call



总结
不管发包函数发的包,是不是明文,都不重要,上一个停服的游戏,就是发的加密包。
从包的地址入手行不通的话,可以尝试追踪包长,毕竟它的变化范围小嘛。
OD下写入断点奔溃或者断不下的话,可以用CE监测。
em...最后,本人只是对逆向感兴趣,不会做那个的。。。
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-18 18:46 , Processed in 0.103515 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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