java中的接口是类吗
674
2022-10-05
#yyds干货盘点#Unity3D 程序代码及资源安全问题
Unity3D 程序简介
Unity3D 是由 Unity Technologies 公司开发的一款专业游戏引擎,可以让开发者轻松创建三维视频游戏、建筑可视化、实时三维动画等工具和应用,广泛应用于游戏、汽车、运输与制造、电影与动画、建筑、工程与施工等领域。
Unity3D 具有跨平台、高效的开发语言和工具、丰富的插件和极易上手等优势,已逐渐成为备受开发者青睐的游戏引擎。
Unity3D 程序使用 C# 语言开发,可以通过 Unity 编译环境生成各个平台的程序,Unity 提供了 Mono 和 il2cpp 两种不同的编译方式,编译方式不同,其运行原理也不同,但都不同程度的存在一些安全问题。
代码安全问题
Mono 运行时的安全问题
以 Mono 方式编译的 Unity3D 程序,其核心代码位置于 Assembly-CSharp.dll 中,Assembly-CSharp.dll 是标准的 .NET 文件格式,附带了方法名、类名、类型定义等丰富的元数据信息,使用 DnSpy 等工具可以轻易地将其反编译,代码逻辑、类名和方法名等一览无余。
Unity3D 代码逻辑一但被反编译,可以使用工具直接篡改,很容易滋生各种类型的外挂,破坏游戏平衡,如果代码逻辑中存在漏洞,也容易被挖掘利用,可能对开发商造成无法预料的损失。
il2cpp 的安全问题
il2cpp 是 Unity 提供的另一种编译方式,它将 C# 代码转换成 C++ 代码,最后直接编译成了相应平台的 Native 可执行格式,位于 libil2cpp.so、GameAssembly.dll 或 UnityFramework 等文件中(依平台而定),转换成 Native 程序后,代码的分析难度理应会更大,但实际上并非如此,虽然 C# 代码由 IL 指令转换成了 Native 指令,但依然存在 .NET 元数据信息,存在于程序目录下的 global-metadata.dat 文件中,通过 il2cppDumper 等工具可以直接生成 .NET 文件格式。
D:\>il2cppDumper.exe libil2cpp.so global-metadata.dat .Initializing metadata...Metadata Version: 21Initializing il2cpp file...Applying relocations...Il2Cpp Version: 21Searching...CodeRegistration : 2595ee8MetadataRegistration : 25d2738Dumping...Done!Generate struct...Done!Generate dummy dll...Done!Press any key to exit..
Dump 出 C# 程序集后,虽然无法直接看到 .NET 方法中的逻辑,但可以直接定位到方法对应的 il2cpp 模块的地址,篡改代码逻辑,破坏正常功能。
资源易提取
Unity3D 程序在编译打包阶段会通过 Unity 编辑器将资源打包成 Asset Bundle 文件,Asset Bundle 是一种公开的文件格式,使用 Asset Studio 等工具可以对其解析、展示和提取。
Unity3D 程序中的有些骨骼模型和场景等资源一般是开发商耗费大量的精力开发的,如果不保护,很容易被窃取进行二次开发。对于网络游戏,还可以将一些场景资源的材质属性改为透明,实现透视效果。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~