欢迎来到CJY的博客|

wenli7363

园龄:3年3个月粉丝:7关注:6

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

posted @   wenli7363  阅读(406)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起