现在越来越多的安卓游戏用Unity3D引擎编写,以前关注的地方都是内购破解方面,所以修改比较多的地方是C/C++编写的dll逻辑,资源的提取很少操作。看了 @林哥 的分享,http://www.kanxue.com/bbs/showthread.php?t=191380 ,觉得这方面提升的空间很大,就折腾了一番。 |
前言在游戏中看到一张优美的画面,想作为手机壁纸;听到一首好听的音乐,想作为手机铃声。想啊 但是怎么找到它们?这就是资源的提取,下面我就说说对他们的浅显认识。 Unity3D资源的存在形式 国内一些比较小的Unity3D游戏基本上资源文件都打包在了apk的assets文件夹中,如下图中的《爸爸去哪儿2》资源结构:
我们知道,国外的游戏一般体验较高 画质一流,所以资源文件会更大。并且貌似在国外 有一个规则就是资源文件大于60M的apk,必须要外带obb资源包。obb的引入方法就是放在SDCard的游戏目录下,obb其实就是一个压缩文件,文件内容同单独apk包下的 \assets\data\ 路径文件。如《死亡航线 Dead Route》的obb文件结构:
一般资源文件夹中的文件类型的说明 Shader:文本文件,后缀为.shader,配置有关;如下图《死亡航线 Dead Route》提取出来的文件目录:
obb中资源文件的提取
强大的开源工具:Disunity。作者付出的努力和无私 @林哥 在那篇帖子中已经溢于言表..它是个Java程序,编译之后用命令行bat就行,将从obb解压出来的Data文件夹直接拖到cmd框中,即可自动试下解密,如下图:
由于每个文件夹都有不同的资源 不便于特定资源的查找,所以就网罗了一个工具:IrfanView,它能够将不同文件夹下的资源放在一起进行预览,方法及效果如下图:
后记资源算是提取出来,进阶是不是应该试试修改操作呢,比如替换图片,汉化等?遗憾的是Disunity并没有提供回编的功能,这就需要我们自己阅读它的源码,看它是怎么解出来文件的 才能做下一步的回编..(里面的表述和方式一定会有错误 还望看出来的高手不吝指出,谢谢)