c++ - 防止dll被修改

标签 c++ winapi dll

我正在为一个游戏编写一个 C++ WinAPI DLL,它包含一个小的反作弊功能,但如果有人决定 NOP (0x90) 整个反作弊功能(我不是 PRO逆向工程,但我相信这是可能的)。

有没有办法防止我的 DLL 被修改?

最佳答案

即使您可以阻止人们修改您的 DLL,也没有什么可以阻止其他人用他们自己的版本替换您的 DLL,该版本在您的 .exe 可以确定的所有方面都与您的行为一样,但在某些特定方面有所不同- 除非您也在 .exe 中保留 DLL 的完整拷贝。

与其让 .dll 难以更改,不如花时间和精力让它更难作弊。举例来说,我们有一个吃 bean 人游戏(因为大多数人都会熟悉它),那么我们可以发送吃 bean 人在路径上吃掉的所有“白色药丸”的数量(和位置?),并且到达那里所花费的时间。如果游戏随后编辑 .dll 以将每个白色药丸的分数提高 10 倍,或者编辑游戏以使吃 bean 人的移动速度快 10 倍,您可以验证它是不正确的,因为在每个级别您都知道吃 bean 人移动的速度有多快,每个白色药丸吃 bean 人应该得到多少分。玩家被杀的次数等也可以包含在发送到服务器的信息中。

类似的原则可以应用于“射击游戏”,或者依赖买卖东西的游戏,等等。如果您详细记录了玩家为获得分数所做的操作,则可以验证“这是可能的”或“这是不可能实现的,因为您无法通过在 1 秒内击落 10 艘 spaceship 来获得该分数第二,一艘宇宙飞船需要 10 次命中才能击落,每发子弹需要 1 秒”。

关于c++ - 防止dll被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18312800/

相关文章:

c++ - std::is_assignable<A, B>::value 在 A 具有可变参数构造函数时始终为真

VB.NET/WIN32/WMI 监控打开网络连接的最佳方式

c++ - 使用 def 文件从可执行文件中导出函数

c++ - 在 32 Borland C++ Builder 中使用 64 位 DLL

c++ - opencv clahe参数解释

c++ - 避免内存泄漏

winapi - RmGetList 始终返回 0x5 ERROR_ACCESS_DNIED

c++ - 从 C++ dll 返回数组到 matlab

c++ - 在 OpenCV 中执行 Eigenfaces 算法时出错

c++ - 与::函数语句混淆