首页
社区
课程
招聘
[原创] 某强祖师 手游 逆向 分析
发表于: 3天前 1149

[原创] 某强祖师 手游 逆向 分析

3天前
1149

老规矩 先解压APP看引擎 Unity + Lua 那么开始Dump吧

IL2CPP Dump需要 得到 “global-metadata.dat” 和 "libil2cpp.so" 文件

进入目录”assets\bin\Data\Managed\Metadata“

找到dat文件 通过载入模板解析 发现 “global-metadata.dat” 没有加密

那么可以尝试直接Dump

这里也是成功的Dump了下来 接下来就是把Lua文件Dump下来 就可以开始分析了

直接使用 HOOK代码 将其Lua 成功Dump 下来 至此前期准备工作就已经完成了

现在就是开始抓包分析封包(可以提前先用 IDA打开SO文件 让其先解析 这样省时间)

通过抓包发现 头部 貌似是固定的 后面内容不知 那么先在”dnSpy“ 里面打开Dump 出来的 DLL文件看看吧

常用网络关键词搜索 "network" 发现了特别可疑的点 "msgid" 还有 "Packet" "UnPacket" 符合我们所需的 组包 解包的点 那么去看SO吧 跳转到偏移

这里也是分析了 他写入了一个整数52462 通过十六进制转换 得到的内容与消息头符合 那么说明找对地方了 开始Hook

通过hook 得到了原始数据 和 CRC16效验的 提交数据 以及效验码

以及他的流程

NetWorkUnit_Encrypt__EncodeRange 异或 实际是 传入了 两个 CRC效验码 将其异或变更

经过测试 他的CRC16 模式是 CCITT 并没有魔改

现在还剩下一个 NetWorkUnit_Encrypt__EncodeRange 我们已知他传入的是两个CRC16效验码组成的 4字节

他里面检测了 几个值 但是主要用到的 _mSKeybuff 作为Key 异或 那么我们需要寻找他的来源

我们发现他是 通过 this 进行读取的结构属性

那我们就打开 dnSpy 找到结构 NetWorkUnit 类 下面的Encrypt

他是在结构的 偏移32 字节集类型 但是在结构当中 并没有直接设置 Key密钥字节的地方

并且查看了 他初始创建 也没有定义Key的来源 这个时候 该如何找呢 陷入僵局

既然现在还不知道做什么 那么 先把他的值给Hook 出来 可能思路就来了

通过hook 发现 _mNKey 等价于 _mSKeybuff

这个时候眼见的朋友就会发现 好像有个值特别熟悉了 我们拉到开头

他连接后做的第一件事 是发送了一个 不知道是什么的内容 返回了 c3070000

那么很大可能是通过返回消息 动态设置的Key


继续上 SO 找消息回调函数 找到了一个关键名称 ”RecvSalt“ 读取盐值

函数里边 将盐值转换成了 整数型 并且调用了 SendKeyCrc 方法



[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 5
支持
分享
最新回复 (2)
雪    币: 5616
活跃值: (9387)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
牛逼之ojbk
1天前
0
雪    币: 77
活跃值: (420)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1
1天前
0
游客
登录 | 注册 方可回帖
返回