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

admin 2022年1月13日09:59:50程序逆向评论35 views1493字阅读4分58秒阅读模式

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

看雪论坛作者ID:kbb


游戏名:Mir4(传奇4)

准备工作:

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里面跟到相应的网络流程,加密等。

 
那么ue4dump是怎么做的呢?首先安卓平台有一个开源的ue4dumper,我们可以参阅一下:UE4Dumper。
 
核心原理就是找到GNamesArray,GObjectsArray,GWorld这三个内存位置,然后进行遍历读取。
 
现有的资料基本都是基于ue4.23版本的,4.25有一点改动:
  • GNamesArray > FNamePool

  • GObjectsArray > TUObjectArray


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

FNamePool


我们首先在源码里找到FNamePool的初始化函数,在附近看看有没有相关关键字可以定位的。
/UnrealEngine/Engine/Source/Runtime/Core/Private/UObject/UnrealNames.cppFNamePool::FNamePool();

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

某火热区块链游戏(mir4)的一次通信协议分析
 
也就是说,我们在hopper中找到字符串并查找相关引用,就可以得到FNamePool:
 
某火热区块链游戏(mir4)的一次通信协议分析
 
找到函数顶部,按X查找引用:
 
某火热区块链游戏(mir4)的一次通信协议分析
 
然后随便找一个进入,看看调用是什么:
某火热区块链游戏(mir4)的一次通信协议分析
这里解释一下, 在C++面向对象中,一般的X0就是this指针,那么这个函数调用了我们的FNamePool::FNamePool(),传入的x0对象就是fnamepool的地址,也就是:0x1065c2000+0x1c0 = 0x1065c21c0
 
剩下TUObjectArray基本也一样。然后自己改一改UE4Dumper就可以拿到完整的sdk了:
 
某火热区块链游戏(mir4)的一次通信协议分析


验证想法


后续补充,包括怎么寻找切入点,算法还原,,包括怎么样dump出proto文件等,一时半会写不完。

dump出的proto文件类似下面:
 
某火热区块链游戏(mir4)的一次通信协议分析


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

E N D

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


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


看雪ID:kbb

https://bbs.pediy.com/user-home-585132.htm

*本文由看雪论坛 kbb 原创,转载请注明来自看雪社区

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


# 往期推荐

1.从分析一个赌球APP中入门安卓逆向、开发、协议分析

2.内核漏洞学习-HEVD-NullPointerDereference

3.一个数据加密恶意样本分析

4.某系统漏洞挖掘之授权绕过到rce

5.office 分析笔记 —— rtf解析器(wwlib)的不完全解读

6.某系统漏洞挖掘之固件分析



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



某火热区块链游戏(mir4)的一次通信协议分析点击下方“阅读全文”了解更多

原文始发于微信公众号(看雪学苑):某火热区块链游戏(mir4)的一次通信协议分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月13日09:59:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  某火热区块链游戏(mir4)的一次通信协议分析 http://cn-sec.com/archives/735891.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: