跳到主要内容

核心之下

浏览 SEAC 全貌。

从零开始

大体上,一个登录器首要目标是以编程方式操作游戏或修改游戏,然后才能实现各种功能。而要实现这一点,大致有以下几种思路:

  1. 基于图像识别的屏幕点击
  2. 基于内存修改的代码注入和劫持
  3. 对于网络游戏,额外可以使用基于 Socket 的收发包拦截与修改
  4. 基于反编译的客户端直接修改,甚至客户端直接或间接对外暴露了接口

显然方案二三是游戏外挂灰产的重灾区,方案一主要在手游领域发扬光大,而方案四主要应用在一些反编译难度较低,或者官方直接提供 mod 框架的游戏中。方案四的实现难度视情况而定,但是一旦实现,具有前三种方案完全无法比拟的优势:

  • 完全的自由度
  • 和原游戏具有良好的互操作性
  • 高稳定性

SEAC 采用的即第四种方案,方案的具体实现方式并不适合展开说明,毕竟这是一种事实意义上的反编译和反混淆行为(这部分内容请在discord 频道上查看)。这部分内容仅供学习参考,不管你是开发者还是普通玩家,请遵守 SEA 的最终用户守则,并尊重并淘米的一切知识产权!

现在你只需要假设这一步相关的内容都已经完成,并且开展相关工作的支持主要是在serverlauncher中提供的,core 中只是提供了一份d.ts定义文件,你可以在core/types/@seerh5中查看。

下面开始正式介绍在 SEA 的核心之下到底进行了哪些工作。

游戏修改 - Common 模块

工具函数与钩子,SEAC 提供的最基础能力。

请参阅Common 模块了解 SEAC 提供的工具函数集。

另外请务必查看Hook 教程

游戏常量与 TypeMaps - Constant 模块

一些常用枚举,以及扩展点所用到的 TypeMaps。

请参阅Constant 模块查看所用可用的常量。

另请参阅:扩展点教程

内置功能集合 - Engine 模块

SEAC 提供的内置游戏功能合集。SEAC 的职能是对下进行封装,对上提供接口与抽象。这个模块就是最直接实践这一职能的部分。

请参阅Engine 模块查看这些基本的功能函数。

以及和 Engine 模块配套的收发包教程