Unity中反编译脚本代码与提取游戏资源

转自:https://yinpengd.github.io/2017/12/23/Unity%E4%B8%AD%E5%8F%8D%E7%BC%96%E8%AF%91%E8%84%9A%E6%9C%AC%E4%BB%A3%E7%A0%81%E4%B8%8E%E6%8F%90%E5%8F%96%E6%B8%B8%E6%88%8F%E8%B5%84%E6%BA%90/

在Unity的脚本代码的学习之中,我们除了通过看教程中的脚本演示,Unity博客,论坛,知识板块等网站的学习,还可以通过看已上线的游戏的源码,通过这种看已上线游戏源码方式的优点在于相比上述的方式要更加的规范深入全面(毕竟是已完成的游戏),当我们缺少优质素材用于练习时我们也可以通过提取游戏资源的方式,提取你想要的风格的游戏资源,这将会大大方便我们在学习游戏开发中的进程。

1.Unity中反编译脚本代码

1.1 、反编译工具

dnSpy 是一款针对 .NET 程序的逆向工程工具,基于 ILSpy 发展而来的 .net 程序集的编辑,反编译,调试神器。。该项目包含了反编译器,调试器和汇编编辑器等功能组件,而且可以通过自己编写扩展插件的形式轻松实现扩展。该项目使用 dnlib 读取和写入程序集,以便处理有混淆代码的程序(比如恶意程序)而不会崩溃。

1.2、Unity源码文件位置

unity的源码都存放在dll中,那么反编译的工作就是把从dll 中提取出源码,基本上我们的代码都在Assembly-CSharp.dll这个文件中

1.3、破解Unity源码文件

将Assembly-CSharp.dll文件拖动到dnspy反编译工具中就实现了破解

我用一个的独立游戏做的示例:

反编译源码

上图可以看出反编译出了编码者完整的代码逻辑

2.提取游戏中的资源

游戏中的美术资源没法完全加密,即便使用特别复杂的加密方式,也有办法将其中的资源提出来,这里只借助现成的工具,做些浅显的资源提取。

2.1、资源提取工具

相比于Disunity与UnityAssetsExplorer工具,UnityStudio 拥有可视化界面,可以批量导出贴图,模型,字体,音频等,可以预览,最新版支持Unity5.x,所以在这使用UnityStudio作为资源提取工具。

2.2、下载地址

https://github.com/Perfare/UnityStudio

2.3、Unity中资源位置

点击菜单 File 中的“Load folder…”,载入 unity 游戏的 Assets -> bin -> data 文件夹。也可以选择“Load file…”,载入 .unity3d 或者 .boundle ,.assets文件。

2.4、预览资源

选择 Assets List,可以看到里面有很多资源文件。点击即可在右侧窗口进行预览,可以预览贴图,Shader,模型的资源,还可以直接播放音频。

2.5、保存资源

选中需要的资源,点击菜单工具栏里的 Export -> Selected assets,即可将选中的资源保存到本地。

用一个的独立游戏做的示例:
提取资源

上图中在seneHierarghy界面中可以查看资源的结构目录,资源中的音乐文件都可以直接播放测试,在右边的视图中可以使用wsad将对模型进行旋转查看

其他相关博客:

如何避免代码被反编译 : http://www.xuanyusong.com/archives/2664
Unity3d 反编译破解游戏 简单示例: http://blog.csdn.net/huutu/article/details/46573327)

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Unity的AssetBundle是一种用于打包和管理资源的解决方案。AssetBundle资源打包后会被编译成二进制格式,并通过这种方式保护资源的安全性。然而,如果有人想要反编译AssetBundle资源,那么需要知道以下几点: 首先,Unity并没有直接提供反编译AssetBundle资源的功能。这是因为Unity本身致力于保护开发者的知识产权和资源安全。因此,要反编译AssetBundle资源需要使用第三方工具或者技术来实现。 其次,反编译AssetBundle资源是一种侵犯知识产权的行为,可能违反软件许可协议或法律。在许多国家和地区,对于未经授权的反编译行为可能会受到法律的制裁。 最后,即使使用了反编译工具或技术,由于AssetBundle打包后是经过编译的二进制文件,因此还需要逆向工程的知识和技能来还原出原始资源。这需要对Unity的底层技术和文件格式有一定的了解,并且需要有一定的编程能力和经验。 总之,要反编译Unity的AssetBundle资源是一项技术复杂且侵权风险较大的行为,建议开发者在使用Unity的AssetBundle资源时遵守软件许可协议和法律法规的规定,保护自己的知识产权和资源安全。 ### 回答2: Unity的AssetBundle是一种用于打包和加载资源的文件格式,在游戏开发非常常用。由于AssetBundle是Unity编译后的二进制文件,通常情况下是无法直接反编译的。 然而,仍然有一些方法可以间接地获取AssetBundle资源。其一种方法是使用Unity的AssetBundle API,通过调用相关函数来加载和使用AssetBundle资源。通过这种方式,开发者可以在编程环境直接获取和使用资源,而不需要对AssetBundle进行反编译。 除了使用Unity的API外,还可以使用一些第三方工具来解析AssetBundle文件,并将其资源提取出来。这些工具可以通过分析AssetBundle的二进制结构来获取资源的相关信息,进而将其提取出来。然而,这种方法需要对AssetBundle的结构和文件格式有一定的了解,同时也需要一些专门的工具和技术知识。 总之,尽管AssetBundle是一种编译后的二进制文件,无法直接进行反编译。但通过使用Unity的API或第三方工具,我们仍然可以间接地获取和使用AssetBundle资源
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值