记一次Unity资源解包

免责声明 本文仅用于技术研究与学习交流目的,不鼓励、不支持任何对游戏内容的非法提取、篡改、传播或商业利用。所有操作均基于开源工具对本地已购游戏文件进行的逆向分析,未涉及服务器端数据、未破解DRM、未分发任何游戏资源。 文中所展示的截图与代码片段,仅为说明分析过程,不包含完整资源或可执行内容。 游戏版权归其原开发商与发行商所有。本博客无意侵犯任何知识产权,若权利方认为内容存在不当之处,请在评论区留言,我将第一时间配合处理。 技术无罪,善用为本。请读者遵守当地法律法规及游戏用户协议,切勿将本文内容用于非法用途。 使用工具 AssetStudio : 提取资源 Dnspy : 寻找代码中的加密逻辑 在线Base64解码 : Base64解码 背景 某游戏汉化堪忧,于是尝试自己获取游戏的英文文本,用大语言模型翻译,也是作为萌新解包的一个记录 提取资源 这一步比较简单,打开AssetStudio软件,选择File->Load folder,无视关于版本的报错,待加载完成后直接Export->All assets到一个目录即可。 在途中可以看看感兴趣的内容的浏览。 例如这里能看到是一串肉眼看不出有什么意义的代码,甚至base64解码后也无意义。观察类似文件的base64解码,似乎都带有82 84 74 42 6E 29 3A 0F BD 28 78 28 E4 37 21 3D作为最开始的字节,但并没有现成的文件类型。 那么是否就是资源提取有问题呢?在这里考虑到Unity和C#关系紧密,可以使用dnspy碰碰运气 反编译 首先找找游戏目录下有没有"Assembly-CSharp.dll"的文件,用dnspy打开(这是找的网上的) 依次展开,先随便看看。不过找了找似乎没有直接看到什么感兴趣的东西,那么就去找找类型引用 在类型引用里,我们可以看到LocalisedString这个类型,应该是和语言本地化有关的,双击过去看看。 可以看到很多方法的实现都依赖Language,Ctrl+左键点过去看看 从Language()一路LoadLanguage()到SwitchLanguage()再到DoSwitch,最后我们找到了GetLanguageFileContents,可以看到其最后调用了Encryption.Decrypt(),那么接下来就是去寻找解密函数,然后自己实现就可以了。 让AI帮忙用py写了脚本,测试确实输出了英文文本。 接下来就可以自己尝试翻译了。翻译完成后可以用UABE进行再次封包了

September 6, 2025 · 1 min · 47 words · qbning
本站总访客数 加载中...