首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止dll被修改

防止dll被修改
EN

Stack Overflow用户
提问于 2013-08-19 11:35:16
回答 2查看 523关注 0票数 1

我正在为一个游戏编写一个C++ WinAPI DLL,它包含一个小的反欺骗函数,但是如果有人决定使用NOP (0x90)整个反作弊(我不是逆向工程中的专家,但我确信这是可能的),它可以很容易地被绕过。

是否要阻止修改我的DLL?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-19 12:20:54

即使你可以阻止人们修改你的DLL,也没有什么能阻止某人用他们自己的版本来替换你的DLL,这个版本在你的.exe可以确定的所有方面都和你的一样,但是在某些特定的方面做了一些不同的事情--除非你在.exe中也保留了DLL的整个副本。

把时间和精力花在让自己很难作弊上比很难改变.dll要好。例如,我们有一个Pac-Man游戏(因为大多数人都熟悉它),那么我们可以发送号码(和位置?)在路上吃了那么多“白药丸”,以及到达那里所花的时间。如果游戏编辑.dll给每个白药丸10倍的分数,或者编辑游戏使Pac-Man移动速度快10倍,你可以验证它是不正确的,因为在每个级别你都知道Pac-Man移动的速度和每个白药丸Pac-Man应该得到多少分。玩家被杀死的次数,这类信息也可以包含在发送给服务器的信息中。

类似的原则也适用于“射击游戏”,或者是依赖于买卖东西的游戏,或者其他的游戏。如果你有一个详细的记录,玩家做了什么来获得分数,你可以验证“这是可能的”或“这是不可能的,因为你不能从击落10艘宇宙飞船在1秒内获得这个分数,因为一艘宇宙飞船需要10次命中,每轮发射需要1秒”。

票数 1
EN

Stack Overflow用户

发布于 2013-08-19 11:55:39

我想说的是,你最好把任何反欺骗功能转移到服务器端,或者如果它不是一个多人游戏,那就不要费心去阻止作弊了。

不过,您可以做的一件事是生成DLL的散列,并根据已知值或服务或网站在应用程序代码中检查它。您还可以将文件的哈希值用于其他一些任务,并在本质上迫使黑客大量修改游戏代码,而不仅仅是防欺骗功能。这可能会吓退人们。

但是这些评论是正确的,只要有足够的时间和资源,任何事情都是可以破解的,你只需要让它不值得花时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18312800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档