我刚刚在youtube上观看过this视频。据我所知黑客总是能够破解,但我正在寻找一种解决方案来提高我的游戏安全性。使安卓游戏与黑客行为更安全
我不希望用户能够更改他们的硬币。加密或混淆会成为一种选择吗?
我正在寻找一个轻量级解决方案。
请分享你所知道的或已经做了的事情,以防止(更难)发生这种情况。
我刚刚在youtube上观看过this视频。据我所知黑客总是能够破解,但我正在寻找一种解决方案来提高我的游戏安全性。使安卓游戏与黑客行为更安全
我不希望用户能够更改他们的硬币。加密或混淆会成为一种选择吗?
我正在寻找一个轻量级解决方案。
请分享你所知道的或已经做了的事情,以防止(更难)发生这种情况。
最可靠的方法是存储重要信息服务器端并让客户端与服务器交互。 由于这些攻击仅在客户端尝试购买硬币时才会出现在客户端,因此您应该询问服务器服务器是否允许购买。
当然,这可以通过劫持网络响应,伪造服务器,以及如果不添加安全措施而遭到黑客入侵。但至少这种黑客将没有任何效果。
但是加密或混淆应该在某种程度上起作用,因为它不可能搜索该值,但是如果有人反向设计你的应用程序,它不会很难弄清楚它是如何完成的。 ProGuard可能会让你更安全一些,但服务器端仍然是最安全的方式。
我用数据和盐创建一个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,因此它是无效的!显然这不是绝对可靠的,用户可能会对代码进行反向工程并对其进行更改,但这会让事情变得更加困难!
有些人仍然试图修改它,但随后我发送一条消息给服务器,标志着用户成为骗子!