2013-05-29 37 views
0

我刚刚在youtube上观看过this视频。据我所知黑客总是能够破解,但我正在寻找一种解决方案来提高我的游戏安全性。使安卓游戏与黑客行为更安全

我不希望用户能够更改他们的硬币。加密或混淆会成为一种选择吗?

我正在寻找一个轻量级解决方案。

请分享你所知道的或已经做了的事情,以防止(更难)发生这种情况。

回答

0

最可靠的方法是存储重要信息服务器端并让客户端与服务器交互。 由于这些攻击仅在客户端尝试购买硬币时才会出现在客户端,因此您应该询问服务器服务器是否允许购买。

当然,这可以通过劫持网络响应,伪造服务器,以及如果不添加安全措施而遭到黑客入侵。但至少这种黑客将没有任何效果。

但是加密或混淆应该在某种程度上起作用,因为它不可能搜索该值,但是如果有人反向设计你的应用程序,它不会很难弄清楚它是如何完成的。 ProGuard可能会让你更安全一些,但服务器端仍然是最安全的方式。

1

我用数据和盐创建一个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,因此它是无效的!显然这不是绝对可靠的,用户可能会对代码进行反向工程并对其进行更改,但这会让事情变得更加困难!

有些人仍然试图修改它,但随后我发送一条消息给服务器,标志着用户成为骗子!