创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
2024-09-27 14:16 点击次数:147
最近区块链游戏不是挺火的嘛chat sex5,本着讨论的气派,对扫数游戏集结框架进行了一次分析.
本文不会平直告诉你奈何样去作念才是正确的,而是基于一次一次的分析尝试得出正确的遵循.不错视为一次逆向札记吧.本文不触及脱壳反检测方面姿势.
游戏名:Mir4(据说4)
准备责任: 正文: 想路既然是集结层分析,那么第一步细目是捏包分析一下啦.逆向基础的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这三个内存位置chat sex5,然后进行遍历读取.
现存的辛苦基本王人是基于ue4.23版块的,4.25有少量转变
GNamesArray > FNamePool GObjectsArray > TUObjectArray对于GWrold的寻找,论坛也曾又关系帖子了,不再阐发,主要说一下我方摸索的剩下两个过失字的寻找.
FNamePool咱们率先在源码里找到FNamePool的运行化函数,在隔邻望望有莫得关系过失字不错定位的.
/UnrealEngine/Engine/Source/Runtime/Core/Private/UObject/UnrealNames.cppFNamePool::FNamePool();
运谈比拟好,不错看到有字符串^ ^
也即是说,咱们在hopper中找到字符串并查找关系援用,就不错获取FNamePool啦:
找到函数顶部,按X查找援用:
然后草率找一个插足,望望调用是什么:
这里阐扬一下, 在C++面向对象中,一般的X0即是this指针,那么这个函数调用了咱们的FNamePool::FNamePool(),传入的x0对象即是fnamepool的地址,也即是: 0x1065c2000+0x1c0 = 0x1065c21c0
香港三级电影剩下TUObjectArray基本也不异.
然后我方改一改UE4Dumper就不错拿到齐全的sdk了:
考据目的
后续补充...午休时候摈弃了,巧合候摸鱼的话我再补充.包括奈何寻找切入点,算法归附,包括奈何样dump出proto文献等,一时半会写不完有空我逐步写,全球不错加Q群疏导:418993549
dump出的proto文献近似底下的.
[课程]Android-CTF解题才智汇总!chat sex5