Apollo 技术文档Apollo 技术文档
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
  • MMORPG 架构 QA

Q84: 如何防止内存修改?

核心结论

内存修改防护不能建立在“客户端内存永远守得住”这个前提上。

更现实的原则是:

  • 客户端内存可能被读、被改、被注入
  • 高价值结果不能只依赖客户端内存
  • 客户端保护只能提高成本,不能替代服务端权威

所以防内存修改的核心不是绝对阻止,而是把它能造成的伤害限制在较小范围。

一、内存修改真正能影响什么

常见包括:

  • 本地显示数值
  • 本地冷却显示
  • 本地可见性信息
  • 输入辅助逻辑

如果系统设计不当,它还可能进一步影响:

  • 非法移动
  • 技能滥发
  • 物品和货币变更

但这类高价值结果本不应直接由客户端内存决定。

二、服务端权威仍然是第一原则

例如:

  • 血量以服务端结算为准
  • 货币和物品以服务端状态为准
  • 技能冷却以服务端时间为准

这样即使客户端把本地内存里的值改了,也最多影响本地表现,而不能直接改写最终结果。

三、客户端保护的价值在于抬高门槛

常见手段包括:

  • 反调试
  • 反注入
  • 关键模块完整性校验
  • 内存布局扰动和加壳

这些措施无法保证绝对安全,但能提高外挂制作和维护成本。

四、不要把“显示安全”和“逻辑安全”混在一起

很多本地内存数据即使被改,也只会影响显示。

真正危险的是那些会影响服务端接收请求语义的本地状态,例如:

  • 本地辅助瞄准
  • 自动化判定
  • 非法可见性辅助

所以防护重点应按“能否影响最终结果”来排优先级。

五、行为风控依然要一起上

即使客户端防护做得不错,也不能只靠它。

更稳妥的体系通常是:

  • 客户端完整性保护
  • 服务端权威校验
  • 异常行为统计

这三层一起工作,才能既提高门槛,又避免只靠某一层。

六、工程上更稳妥的做法

常见做法是:

  • 高价值状态只以服务端为准
  • 客户端加入基础完整性和反注入检测
  • 可疑行为进入风控评分
  • 处罚依赖多维证据而不是单点客户端检测

七、常见误区

1. 防内存修改就是客户端安全的全部

不对。很多外挂根本不需要改核心内存,也能实现自动化和信息增强。

2. 只要加壳就够了

加壳只能提高逆向成本,不能建立业务可信性。

3. 客户端值被改了就一定会出事故

前提是服务端把它当真了。真正的根因通常在信任边界。

参考资料

  • 客户端完整性、反注入与服务端权威边界实践资料
在 GitHub 上编辑此页
最后更新: 3/20/26, 6:06 AM
贡献者: cuihairu