用途
该技能面向游戏引擎内部结构、源码树、插件以及引擎相关安全研究,来源于 awesome-game-security 资源集合,覆盖商业引擎(Unreal、Unity)与开源引擎。适用于研究 Unreal、Unity、Source、Godot 等引擎的开发者与安全研究人员。
主要能力与覆盖范围
README 覆盖以下条目:
- Game Engine > Guide
- Game Engine > Source
- Game Engine Plugins:Unreal、Unity、Godot、Lumix
- Game Engine Detector
- Cheat > SDK CodeGen
- Cheat > Game Engine Explorer:Unreal、Unity、Source
- Anti Cheat > Game Engine Protection:Unreal、Unity、Source
- Game Develop > MCP server
主要引擎类别
- Unreal Engine:官方文档与论坛、源码访问(需 Epic Games 账号)、社区指南与教程、插件开发参考。
- Unity Engine:C# 参考源码、资源商店资源、Unity 特定设计模式、VR/AR 开发指南。
- 开源引擎:Godot(免费开源,支持 GDScript 与 C#)、Cocos2d-x(跨平台 2D 游戏框架)、CRYENGINE(高保真图形引擎)、Source Engine(Valve 游戏引擎,多个版本)。
- 自定义/教学引擎:Hazel Engine(TheCherno 教学系列)、Bevy(基于 Rust 的数据驱动引擎)、Fyrox(Rust 游戏引擎)。
关键技术领域
- 渲染:用于学习的软件渲染器、光线追踪实现、着色器开发教程、后处理效果。
- 数学:线性代数库(GLM、DirectXMath)、物理模拟(PhysX、Bullet)、碰撞检测算法。
- 网络:客户端-服务器架构、KCP 可靠 UDP 协议、Steam 网络集成、MMORPG 服务器实现。
资源类别
- 文档与指南:学习资源与教程、架构文档、最佳实践与风格指南。
- 源码:完整引擎实现、子系统参考(渲染器、物理、音频)、插件与扩展示例。
- 插件与扩展:用于调试 UI 的 ImGui 集成、脚本语言绑定(Lua、.NET)、编辑器工具插件。
引擎选择标准
研究引擎用于安全分析或开发时可参考:目标平台(PC、移动、主机兼容性)、源码访问(开源 vs 专有)、语言(C++、C#、Rust 或脚本)、图形 API(DirectX、OpenGL、Vulkan、Metal)、社区(文档与支持质量)。
SDK 生成工作流
Unreal Engine(Dumper-7):
- 从二进制签名识别 UE 版本
- 将 Dumper-7 注入运行中的游戏进程
- SDK 输出:带 UObject 层级的 C++ 头文件
- 关键结构:UObject、FName、UClass、UFunction、UProperty
- 生成的 SDK 支持:属性访问、函数调用、蓝图钩子
- 替代工具:UnrealDumper、UE4SS(实时脚本 + SDK 转储)
Unity(IL2CPPDumper):
- 定位 global-metadata.dat + GameAssembly.dll(或 libil2cpp.so)
- 运行 IL2CPPDumper → 输出:dump.cs、il2cpp.h、script.json
- 将生成的头文件加载到 IDA/Ghidra 进行符号恢复
- 关键结构:Il2CppClass、MethodInfo、FieldInfo、Il2CppType
- 对于 Mono 构建:直接用 dnSpy 反编译 Assembly-CSharp.dll
Source Engine(NetVar 解析):
- 从 CHLClient 遍历 ClientClass 链表
- 对每个类枚举 RecvTable → RecvProp 条目
- 构建偏移映射:类名 → 属性名 → 偏移
- 示例:CCSPlayer → m_iHealth → 0x100
- 工具:hazedumper、source2gen(Source 2)
引擎对象模型
Unreal Engine:
- 核心层级:UObject → UField → UStruct → UClass;UObject → AActor → APawn → ACharacter → APlayerCharacter
- 关键全局变量:GObjects(TUObjectArray,所有活动 UObject 实例)、GNames(TNameEntryArray,FName 字符串池)、GWorld(UWorld*,当前世界上下文)、GEngine(UEngine*,引擎单例)
- 内存布局:UObject 头部包含 VTable、ObjectFlags、InternalIndex、ClassPrivate、NamePrivate、OuterPrivate;属性位于 UClass::PropertySize 定义的偏移处
Unity(IL2CPP):
- 核心结构:Il2CppDomain → Il2CppAssembly → Il2CppImage → Il2CppClass;Il2CppClass 包含字段、方法、vtable、static_fields 指针
- 关键模式:il2cpp_domain_get() 获取域单例;il2cpp_class_from_name() 按命名空间 + 名称查找类;il2cpp_runtime_invoke() 从原生代码调用托管方法
- 元数据:global-metadata.dat 包含字符串池、类型定义、方法签名;部分受保护游戏会加密元数据(需要自定义解密器)
Source Engine:
- 核心系统:实体列表 IClientEntityList → GetClientEntity(index);ConVar 系统 ICvar → FindVar("sv_cheats");NetVars 用于网络复制属性的 RecvTable 层级
- 关键接口(通过 CreateInterface 导出访问):IVEngineClient、IClientEntityList、IEngineTrace、ISurface、IPanel(用于 Source 中的叠加渲染)
游戏开发 MCP 服务器
README 的 MCP server 子类别包含与游戏引擎工作流相关的服务器:
- Unreal Engine MCP:AI 智能体控制 UE 编辑器(生成 actor、修改属性、蓝图)
- Unity MCP:AI 智能体与 Unity 编辑器及 C# 脚本交互
- Godot MCP:AI 智能体控制 Godot 编辑器与 GDScript
这些与面向逆向工程的 MCP 工具互补,支持 AI 辅助游戏开发与快速原型设计。
安全研究重点
对于游戏安全研究,理解引擎内部结构有助于:内存布局与对象结构、渲染管线钩子、网络协议分析、反作弊集成点。
数据来源
该技能提供概念性指引与概览信息。详细内容需从以下来源获取:
-
项目概览与资源索引:获取主 README 以查看完整精选仓库、工具与描述列表: https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/README.md
-
仓库代码详情(归档):项目维护本地归档。若仓库已归档,优先从归档获取而非克隆或直接浏览 GitHub。归档 URL 格式: https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/archive/{owner}/{repo}.txt 示例: https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/archive/ufrisk/pcileech.txt https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/archive/000-aki-000/GameDebugMenu.txt 使用方法:从 URL 识别 GitHub 仓库(owner 与 repo 名);构造归档 URL(将 {owner} 替换为 GitHub 用户名/组织,{repo} 替换为仓库名,不带 .git 后缀);获取归档文件,其中包含由 code2prompt 生成的完整代码快照与文件树。若返回 404,说明仓库尚未归档,回退到 README 或直接浏览 GitHub。
-
仓库描述:项目维护自动生成的描述文件,提供仓库用途的简明英文摘要。描述 URL 格式: https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/description/{owner}/{repo}/description_en.txt 示例: https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/description/00christian00/UnityDecompiled/description_en.txt https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/description/ufrisk/pcileech/description_en.txt 使用方法:从 URL 识别 GitHub 仓库;构造描述 URL;获取描述文件。若返回 404,说明描述尚未生成,回退到 README 条目或归档。
回答特定仓库问题时的优先级顺序:描述(快速摘要)→ 归档(完整代码快照)→ README 条目(回退)。
限制
该技能本身仅提供概念性指引与概览,不包含完整实现细节;具体工具、项目与实现需通过上述数据来源获取。资料未提供收费、价格、平台兼容性或实际效果等信息。