我刚刚在 youtube 上看过这个视频。据我所知,黑客总是能够破解,但我正在寻找一种解决方案来提高我的游戏安全性。
我不希望用户能够更改他们的硬币。加密或混淆是这里的一种选择吗?
我正在寻找一个轻量级的解决方案。
请分享您知道或为防止(使其更难)发生这种情况所做的事情。
我刚刚在 youtube 上看过这个视频。据我所知,黑客总是能够破解,但我正在寻找一种解决方案来提高我的游戏安全性。
我不希望用户能够更改他们的硬币。加密或混淆是这里的一种选择吗?
我正在寻找一个轻量级的解决方案。
请分享您知道或为防止(使其更难)发生这种情况所做的事情。
我用数据和盐创建了一个 MD5 哈希,并将其存储在数据库中。
例子:
Score: 1234
Lives: 3
Calculate MD5 from: "fsjdhASd8adnsa9asdmasdsd#1234#3#AS88asdDA*ASD8ASdmas"
Store on the database: 1234|3|b7f67f11fed055cce28d6f50fd829e9c
从数据库中读取时,我将分数和生活值与我知道的盐连接起来,并检查它是否与存储的 md5 哈希匹配。
例子:
Read score = 1234
Read lives = 3
Concatenate "fsjdhASd8adnsa9asdmasdsd#" + score + "#" + lives + "#AS88asdDA*ASD8ASdmas"
Calculated MD5 = b7f67f11fed055cce28d6f50fd829e9c
Calculate the MD5 from this string and check if it matches with the stored hash
如果分数更改为 9999,我会得到哈希 0d64ebead4451f826c15b5d03853f8da,因此它是无效的!
显然这不是万无一失的,用户可能会对代码进行逆向工程并对其进行更改,但这会使事情变得更加困难!
有些人仍然尝试修改它,但随后我向服务器发送了一条消息,将用户标记为作弊者!
最可靠的方法是存储重要信息服务器端并让客户端与服务器交互。由于这些黑客仅在客户端尝试为硬币购买东西时才属于客户端,因此您应该询问服务器服务器是否允许购买。
当然,这可以通过劫持网络响应、伪造服务器以及不添加安全措施来破解。但至少这种 hack 不会有任何效果。
但是加密或混淆也应该在某种程度上起作用,因为它无法搜索该值,但是如果有人对您的应用程序进行逆向工程,那么也不难弄清楚这是如何完成的。ProGuard 可能会让你更安全一些,但服务器端仍然是最安全的方式。