西游绘笔西行有大佬会解包嘛

…今天新出的游戏

大部分文件都能解,就是FakeHeader 但是找不到skel文件,蹲一个大佬看有什么线索。

1 个赞

我尝试了 qingliu 大佬之前提供的一种通过文件内容特征查找spine动画文件的方式,找到了疑似skel的文件。
image
这个文件中包含了atlas中所有切片名称的信息,并且开头能看到3.8.85 类似spine版本号的信息。


因此怀疑skel文件没有通过unity打包,只是更改了后缀。但遗憾的是,这个文件如果通过更改后缀的方式,仍然无法还原spine动画。很有可能是文件里内混杂了一些没必要的信息,需要删除。但到这一步我已经找不到什么线索了。

150102.rar (5.1 MB)
我上传了一个例子,看群里是否有大佬能还原skel文件。 基本上就是解包这个游戏的最后一步了。

1 个赞

image
我这边无法导入ex studio

但我刚刚试了一下。是可以直接导入spine的 不知道为什么。 :sweat:

我还是头一次遇到spine能读取,exstudio不能读取的文件。 因此测试的时候,发现exstudio无法导入,就以为skel文件是有问题的。现在看来是ex的问题。 :weary: 但为什么你是可以成功导入进ex的?

这个游戏的skel动作文件它把基础人物和动作分开了,需要合并,不然只能在spine里查看,live2dviewerex会报错的,简单写了个合并脚本,操作如下。
1.提取出文件的bundles文件先把文件的伪文件头去掉放入as里面读取
2.type选择monobehaviour,然后搜索Info,将所有带有aniinfo的文件导出,这个里面记录了拆分出的两个skel文件,在bundles包里可以看到是u2d结尾的文件,文件直接导出到bundles的文件夹里面就行
3.运行脚本在bundles文件夹里面的output文件夹里面就有合并好的skel文件了,导出atlas和png文件就可以在live2dviewerex了查看了

import ujson
from pathlib import Path

def skel_merge(path):
    Path.mkdir(Path(path + "/" + "output"), exist_ok=True)
    path = Path(path)
    for jsonfile in path.rglob("*_aniInfo.json"):
        with open(jsonfile,"r",encoding="utf8") as f:
            data = ujson.load(f)
            skel_name = jsonfile.name.split("_aniInfo")[0] + ".skel"
            _baseBytesMd5 = data["_baseBytesMd5"]
            with open(str(path)+"/"+_baseBytesMd5+".u2d","rb")as f:
                _baseBytesMd5_bytes = f.read()
            _aniBytesMd5 = data["_aniBytesMd5"]
            with open(str(path)+"/"+_aniBytesMd5+".u2d","rb")as f:
                _aniBytesMd5_bytes = f.read()
            f.close()
        with open(str(path)+"/" +"output"+"/" +skel_name,"wb")as f:
            f.write(_baseBytesMd5_bytes)
            f.write(_aniBytesMd5_bytes)
            f.close()

if __name__ == '__main__':
    path = r"C:\Users\zjbook\Desktop\bundles"
    skel_merge(path)

最终效果

3 个赞

感谢大佬!

:heart_hands:学习了!

(帖子已被作者删除)

不清楚 你得看这个游戏是不是套的这种方案 每个游戏的资源策略都不一样 也有可能不是spine做的动画 不过思路可以借鉴 可以看看monobehaviour里面有没有什么线索 仅限unity引擎的游戏

1 个赞