hanayunn 发表于 2020-8-7 15:02

某iOS端Unity手游 使用Il2CppDumper之后无法用dnSpy和IDA反编译 求UnityFS提取思路

本帖最后由 hanayunn 于 2020-9-4 07:47 编辑

事情是这样的,我想了解这款手游其计算伤害、治疗量的公式,并且提取其中技能描述、装备描述等文本数据。

我做了以下这些事情:
使用 fri da-ios-dump 和越狱 iPhone 对游戏 IPA 包进行了砸壳(解密),并提取其中的资源,发现其为 Unity 结构




然后使用 AssetStudio.v0.15.0 对其进行提取,其中图片素材、背景、人物立绘等全部提取出来,但是文本资源 TextAsset 始终是以 bytes 存在。
于是我用 Il2CppDumper-v6.4.4 对其进行处理(FCI,Data/Managed/Metadata/global-metadata.dat)得到 DummyDll 文件夹(Assembly-CSharp.dll,Assembly-CSharp-firstpass.dll 以及若干 *.dll)
接着我用 dnSpy-net472 想看看其代码,万万没想到。。。这里面的各种函数都长这个样子

这些个代码我真的看不懂,但是我看坛友其他帖子里面关于 dnSpy 的截图,好像可以直接显示正常的 C# 代码。
然后试图用 IDA_Pro_v7.0_Portable 对其 F5 反编译,也是不行。(这里点 Set 和不点 Set 我都试了,感觉一样。。。每次加载大约需要 20 分钟)

在 IDA 中运行了 Il2CppDumper 生成的 ida.py 得到 dump.cs 和 script.json 啥的,但是感觉也派不上用场,这里我就没思路了。

我还要干件事就是提取技能描述等数据,这个游戏的文本数据应该是写在 Data/Patch/assetbundle/data 里,我在其中发现了大量 TextAsset 类型的结构数据,但是都是 bytes 形式,使用 HEX 和 AssetStudio 打开如图:

嗯,好像是以 Unityfs 开头的加密脚本,谷歌了一大圈,尝试了很多,但是实在搞不定了。。。特来求助各位大神

附件都在 https://hanshare.lanzouj.com/b015obg3g 密码:ggrw

hanayunn 发表于 2020-8-8 19:16

经过一天的摸索,我发现我在操作 IDA 的时候出现了失误。对于 iOS 平台的 Unity 游戏来说,应该直接将可执行文件拖入 IDA,这样才能反汇编成功。我这样操作后,已经可以 Hook 了(比如返回超级高的伤害量之类的),但是我想看计算公式,此时发现游戏的伤害计算公式还是存放在了以 UnityFS 开头的 TextAsset 里,即使提取了 bytes 文本,依然无法获得其中的 lua 脚本,所以还是看不了公式和技能描述之类的。

CrazyNut 发表于 2020-8-16 01:52

才看到大佬的帖子我也很像学习一下不知道大佬解决的如何了
期待能整理下发一篇教程

hanayunn 发表于 2020-8-18 07:52

本帖最后由 hanayunn 于 2020-8-18 08:11 编辑

CrazyNut 发表于 2020-8-16 01:52
才看到大佬的帖子我也很像学习一下不知道大佬解决的如何了
期待能整理下发一篇教程
这个游戏目前是xlua+il2cpp混淆加密的,目前暂时无解,也没有前人破解过,难度比较大,我放弃了。思路就是用汇编打个补丁,在游戏加载xlua成功时,把xlua写在本地文件中。
页: [1]
查看完整版本: 某iOS端Unity手游 使用Il2CppDumper之后无法用dnSpy和IDA反编译 求UnityFS提取思路