人气 981

[客户端破解] Unity3D研究院之提取游戏资源的三个工具支持Unity5 [复制链接]

九艺网 2017-10-17 21:58:36

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
找一个Unity3d做的游戏,这里我在补充一下如何辨认某个游戏是用u3d做的。
1.在网上随便下载一个游戏.ipa,并且解压到本地。
2.找到xxx/xxx.app,右键显示包内容,打开Data文件夹。
3.如果发现文件夹中包含 unity default resources 文件,那么恭喜你这个游戏就是用unity3d做的。
再看看这里几个比较重要的文件。
level0 / leve1 ….   图中0-5一共有6个文件,这表示这个游戏用了6个游戏场景。
sharedassets0/sharedassets1 …. 图中0-6一共有7个文件,它的数量永远比场景的数量多一个,可见它和场景有关联性,可以用工具把它解开看看。
Managed:这个文件夹下放的都是dll ,unity自己写的脚本编译成dll后就放在这里,还有其他第三方的dll也放在这里。
resources.assets:这个东西就比较重要了,他游戏里面所有放在resources文件夹下的东西都会放在这里,我们提取也主要在这里提取。
Raw:如果游戏在StreamingAssets文件夹下放东西,那么就会出现一个Raw文件夹。
PS:我个人觉得最好不要在StreamingAssets文件夹下放东西,因为ipa一解开就能看到里面放的啥东西了。如果真的要放,我觉得最好不要放.assetbundle 文件。 因为你需要用www.LoadFromCacheOrDown 这样第一次它会把StreamingAssets下的assetbundle 解压到本地的cache文件夹中,那么StreamingAssets文件夹又是一个只读的文件夹,也就是说你只能读取不能删除,结果就会造成容量过大  因为 解压后的文件 和没有解压的文件都保存在本地。。 所以assetbundle最好直接从服务器上下载,那么这样本地就不会多出来一个assetbundle。
自从神魔更新自 Unity 5 之后,disunity 不再适用;
所以我以前那份教学其实已经作废了 Orz
http://forum.gamer.com.tw/Co.php?bsn=23805&sn=999204
就 disunity 来说,解包真的很完美。
但很可惜,我有看到作者在 Github 上说:程式架构很糟糕,要打掉重练。
所以才导致 Unity 5 迟迟不能支持。
也因此我在这裡重发 教学 至 2.0,
解决 disunity 暂不支持 Unity 5 的问题。
【导读】
(1) 如果你只是伸手党,此文不适合你,请选择上一页离开。
(2) 本教学是概念性的教学指点,不是一蹴可几获得所有资源。
(3) 所有资源版权为 Mad Head 所有。
(4) 举凡你使用该工具提取到的任何资源,禁止用於商业用途。
(5) 你使用工具提取到的任何资源,应尽量避免打包成懒人包在其他地方二次发佈。
(6) 本帖宗旨在於分享技术给大家,请勿将此技术用於非法用途。
(7) 工具都可能会有更新,请下载最新的版本。
【工具】
(1)《Unity Studio》
https://github.com/RaduMC/UnityStudio/releases
– Unity Studio 是 2015 年,最新颖的拆解 Unity 工具,是相当强大的工具。
– GUI;可以批量载入处理;可以预览资源 (包含文字、贴图、模型、音乐)。
– 不过仍有些贴图无法识别,神魔的音乐大部分解出的也是错的。
– 但基本上可以拆解九成以上的资源,相当亮眼。
(2)《Assets Bundle Extractor》
https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor
– 一样是 2015 年新颖的拆解 Unity 工具之一。
– 其特色可批量将 .unity3d 包换成 .assets 包。
– 不过由於不能批量载入,使得本工具逊色很多。
– 但对於对於音效、音乐资源拆解相当完善,有可取之处。
– 可解决 Unity Studio 解错神魔的音乐、音效的资源。
(3)《Unity Assets Explorer》
http://zenhax.com/viewtopic.php?f=9&t=36
– 老牌拆解工具,仅支持对  .assets 包处理,瑕疵最多的工具,而且还有 BUG。
– 最新版,在主楼的 Latest version 描述裡。
– 虽然支持了 Unity 5 ,但仍不能批量载入。
– 音乐、音效的资源提取也有问题,贴图自动转成 DDS 也有毛病。
– 不过对於贴图 原始数据 的导出成 TEX 却相当不俗,适合给开发者研究的依据。
(4)《TOS Tex Converter 2.0》by 我开发的
https://mega.nz/#!HEwDzZAQ
– 解密金钥:!-K7Jx-0RkHw_GvVFTG-pMPOVNacOEeTpOitJYjbX2wM
– 此份是我当初为 Unity Assets Explorer 导出贴图的修正;
– 并兼 TEX 转换成 PNG 工具。可以批量预览、转换。
– 我上传的是整份开放源码专案 (VC6.0 MFC),工具在 Debug 文件底下。
– 这次的 2.0 版做了加强,解决 Unity Studio 贴图无法识别的部分;
– 追加有关对 ETC1、ETC2、Alpha8 的支持。
– 追加「仅」对神魔的大量  .unity3d 包,批量更名成易於识别的档名。
– 可以指定输出目录。

(5)《DDS Converter》
http://www.ddsconverter.com/index.html
– 一个可以将 .dds 贴图批量转换成 .png 的工具。
(6)《PowerVR》
https://community.imgtec.com/developers/powervr/installers/
– 一个可以预览 .dds、.ktx、.pvr 的工具。
– 同样可以批量处理转换成 .png,不过不是在 GUI 操作上。
– 载这个主要是来解 .pvr 或 .ktx 的贴图用的,dds 还是靠上述工具会比较好。
– 因为部分 dds,PowerVR 会解错。
############################### 我是分割线 ###############################
【数据包概念】
当游戏过大时,无法在 APK 档案中容纳。就会分离数据包。iOS 同理。
神魔从 4.0 开始,开始引入数据包的概念,毕竟图鑑跟音乐只会越来越多。
透过玩家进入游戏,下载数据包补足不足的资源内容。
如何拿到这裡的数据包,可以参考我的旧帖教学,以下我就不赘述了,概念性指导:
(1) 安卓不需 ROOT,数据包在:内部储存空间 \ Android \ data \ com.madhead.tos.zh
(2) 如果你使用的是模拟器 bluestacks,可能需要豌豆荚,或其他方法自行爬文。
(3) 苹果的玩家,自 iOS 8.3 以上,需要越狱才有办法取得数据包资源。
(4) 本人是建议可以拿 bluestacks 用於拆包, bluestacks 的安卓还是自带 ROOT 的。
【数据包的更名】
(1)
在电脑瀏览时,会发现有文件已被压缩,请自己手动解压缩这些文件。
解压过程遇到同名直接全部覆盖就好。
请点选观看图片
请点选观看图片
(2)
自己先备份一下该版本的数据包吧,可以用於与下次版本更新比较。
如何从新版本中,只找新追加的部分,可以参照我的旧版教学:「小撇步一」。
又或者你可以根据「修改日期」排序一下,大概会知道那些数据包是最新的。
(3)
我们知道,神魔的数据包档名相当难看,
估计是经过杂凑运算得出来类似 MD5 的东西,
这裡使用我开发的工具 TOS Tex Converter 2.0,协助你批量更名成易於识别的档名。
请点选观看图片
请点选观看图片
(4)
如此一来,你便易於识别 Unity3D 包,裡头到底装的是什麼了。
可以选择你想要解的东西
请点选观看图片
像这次的列王纷争 (KOC) 合作背景音乐,可以轻鬆找到。
某些 Unity3D 包裡大概包了什麼,大概都很容易猜得到。
98% 的数据包都能成功重新命名。只有 3 份档案无法更名。
【开始使用 Unity Studio】
(1)
开始使用 Unity Studio,
File → load file 到你数据包 的资料夹,
然后记得副档名要选择 .unity3D,否则你会看不到所有数据包资料
请点选观看图片
(2)
在 Asset List 的地方,可以预览所有资源,
想要全部导出的:Export  → All assets,然后选择一个输出资料夹。
想个别导出的:在 Asset List 的地方,批量 Shift 选择项目:Export  → Selected assets
在输出的资料夹会得到这三个文件夹:(分别是音效、文字、贴图)
请点选观看图片
(3)
音效倒出来的东西全是错的,基本上可以先全删掉了。
有关导出的贴图大概有 dds、pvr、tex。转成 PNG 需要其他工具:
dds:可以用 DDS Converter。
tex:需要用我的开发工具 TOS Tex Converter 2.0 转换。
pvr:需要 PowerVR。
【开始使用 DDS Converter】
遇到 DDS 的贴图,可以用这工具转换,很容易操作。
请点选观看图片
(1) 选 Add,可 Shift 批量选择 dds 载入到工具中。
(2) Browse,可以指定输出资料夹
(3) Output Format,记得要选 PNG,你才有透明层。
(4) Convert,选 Yes,等待转完。
(5) 你可以再次点选 Add,把看到的 dds 全删除了。=w=
【开始使用 PowerVR】
(1)
从官网直接下载安装档,
建议安装的路径不要随意更改,除非你知道在干啥。
(2)
安装时,可以选择你需要的东西,
因为我们只要工具,所以直接选 PVRTexTool 就好,
其餘什麼 SDK,通通可以不用装,那是给程式开发者用的库。
请点选观看图片
(3)
识别附档名,我是全钩了,
如此一来,dds、pvr、ktx 都能开啟查看。
请点选观看图片
当然,如果你依然想依类型排序,以区别 dds,你 dds 可不必勾选,
因为全勾之后,就会註册这三种档案为同一类型的档案了,
想要依类型排序时,就无法再区别 dds。
请点选观看图片
(4)
接下来你就可以开啟 pvr 的贴图了,
你可以把它的 Logo 关掉。
请点选观看图片
(5)
单个档案转成 PNG:File → Save Image
请点选观看图片
(6)
需要批量处理的,要使用 .bat 来写,
先配置好环境变量,感觉大概如下:
– 右键点击我的电脑
– 选择内容 (属性)
– 选择进阶系统设定 (高级)
– 选择环境变量
– 双击Path变量在最后的位置添加:(如果你当初的安装路经没改的话,如下)
C:\Imagination\PowerVR_Graphics\PowerVR_Tools\PVRTexTool\CLI\Windows_x86_32
请点选观看图片
※ Note :
你也可以将变量新增在系统中,我这裡是放在使用者裡。
win10 之前,没有像 win10 这样的表单,它是用『 ; 』区别的。
所以添加时,先找到字串结尾后添加,在字段最后要加上『 ; 』。
类似像这样:xxxx ; ooooo ; ——- ; C:\Imagination\…….. ;
(7)
在你存放 .pvr 的地方先建立一个纯文字件 ( .txt ),
然后贴上以下脚本内容:
@echo off
path %path%;”C:\Imagination\PowerVR_Graphics\PowerVR_Tools\PVRTexTool\CLI\Windows_x86_32″
for /f “usebackq tokens=*” %%d in (`dir /s /b *.pvr`) do (
PVRTexToolCLI.exe -f PVRTC1_4 -i “%%d” -d “%%~dpnd.png”
del “%%~dpnd.pvr”
)
有关路径字段,如果你当初安装路径没动的话,就不用改了。
另外哪天有 ktx 要转换,把字段 *.pvr 换成 *.ktx 就好了。
贴完存档后,把纯文字件副档名改为 .bat。
(8)
点击  bat 档,第一次大量档案转换需要一点时间,请耐心等后。
洗个澡、吃个饭、拉个(消音),回来再看看小黑窗有没有消失了。XD
转完后,你就可以把 pvr 的档案给删了 www
(9)
最后建议把 这些从 dds 及 pvr 转出来的 png 放在同一个资料夹裡吧!
因为这些贴图,Unity Studio 在导出的时候是:Y 轴上下颠。
PVRTexTool也支持翻转参数flip,但是在这里,我测试无效,只能使用另一个工具ImageMagick来进行上下翻转,批处理脚本为:
@echo off
path %path%;”D:\Imagination\PowerVR\GraphicsSDK\PVRTexTool\CLI\Windows_x86_32″
for /f “usebackq tokens=*” %%d in (`dir /s /b *.ktx`) do (
PVRTexToolCLI.exe -f PVRTC1_4 -i “%%d” -d “%%~dpnd.png”
del “%%~dpnd.pvr”
“D:\Program Files\ImageMagick-6.8.5-5\convert.exe” -flip “%%~dpnd.png” “%%~dpnd.png”
)

【无档头的 TEX 產物转换】
由於 Unity Studio 有部分贴图,它无法识别,大约有 36 份。
所以输出的时候,会產生 .tex ,与 Unity Assets Explorer相似;
是一种 原始数据 (RawData) 的导出。
但与 Unity Assets Explorer 不同的是,这些 .tex 缺少了档头资讯
取而代之,输出档名型式大概如下:
{ 名称 } # { 编号用於避免同档名 } _ { 宽 } x { 高 } . { 贴图解压代号 } .tex
假设档名是:1030n #10511_512x512.47.tex
表示这贴图是 512 x 512 解压代号为 47 的贴图
而目前绝大多数都是 47 解不出来。
(1)
这时就需要我开发的工具:TOS Tex Converter 2.0
Output Path:指定输出资料夹
Tex Viewer:选择并预览贴图
Tex => PNG:选择并转换图档
(2)
选择 预览 或 转换 前,由於  Unity Studio 导出的 .tex 没有档头,
所以要在 Load Setting 那,勾选 None Header。
於此设定宽、高与解压代号。
(3)
根据你所选的 .tex,匹配你的 Load Setting 设定
请点选观看图片
(4)
解出来的 PNG 方向是正确的,
所以这部分你就不用特别再修改了。
【Assets Bundle Extractor 提取音效】
由於 Unity Studio 解出来的音乐全是错的,
所以我们这裡要换成 Assets Bundle Extractor。
虽然不能批量处理,但基本上不会花你太久的时间。
(1)
如果你刚刚有用我开发的工具更名,
会很容易找到有关音乐或音效的档案
你可以先根据档案大小来排序,
很容易找到档案名称是跟音效或与音乐有关的档案,
如当中有 mp3 的字段。
请点选观看图片
然后把些相关的音乐或音效档案搬移你方便处理的地方吧!
(2)
开啟 Assets Bundle Extractor,File → Open
到你特别摆放音乐或音效档案的地方一一处理。
(3)
载入后,选择 Info,接著你会看到有关 AudioClip 相关的 Type,
把那一栏选取起来,按下 Plugins,选择导出路径跟名称,
最后便能导出音乐或音效了。
请点选观看图片
############################### 我是分割线 ###############################
【APK 内的资源】
教到这裡,扩充数据包的部分基本上是都拆完了。
你总体已拆解神魔 90% 的资源了,剩餘的 10% 是在 APK 裡。
也许未来 MH 会把 APK 慢慢轻量化至全用下载扩充数据的方式处理。
APK 裡的资源基本上有部分已经跟我们目前拆解的成果有重覆,
不过像是系统音效、系统 UI 介面等等,只有在 APK 裡才找得到。
(1) 从神魔官方网站下载 APK 版本。
(2) 将 缀名(附档名) .apk 修改成 .zip,并解压於某资料夹中。
(3) 素材资源都位於:assets / bin / Data 之下。
拆解方式大致与前面步骤相同,只是会方便更多,
因为资源没有被分散,只是被分割而已,批量载入的需求很低。
【APK 内的拆解】
(1)
首些我们先用 Unity Studio 探勘 APK 的内容。
这次开啟附档名就不用更动了 (Unity asset files),
这时你就会发现原本很多未知的档案,只有 level0、level1、mainData。
请点选观看图片
(2)
你只需要载入 mainData,
你就会发现:assets / bin / Data 之下的所有档案全自动载入了,
请点选观看图片
然后你就可以进行拆包了。
※ Note :
Unity Studio 在载入 mainData 档案后,会生成:
sharedassets0.assets
sharedassets1.assets
sharedassets2.assets
这三份档案就是 .assets.split 系列切割档案的重组。
(3)
Unity Studio 导出的音效依然是错的,
可以直接删除。
(4)
使用 DDS Converter 时,
在批量载入之后,要注意的是:
请点选观看图片
有两份有关 Font Texture 的 DDS 是损毁的,
要从 DDS Converter 表单内移除。
(5)
DDS Converter 转完后,
你可以再次点选 Add,把看到的 dds 全删除了。
(6)
PowerVR 的批量转换 .pvr,跟前面一样。
这裡我就不重复说明了!转完后,你就可以把 pvr 给删除了。
(7)
无档头的 TEX 產物,比照上述方法处理。
如果我没记错,有一份档案是代号 45,不是 47。
(8)
要提取音效,依然要靠 Assets Bundle Extractor。
File → Open,档名筛选选择 Assets file (*.assets),
然后个别开啟刚刚 Unity Studio 重组好的:
sharedassets0.assets
sharedassets1.assets
sharedassets2.assets
然后按 Type 排序,一样找到 AudioClip,
Shift 键批量选取起来,Plugin 就能导出音效了。
请点选观看图片
以上,拆解神魔的资源已经差不多了。
接下来的教学,可能比较偏向:
– 知识性的补充
– 补足一些工具的使用方法

############################### 我是分割线 ###############################

【Alpha 8 通道贴图】
把我们解出来的 PNG 成果来查看,会发现一件事情:
请点选观看图片
没错,一张图分两张存,且其中一张标记上了Alpha8
Q:何谓 Alpha 通道贴图 ?
A:
某些贴图,会将「透明层」独立出来成 1 份档案,
换句话说将一张 ARGB,存成 一张 A 与 一张 RGB。
如果你不懂我在说啥,下图会让你更容易明白~~
请点选观看图片
而 Alpha8 的意思就是:8-bits (1 Byte) 描述一格像素的透明度。
显而易见的是:我们的工具对於 Alpha8 的通道贴图全解析成 黑色的了。
所以如果你想要这些「透明层」,不外乎要用其他方式去得到。
【Assets Bundle Extractor 批量转换】
前面我有提到这工具…..
其特色可批量将 .unity3d 包换成 .assets 包
这可以协助你将大批的  .unity3d 转成  .assets 后,
可以给老牌拆解器 Unity Assets Explorer 查看。
要如何做到呢 ? 遵照以下步骤:
(1) 在你存放 Assets Bundle Extractor 的地方建立两个档案
请点选观看图片
AssetsBundleExtractor.dir.txt
AssetsBundleExtractor.bat
(2) 用纯文字编辑 bat,内容如下:
AssetsBundleExtractor -removetypetree batchexport AssetsBundleExtractor.dir.txt
(3) 纯文字编辑 txt,内容如下:
DIR { 你存放.unity3D 的文件夹位置 }
比如说你存在 C:\Users\teren_000\Desktop\TOS\bundles
那就是:「 DIR C:\Users\teren_000\Desktop\TOS\bundles」。
并且你可以多追加几行,解不同的路径。
(4) 执行这个 bat,你的 .unity3d 的文件下,就会產生 .assets 了。
(5) 如果你先前有使用我的工具,对 .unity3d 重新命名:
请点选观看图片
解出的 .assets 档名仍有可读性!
【Unity Assets Explorer 的导出】
(1)  此时你就可以用 Unity Assets Explorer 瀏览神魔藉由下载的扩充数据包
请点选观看图片
(2) 虽然不能批量载入,但你可以根据档名载入你想要导出的东西,不用再猜了。
请点选观看图片
导出前我们依然要关闭对 DDS 的转换,它转出来的色彩是错的。
(3) 导出的 .TEX,要由我的工具去转换出来
请点选观看图片
此时,None Header 就不用勾选了,
因为 Unity Assets Explorer 导出的 TEX 是有档头的,我的工具会自动判断。
【解决 Alpha8 错误的思路】
透过刚刚的教学,已经可以解决 Alpha8 错误的贴图。
这裡只提供思路,因为对 APK 内的数据还是有点问题。Orz
(1) 把你想要更正的 Alpha8 贴图名称记下来。
(2) 从 Unity Assets Explorer 载入时,找寻相关对应的  .assets 档名
(3) 导出 .TEX
(4) 用我的工具 TOS Tex Converter 2.0 将  .TEX 转成 .PNG,即可得到修正的贴图。
请点选观看图片
【后记】
Untiy3D
其实是有提供加密运算的 API,所以神魔裡的媒体素材是可以被保护不被拆解的。
如果哪天神魔裡的媒体资源数据包被加密了,届时这些拆包工具就会没有作用了。
最后,希望大家能享受自己动手拆包的乐趣 w
假如哪天 disunity 支持了 Unity 5,或许我这份教学又要更新了呢 XD。
Enjoy !


因为Unity提供资源的工具很多,所有有些团队为了避免别人提取所以对资源进行了加密,最近又发现了一个神器基于硬件层面查看内存贴图,这样就直接无视对方加密了。。


下载Tegra Graphics Debugger   支持Mac Linux Windows

安装好以后连上安卓机器, 这里安卓的机器得是Tegra 机型查询 http://www.nvidia.cn/object/tegra-phones-cn.html

然后要选一个abd的路径,在android的sdk里platform-tools/adb

接着选择一个游戏包名,Lanch一下就会自动启动游戏,并且开始分析。

点击Capture Frame 截取一帧,然后选择Texture就可以看内存了, 给力吧。。

如果没有Tegra的手机,用高通的也可以,高通这个给力可以批量导出所有图片


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 02:16 , Processed in 0.125690 second(s), 24 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.