记解包一个Unity引擎的视觉小说

(编辑:jimmy 日期: 2024/12/24 浏览:2)

前言

对于解包Unity引擎的资源 已经有不少优秀的开源工具
但是这款游戏是厂商自己实现的资源加密 这几天有空就研究了下解包
文章中可能有不当之处 还请大牛们多多包涵

分析

dnspy打开游戏目录下的Assembly-CSharp.dll
先搜索游戏资源文件的后缀.dat



这个PRead的类比较像 进去看看有什么方法




通过查看调用 大致能猜到这个字节数组Data返回的应该是文件



这个字典ti存储了文件名和文件的信息
大致流程是先new一个PRead(.dat文件路径) 然后通过传入文件名让Data返回文件的字节数组
有了这些 可以试试解包了

写解包程序

vs新建个控制台项目 新建个PRead类
直接把dnspy反编译的代码粘贴过来
把需要用到的东西修饰符都改成public 防止访问不了



然后模仿刚才的流程 把返回的字节数组用BinaryWriter写入文件

        static void Main(string[] args)        {            PRead pRead;            Console.WriteLine("鍵入dat完整路徑(如C:\\Games\\[蒼の彼方のフォーリズム][苍之彼方的四重奏][sprite]\\Aokana_Data\\sprites.dat):");            String dat = Console.ReadLine();            Console.WriteLine("鍵入輸出路徑(如F:/):");            String outpath = Console.ReadLine();            pRead = new PRead(dat);            foreach (string fileName in pRead.ti.Keys) {            if (!Directory.Exists(outpath)){                     Directory.CreateDirectory(outpath);                }                Directory.CreateDirectory(Path.GetDirectoryName(Path.Combine(outpath, fileName)));                FileStream fs = new FileStream(Path.Combine(outpath, fileName), FileMode.Create, FileAccess.Write);                BinaryWriter binaryWriter = new BinaryWriter(fs);                byte[] array = pRead.File(fileName);                if (array!=null)                {                    foreach (byte b in array)                    {                        binaryWriter.Write(b);                    }                    binaryWriter.Close();                }            }        }


搞定 这里解包的是bg.dat 其他文件有的有点辣眼睛 就不截图了

一句话新闻

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?