记录一次U3D il2cpp游戏逆向解包

查看 179|回复 10
作者:罗萨   
纯记录贴,怕下次自己忘了。
目标:steam锁国区某日游,因无中文语言,所以想做一下汉化。
使用工具:CPP2IL  https://github.com/SamboyCoding/Cpp2IL
Il2CppInspector
AssetStudioGUI
dnspy  ida   x64dbg  用到的工具比较多

一、先找语言文件
先打开AssetStudioGUI


image.png (14.28 KB, 下载次数: 1)
下载附件
2022-1-25 16:00 上传

直接加载游戏文件目录,等他跑一小会,随便搜搜关键字筛选一下看看


image.png (24.66 KB, 下载次数: 1)
下载附件
2022-1-25 16:02 上传



image.png (136.12 KB, 下载次数: 1)
下载附件
2022-1-25 16:03 上传

能看到多语言文件都是加密过的,先右键导出个英文的文件准备开干。
二、解包GameAssembly.dll
下载好Cpp2il,填上bat命令行,一键导出,或者使用Il2CppInspector。
命令行:Cpp2IL.exe  --game-path="D:\Program Files (x86)\Steam\steamapps\common\Yu-Gi-Oh!  Master Duel" --exe-name="masterduel"
经过漫长无比的等待后
cpp2il文件目录下会输出若干文件


image.png (89.43 KB, 下载次数: 2)
下载附件
2022-1-25 16:09 上传

三、分析Assembly-CSharp.dll
拖进dnspy可以看到类似这样,看不到函数内部,只能看到函数名,够用了,开始找解密函数


image.png (26.76 KB, 下载次数: 1)
下载附件
2022-1-25 16:11 上传

搜索Decrypt方法,只有一个符合,我这里已经知道这个函数就是解密函数了,所以直接拿他开整。


image.png (43.96 KB, 下载次数: 0)
下载附件
2022-1-25 16:13 上传

记录下地址:
[color=][
[color=]Address
[color=](
[color=]RVA
[color=]
[color=]=
[color=]
[color=]"0x7BD270"
[color=],
[color=]
[color=]Offset
[color=]
[color=]=
[color=]
[color=]"0x7BC470"
[color=],
[color=]
[color=]VA
[color=]
[color=]=
[color=]
[color=]"0x1807BD270"
,dnspy先别关一会还有用
四、分析
[color=]GetBytesDecryptionData
解密函数
掏出IDA拖入GameAssembly.dll,抽根烟开始漫长的等待。跑完之后直接去00000001807BD270处F5看一下伪代码


image.png (54.15 KB, 下载次数: 0)
下载附件
2022-1-25 16:17 上传

很简单的逻辑,在去dbg里跑一下看一眼变量。


image.png (169.88 KB, 下载次数: 1)
下载附件
2022-1-25 16:23 上传

这里rbx+78对应的a1 + 120,拿到v5的数值,接下来写个算法就好了,其实就两行。


image.png (26.24 KB, 下载次数: 1)
下载附件
2022-1-25 16:25 上传



image.png (22.93 KB, 下载次数: 0)
下载附件
2022-1-25 16:25 上传

简单的运算,没啥好讲的,解密之后发现还是加密的状态,后来我仔细找了找,返回值还有一个call双击进去,复制1806ED310,dnspy搜一下字符串


image.png (116.53 KB, 下载次数: 0)
下载附件
2022-1-25 16:28 上传

对应的应该是zlib算法里的解压函数,下载一个zlib类库看下源码


image.png (51.94 KB, 下载次数: 0)
下载附件
2022-1-25 16:30 上传

OK,引用到项目,测试一下完活


image.png (29.33 KB, 下载次数: 0)
下载附件
2022-1-25 16:31 上传



image.png (100.23 KB, 下载次数: 0)
下载附件
2022-1-25 16:31 上传

下载次数, 下载附件

罗萨
OP
  

复制一下当加密算法,改一下zlib压缩参数,默认是9,这里改成6


QQ截图20220206185440.png (20.18 KB, 下载次数: 0)
下载附件
2022-2-6 18:57 上传

panicler   

一次U3D il2cpp游戏逆向
y13699688083   

感谢无私的分享
天山雪   

这就是知识 的力量啊。
zhouxinyi   

这是说的MD么?期待汉化,之前的DL都有简繁中文,没搞懂为啥MD就木有了
evill   

Yu-Gi-Oh
lws0318   

感谢楼主无私的分享
lossweight   

太厉害了 最近正好对u3d项目感兴趣 可以借鉴玩一下
xdpxby   

不是吧,逛个论坛都有牌佬?
您需要登录后才可以回帖 登录 | 立即注册

返回顶部