首页
论坛
专栏
课程

[调试逆向] [原创]逆向分析某网游明文call

6天前 1117

[调试逆向] [原创]逆向分析某网游明文call

6天前
1117

前言

先吐槽一下,悲催的3月11日,该游戏公司,居然停服了我分析了好几个月的游戏,那么多数据就没用了,哼,生气。

不过就当练技术了吧,哈哈。

不过,忍一时越想越气,退一步越想越亏,下载该公司的另一款网游,使劲盘解解气!


开始分析明文call

游戏下好后,走起来,OD走起来,断点走起来,发现是使用WSASend函数发包,而且是线程循环发包。
好,我们去游戏里聊天,打上11111


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


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


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

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

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



em.....我又反复聊天试了几次,发现是两个地址交替使用,那么排队队吧,一个一个脖子伸出来
对 1517400C地址下写入断点,走起,呃呃呃呃,游戏居然断线了,重连重试了几次还是会断线,情况不妙啊....
那对 15170004地址下写入断点试试,结果不出所料,依然断线。看来这游戏把包的写入盯得死死的呀。

那我们换个思路吧,看上面我两次聊天,第一次发的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  50  push ecx

对倒数第三行下断,去游戏里聊天,发5个1,使包长等于0x23,然后看看ecx里面的值:



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

断在下图中:


看到了吧,寄存器eax里的值是31003100,31就是1的ASCII码嘛。

断在这里时,删除内存断点,不要运行,去堆栈窗口找到返回地址,右键跟随到反汇编,返回到了1001E167处

然后我分析这一层的代码,如下:



如注释所说,明文包地址时刻在变,无法分析,只有从包长入手

对上图第一条代码下断,发现每次聊天esi也是不变的,在数据窗口查看esi + 1C4,出出出出大事了,断下时+1C4处有值,运行时没值

 


那么又用CE监测esi+1C4吧,找写入

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...最后,本人只是对逆向感兴趣,不会做那个的。。。




[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上一主题 下一主题
最新回复 (14)
wuwwyu 6天前
2
0
那么请问,这个怎么用呢?
cnlife 6天前
3
0
又捉到一个搞违法的事的。。。。。。
ugvjewxf 6天前
4
0
目无王法,满门抄斩
minorory 6天前
5
0
wuwwyu 那么请问,这个怎么用呢?
哈哈,这个嘛就不能说啦
minorory 6天前
6
0
cnlife 又捉到一个搞违法的事的。。。。。。
哈哈,感谢捧场,我单纯逆逆,不写不卖
minorory 6天前
7
0
ugvjewxf 目无王法,满门抄斩
大哥,别,,,
whathhh 6天前
8
0
诛仙剑阵砍楼主
minorory 6天前
9
0
whathhh 诛仙剑阵砍楼主
我有帅气御体,伤不到我
wanttobeno 6天前
10
0
又一个游戏停服的,心疼
最后于 6天前 被wanttobeno编辑 ,原因:
minorory 6天前
11
0
wanttobeno 又一个游戏停服的,心疼
确实有点心疼,不过就当积累经验技术吧
laozeixp 5天前
12
0
学习了,跪求楼主多发点经验
minorory 5天前
13
0
laozeixp 学习了,跪求楼主多发点经验
大牛太多,我都不好意思发
不甘 4天前
14
0
楼主,我有点编程的基础,我这几天看了许多逆向的帖子,觉得很感兴趣,请问楼主是怎么入门的,是否有入门的书籍或课程,求楼主推荐
minorory 4天前
15
0
不甘 楼主,我有点编程的基础,我这几天看了许多逆向的帖子,觉得很感兴趣,请问楼主是怎么入门的,是否有入门的书籍或课程,求楼主推荐[em_51]
我比较萌,,,一直在学才入门的,要学C/C++、windows API、MFC、汇编、反汇编等等,然后就去各大论坛逛咯
游客
登录 | 注册 方可回帖
返回