防止dll被修改

时间:2013-08-19 11:35:17

标签: c++ winapi dll

我正在为一个游戏编写一个C ++ WinAPI DLL,它包含一个小的反作弊功能,但如果有人决定NOP(0x90)整个反作弊(我不是PRO),它可以很容易地被绕过逆向工程,但我确信它可以做到。)

有没有阻止我的DLL被修改?

2 个答案:

答案 0 :(得分:2)

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

最好花费时间和精力使其难以作弊而不是难以改变.dll。比如说我们有一个吃豆人游戏(因为大多数人会熟悉它),然后我们可以发送Pac-Man在路径上吃的所有“白色药丸”的数量(以及位置?),以及到达那里的时间。如果游戏然后编辑.dll给每个白色药丸10倍的分数,或编辑游戏以便吃豆人的速度提高10倍,你可以验证它不对,因为在每个级别你都知道吃豆人的速度有多快,每个白色药丸的人吃多少分。玩家被杀的次数也可以包含在发送给服务器的此信息中。

类似的原则可以应用于“射击游戏”游戏,或依赖于买卖东西或其他任何东西的游戏。如果你有一个详细的日志记录玩家为获得分数所做的事情,你可以验证“这是可能的”或“这是不可能实现的,因为你无法从1中击落10艘太空船获得那个分数第二,当一艘太空船需要10次击中击落时,每轮射击需要1秒钟。

答案 1 :(得分:1)

我会说你最好不要将任何反作弊功能移到服务器端,或者如果它不是多人游戏,那么就不要试图阻止作弊了。

您可以做的一件事是生成DLL的哈希值,并在应用程序代码中针对已知值或针对服务或网站进行检查。您还可以将文件的哈希值用于其他一些任务,以及强制黑客广泛修改游戏代码而不仅仅是反作弊功能。这可能会阻止人们。

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