先把我的disunity v0.5.0资源地址告诉大家,方便大家下载:
http://download.csdn.net/download/narutojzm1/9484108
昨天我使用disunity v0.5.0 试图提取资源时发现了apk中将asset分成了1M1包,N个小包,小包名字例如:split0/split1/split2... ... 不知所措。今天找到办法了,
其实这个拆包方法就是单纯的将文件流拆了而已,没有什么特殊之处,所以自己使用文件流的方式将资源合并也可以,但是我发现了一个好办法,HxD,这个我随后上传,告诉大家地址,其实就是一个可以16进制读文件,然后拆包合并包的工具而已。
吃水不忘挖井人,这个是我在GitHUB上找到的,如下:
https://github.com/ata4/disunity/issues/10
截图:
合并成.assets后的工作就简单了,我上一章也讲了(当然我上一章得到的.assets是我从Windows端的exe版本数据包中取得的,并没有拆包)。
上一章最后遇到的问题就是,我通过命令disunity asset unpack [file] 解出来的是一堆.block原生文件,上一章没有对block文件进行再一步研究,今天读了工具作者的一些话题文章有答案了:原来是因为作者还并没有进一步实现呢,证据如下:
https://github.com/ata4/disunity/issues/179
作者说:It's not supported in the 0.5 branch yet, since it requires object deserialization. I'll reimplement it eventually, at least for files that have embedded type trees.
就是说这些个.block原生文件他还没有能够反序列化,他会重新实现这个功能。
**************************************************这个话题就到此为止了******************************************************************************************
接着我发现使用disunity 0.4可以将.asset文件直接解出来,不过只有一堆shader
其实我最需要的是level0和mainData这两个文件,我觉得这两个文件里边应该会有我需要的我的工程中损坏的.unity场景文件。我还着重关注了下这个
果然有篇讨论讲的这个,https://github.com/ata4/disunity/issues/10,题主大概的想法是问有没有办法方便的把这个apk再重新解了后再在unity editor中显示出来啊,这和我的初衷很像,如果真能显示出来,那断然有.unity文件了嘛。
接着往下看
意思是说,你直接把mainData/levelx的后缀改成.unity就好了嘛
。所以我认为,这个文件就相当于一个.unity文件,但是应该已经不能再用回原开发工程了,只能作为一个新工程来用。然后这个新的场景文件使用的资源是什么呢?我觉得就是.asset文件。我参考的是这一句:
我把这荧光笔标记的这句这样翻译:这些没有后缀的文件使用了和assets文件相同的格式。(有异议欢迎讨论,我拿不准)
关于使用上述文件还原新的场景这一步我还没有具体试,先写在这里,容我改日再研究。
接下来我发现了一个关于解析APK的比较全面的博客,
http://forum.gamer.com.tw/Co.php?bsn=23805&sn=2998323,他里边还提供了一种叫做UnityStudio的方法,同时他对各种解析的工具做了对比,我受益良多,有兴趣可以看看。