[Bug?] Pure Psb decompile error (original) (raw)

Game: この素晴らしい世界に祝福を!この欲深いゲームに審判を!(PCSG01028)
Platform: PSVita
mdf Key: 38757621acf82 (length: Default/131)
FreeMote version: 4.3CI build #67

@UlyssesWu 大佬你好,我在使用PsbDecompile.exe尝试解包该游戏的config_info.psb.m-config_body.bin中的几个psb文件时遇到了下面的报错:

>PsbDecompile.exe test\config\xxx.psb
FreeMote PSB Decompiler
by Ulysses, wdwxy12345@gmail.com
18 Plugins Loaded.

Decompiling: xxx.psb
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 FreeMote.Psb.Types.MpdType.IsThisType(PSB psb)
   在 FreeMote.Psb.PSB.InferType()
   在 FreeMote.Psb.PSB.LoadFromStream(Stream stream)
   在 FreeMote.Psb.PSB..ctor(Stream stream, Boolean tryDullahanLoading, Encoding encoding)
   在 FreeMote.PsBuild.PsbDecompiler.Decompile(String path, PSB& psb, Dictionary`2 context, PsbType psbType)
   在 FreeMote.PsBuild.PsbDecompiler.DecompileToFile(String inputPath, PsbExtractOption extractOption, PsbImageFormat extractFormat, Boolean useResx, Nullable`1 key, PsbType type, Dictionary`2 contextDic)
   在 FreeMote.Tools.PsbDecompile.Program.Decompile(String path, Boolean keepRaw, PsbImageFormat format, Nullable`1 key, PsbType type, Dictionary`2 context, String outputFolder)

具体会导致报错的文件是这些:

PCSG01028_error_psbs.zip

三个解不开的psb文件虽然文件名后缀是.psb.m、但文件头是"PSB\0",version看起来是PSBv3,文件数据尾部也能看出一些可读的字符串信息,由于我不太了解PSB的文件结构,也不太懂怎么看这3个psb是否有加密,抱歉暂时只能提供这些信息。

另外这些文件来源的config_info.psb.mconfig_body.bin (MDF)数据包内文件结构如图:

Image

这些文件名后缀为.psb.m的文件通过文件头可以初步判断都是Psb,除了上面提供的三个无法正常解开的Psb外(cgmode、musicmode、replaymode)其他的psb都能用PsbDecompile.exe直接解开得到json文本,如有需要进行比对,这里也提供一下config_info.psb.mconfig_body.bin

PCSG01028_config.zip

辛苦大佬能抽空帮忙看看,如有需要我会继续尽快补充其他所需的文件