2022年腾讯游戏客户端安全菁英班学习内容
仅以此篇记录我被虐爆的好些日子。实在是太难了。。。。
1 Unity
Unity是一种游戏引擎,简单来说游戏引擎就是内置好了很多功能,比如啥与3D库交互等等,就是方便了开发者开发游戏。
现在常见的游戏引擎有unity,虚幻引擎(UE4,UE5)。本次项目中用的游戏都是基于Unity的,因为UE5这类引擎直接生成二进制文件,所以会很难分析
Unity分为两种类型:
Mono(游戏代码以C#形式存下来,容易反编译) --- 简单区分二者的方法,若
Managed
目录下有大量的dll,就是mono
IL2CPP(能将C#代码转换成C++代码,然后再编译成二进制文件)
1.1 简单的C#介绍
C#是微软的开发的一个语言,运行于.NET Framework
和.NET Core
(完全开源,跨平台)之上的高级程序设计语言。
这里说一句
.NET framework
,这个框架是微软早期为了实现跨平台开发的,能够跳过Windows API进行Windows编程,但是很尴尬的是,这个框架在跨平台上失败了。之后又重新开发了.NET core
,实现了跨平台。虽然后来
.NET core
有几次更新,但是现在集成了之前的framework和core
,统一叫.NET
应该没啥问题简单得将
.NET
当成一种能够跨平台的编程环境即可。
1.1.1 C#是如何实现跨平台的
一个.cs
的C#源代码,通过VS等工具进行编译,生成各种文件,比如PE文件。那么通过.NET框架
或Mono虚拟机
跨平台。
这里注意,编译生成的不是汇编语言,而是一种更加高级的中间语言,叫IL
代码,依赖于runtime运行时库,(runtime概念建议看知乎),而.NET和mono
就是提供了这样的runtime服务。
通过runtime,它能将IL代码变为对应操作系统所能支持的代码。
mono是一个C#虚拟机!!!类似JVM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步