c++ - 进程保护

标签 c++ dll crysis

我为一款名为 Crysis Wars 的 PC 游戏编程,最近玩家一直在不断要求新游戏更新(社区补丁)来解决问题,包括一个颇具讽刺意味的脚本错误。

有几种名为 Infinium、Gamg、Annihilator 和 Longpoke 的游戏黑客,它们依靠 DLL 注入(inject)方法在游戏中放置黑客和作弊,而不会引起内部反作弊系统的注意。 这些 hack 非常简单,通过十六进制值修改来利用主要游戏 DLL 的代码,有些(如 Gamg)是使用游戏引擎自己的 SDK 制作的(我知道这个 hack 的创建者)。

和其他人一样,我可以访问 CryEngine 2(游戏引擎)SDK(包括主游戏 dll 的源代码),我建议修改所有游戏功能的名称和位置(客户端和服务器)所以现有的 hacks 将不再有效。

这能阻止通过修改主游戏 dll 的十六进制值进行的黑客攻击吗?我确认使用 SDK 进行的黑客攻击将不再起作用,但我想在尝试之前与其他人核实,因为这需要大量工作。

基本上,我要问的是:

黑客正在通过更改源代码来利用游戏中的 DLL,如果我更改源代码中的所有功能并发布游戏的(社区)更新(不发布新源代码),黑客是否能够可以毫无问题地使用相同的技巧吗?

如果这看起来令人困惑,我深表歉意 - 如果我需要更清楚,请务必说明。

最佳答案

你会破坏一切,合法的和非法的模组。非法模组可能很快就会被修复;对您提议的更改进行逆向工程非常简单。

更好的方法是打开Data Execution Prevention 并hook 绕过DEP 所需的VirtualProtect 函数。然后,您将能够捕捉到安装稍后 Hook 的尝试。当然,请检查是否没有现有的 VirtualProtect 钩子(Hook),也没有任何已知的 DLL hack 已经存在。

关于c++ - 进程保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21779500/

相关文章:

c++ - 成员函数指针的类型推导

c - 实现插件框架的最佳方式——DLL 是唯一的方式(C/C++ 项目)吗?

c++ - Unresolved external symbol - 指南中有错误?

windows - 重新打开关闭的文件 : Lua

c++ - C++中的非阻塞线程安全队列?

c++ - 如何将 Eigen 库添加到 C++ 项目中

c++ - c++11 有类似 quint8 的东西吗?

c# - 无法加载dll : Module cannot be found

c - windows下如何拦截C库调用?

c++ - 来自 CLI 的 GUI 窗口