2018-02-24 13:16:42 q270274978 阅读数 1170
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4629 人正在学习 去看看 张刚

背景是这样的: 在之前的公司,我们项目组技术转型,从cocos转型到做egret . 找了个音乐类的游戏作为练习,只有ios版的,并且是用untiy3d做的,所以稍微找了下如何将untiy3d做的游戏,把图片剥离出来。作为学习用。

雨松MOMO的一个文章
另外一个

其中提到的比较好用的还是 Disunity 这个工具,这里也有个讲如何使用这个工具的

在解出来的文件后,有dds格式的图片,需要转成png来使用,使用这个工具

上面是如何从ipa中获取资源,可能有的资源没有解出来或者上面的不行事儿,ipa包不行,换apk包解出来,再使用unity studio 导出图片,使用dds convert 导出png图片

还有一个方法没有试,nvidia 的debugger 硬件层检查

2014-09-17 15:43:16 zihao2012 阅读数 7363
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4629 人正在学习 去看看 张刚

首先对上一篇做一些遗漏的的补充


1、 文件夹中的文件类型的说明的补充

Mannaged:这个文件夹下放的都是dll,Unity3D的逻辑脚本编译成dll后就放在这里面;
resources.assets:游戏所有放在resources文件夹下的东西都会嵌在里面;
Raw:如果游戏在StreamingAssets文件夹下放东西,那么就会出现一个Raw文件夹。里面有一些视频、音频等;

想要打开ktx图片的同学 可以参照:http://www.xuanyusong.com/archives/2584,非常详细。


2、对IrfanView巧妙用法的补充
可以直接将文件夹拖入该软件的界面,这样该文件夹下及子文件夹下的所有图片音频都会在一个平面上显示。
由于Unity3D画质的渲染效果 网页游戏也渐渐利用这个炫酷的引擎来加载。以前相信很多人网页提取过swf的Flash小游戏和FLV的在线视频,我们今天就试试获取这种类型的网页资源,并将其中具体的文件解包出来。思路很简单,首先利用网页爬虫工具将特定格式的游戏资源文件下载到本地,然后再用工具解包。
资源的下载
这里我们用Firefox浏览器的Firebug插件进行操作比较方法,安装插件和使用就不用说了吧。
进入游戏的时候 可能会提示下载安装Unity3D插件,按提示操作就行。完全游戏状态后 使用Firebug插件,Tab选择“网络”,二级菜单选择“全部”,如下图:

会发现很多的.bundle后缀的文件,如下图,


右键复制链接下载下来,用Disunity解包可以看到资源文件了,探索过程省略一大堆 (*^__^*)
.unity3d后缀也是资源文件。一般.bundle的文件较小,几百K;.unity3d的文件比较大,2、3M左右。不过下载以后都同样可以用Disunity工具解包。

关于Firefox的Firebug插件

这个插件一直是火狐浏览器中的五星级评分优质插件,主要功能包括网页的调试,即时显示。如HTML/CSS/DOM/JavaScript等,对网页代码不了解,简单截最浅显易懂的图说明一下:


还有一个重要的功用就是网页资源的嗅探,包括JPG/SWF/GIF等后缀的资源文件。如下图简单示例:

后记

一些不常见的文件后缀可能就是常见的的文件类型,如ktx它是个图片文件。所以后缀不重要 重要的是能够打开浏览,正常查看。



2014-09-16 22:20:55 zihao2012 阅读数 21424
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4629 人正在学习 去看看 张刚
现在越来越多的安卓游戏用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,配置有关;
Texture2D:图片文件,一般的格式为tga或ktx,前者比较常用,后前网上说需要安装PowerVR 
                      Tools & SDK v3.3才可以打开;
AudioClip:游戏的声音文件,格式是常见的wav或mp3等;
Mesh:游戏全部的模型文件,格式obj,需要在3DMax或Maya中打开。

如下图《死亡航线 Dead Route》提取出来的文件目录:


obb中资源文件的提取

强大的开源工具:Disunity。作者付出的努力和无私 @林哥 在那篇帖子中已经溢于言表..它是个Java程序,编译之后用命令行bat就行,将从obb解压出来的Data文件夹直接拖到cmd框中,即可自动试下解密,如下图:


由于每个文件夹都有不同的资源 不便于特定资源的查找,所以就网罗了一个工具:IrfanView,它能够将不同文件夹下的资源放在一起进行预览,方法及效果如下图:


后记
资源算是提取出来,进阶是不是应该试试修改操作呢,比如替换图片,汉化等?遗憾的是Disunity并没有提供回编的功能,这就需要我们自己阅读它的源码,看它是怎么解出来文件的 才能做下一步的回编..(里面的表述和方式一定会有错误 还望看出来的高手不吝指出,谢谢)


2014-07-21 18:46:06 akof1314 阅读数 21019
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4629 人正在学习 去看看 张刚
       从雨松的博文《Unity3D研究院之mac上从.ipa中提取unity3D游戏资源(六十六)》可以学到提取Unity的游戏资源,其中有用到一个工具:PVRTexTool
因为这个工具的官网不好下载,故将其上传到CSDN,下载地址:http://download.csdn.net/detail/akof1314/7660209


提取出来的资源,其中的ktx资源,用PVRTexToolGUI.exe可以打开查看,可以发现都是上下颠倒,且被拉伸


直接转为png格式的批处理脚本为:
1
2
3
4
5
6
7
@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"
)

PVRTexTool也支持翻转参数flip,但是在这里,我测试无效,只能使用另一个工具ImageMagick来进行上下翻转,批处理脚本为:
1
2
3
4
5
6
7
8
@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"
)

参考资料:
1.Unity3D研究院之mac上从.ipa中提取unity3D游戏资源(六十六) http://www.xuanyusong.com/archives/2584
2.解析Unity3d资源(图片,模型,Shader) http://www.unitymanual.com/thread-18763-1-1.html

2017-10-03 22:00:31 liauh 阅读数 1748
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4629 人正在学习 去看看 张刚

1、unity3d使用c#作为控制脚本,android下使用libmono.so

2、libmono.so一般都加固了,目前走完init_proc后抓取镜像即可得到原始镜像

3、mono下加载c#文件的函数为 mono_image_open_from_data_with_name ,前2个参数为解密后c#文件的内存地址和长度

4、mono_image_open_from_data_with_name可能会被hook,如果被hook,截取hook的函数

5、游戏资源一般位于AssetBundle中,在LoadFromMemory或者LoadFromFile附近应该能找到解密的代码

6、使用目标解密代码解密资源


没有更多推荐了,返回首页