-
-
[原创]某火热的区块链游戏(mir4)的一次通信协议分析
-
发表于:
2021-12-22 14:23
87396
-
[原创]某火热的区块链游戏(mir4)的一次通信协议分析
前言:
最近区块链游戏不是挺火的嘛,本着研究的态度,对整个游戏网络框架进行了一次分析.
本文不会直接告诉你怎么样去做才是正确的,而是基于一次一次的分析尝试得出正确的结果.
可以视为一次逆向笔记吧.
本文不涉及脱壳反检测方面姿势.
游戏名:Mir4(传奇4)
准备工作:
1
2
3
|
1. 平台: iOS 14.3 越狱环境
2. 工具: hopper,ida,frida
3. 知识: 需要对c + + 虚表有一定的了解,UE4dump和ProtoDump需要.
|
正文:
- 思路
既然是网络层分析,那么第一步肯定是抓包分析一下啦.逆向基础的wirashark,charles这些就不做介绍了.
这一块就不贴图了. 抓包分析后得知:
- 网络交互是走的tcp连接;
- 协议是基于protobuf;
- 通信过程加密了,前几个包是明文包,后续加密了,看了一下位数,不像是非对称加密,因为长度不符合,还是需要验证一下.
protoc --decode_raw < 二级制文件 //可以直接解析proto协议
- 切入点寻找
首先我们是要对游戏网络交互进行分析,那么需要对UE4虚幻引擎有一定的了解.
通过查阅相关资料得知虚幻引擎是通过'UNetDriver'进行网络交互的,而'UNetDriver'是在'UWorld'下,那么我们就需要对游戏先进行sdk dump拿到实例化对象.
然后拿到UNetDriver
后,可以在ida里面跟到相应的网络流程,加密等.
let's go
那么ue4dump是怎么做的呢?首先安卓平台有一个开源的ue4dumper,我们可以参阅一下:UE4Dumper
核心原理就是找到GNamesArray
,GObjectsArray
,GWorld
这三个内存位置,然后进行遍历读取.
现有的资料基本都是基于ue4.23版本的,4.25有一点改动
-
GNamesArray
> FNamePool
-
GObjectsArray
> TUObjectArray
关于GWrold的寻找,论坛已经又相关帖子了,不再说明,主要说一下自己摸索的剩下两个关键字的寻找.
FNamePool
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!
最后于 2021-12-22 14:51
被kbb编辑
,原因: