首页
社区
课程
招聘
[原创]某火热的区块链游戏(mir4)的一次通信协议分析
2021-12-22 14:23 83818

[原创]某火热的区块链游戏(mir4)的一次通信协议分析

2021-12-22 14:23
83818

前言:

最近区块链游戏不是挺火的嘛,本着研究的态度,对整个游戏网络框架进行了一次分析.

本文不会直接告诉你怎么样去做才是正确的,而是基于一次一次的分析尝试得出正确的结果.
可以视为一次逆向笔记吧.
本文不涉及脱壳反检测方面姿势.

 

游戏名:Mir4(传奇4)


准备工作:

1
2
3
1. 平台: iOS 14.3越狱环境
2. 工具: hopper,ida,frida
3. 知识: 需要对c++虚表有一定的了解,UE4dump和ProtoDump需要.

正文:

  1. 思路

既然是网络层分析,那么第一步肯定是抓包分析一下啦.逆向基础的wirashark,charles这些就不做介绍了.

 

这一块就不贴图了. 抓包分析后得知:

  1. 网络交互是走的tcp连接;
  2. 协议是基于protobuf;
  3. 通信过程加密了,前几个包是明文包,后续加密了,看了一下位数,不像是非对称加密,因为长度不符合,还是需要验证一下.

protoc --decode_raw < 二级制文件 //可以直接解析proto协议

  1. 切入点寻找

首先我们是要对游戏网络交互进行分析,那么需要对UE4虚幻引擎有一定的了解.
通过查阅相关资料得知虚幻引擎是通过'UNetDriver'进行网络交互的,而'UNetDriver'是在'UWorld'下,那么我们就需要对游戏先进行sdk dump拿到实例化对象.
然后拿到UNetDriver后,可以在ida里面跟到相应的网络流程,加密等.

 

let's go

 

那么ue4dump是怎么做的呢?首先安卓平台有一个开源的ue4dumper,我们可以参阅一下:UE4Dumper

 

核心原理就是找到GNamesArray,GObjectsArray,GWorld这三个内存位置,然后进行遍历读取.

 

现有的资料基本都是基于ue4.23版本的,4.25有一点改动

  1. GNamesArray > FNamePool
  2. GObjectsArray > TUObjectArray

关于GWrold的寻找,论坛已经又相关帖子了,不再说明,主要说一下自己摸索的剩下两个关键字的寻找.

FNamePool

我们首先在源码里找到FNamePool的初始化函数,在附近看看有没有相关关键字可以定位的.

/UnrealEngine/Engine/Source/Runtime/Core/Private/UObject/UnrealNames.cpp
FNamePool::FNamePool();

 

运气比较好,可以看到有字符串^ ^

 

也就是说,我们在hopper中找到字符串并查找相关引用,就可以得到FNamePool啦:

 

图片描述

 

找到函数顶部,按X查找引用:

 

图片描述

 

然后随便找一个进入,看看调用是什么:
图片描述

 

这里解释一下, 在C++面向对象中,一般的X0就是this指针,那么这个函数调用了我们的FNamePool::FNamePool(),传入的x0对象就是fnamepool的地址,也就是: 0x1065c2000+0x1c0 = 0x1065c21c0

 

剩下TUObjectArray基本也一样.

 

然后自己改一改UE4Dumper就可以拿到完整的sdk了:

 

图片描述

验证想法

后续补充...午休时间结束了,有时间摸鱼的话我再补充.
包括怎么寻找切入点,算法还原,包括怎么样dump出proto文件等,一时半会写不完
有空我慢慢写,大家可以加Q群交流:418993549

 

dump出的proto文件类似下面的.

 

图片描述


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2021-12-22 14:51 被kbb编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (5)
雪    币: 62
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_小清新 2022-1-14 09:27
2
0
大哥方便留个微信吗
雪    币: 5485
活跃值: (3247)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
尐进 2022-1-15 22:29
3
0
mark学习
雪    币: 851
活跃值: (5029)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suuuuu 2022-4-27 10:21
4
0
靠协议挖矿可以日进斗金了
雪    币: 173
活跃值: (279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
可以撩你吗 2022-5-4 18:04
5
0
mark学习  期待更新
雪    币: 205
活跃值: (155)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xigema 2022-5-15 20:42
6
0
qq群加不上啊,想学习如何dump出proto文件,请赐教
游客
登录 | 注册 方可回帖
返回