在我的应用程序(unity5,il2cpp构建)中,有一个类似的功能
“ GetScore()”
不幸的是,我在黑市中发现了我的应用程序的被黑版本。被黑客入侵的版本的“ GetScore()”函数始终返回100。原始返回值必须小于10。
我猜想这个被黑客入侵的应用是通过使用'il2cppDumper'并将其返回值更改为100来重新包装的;
有什么办法可以防止此问题?
答案 0 :(得分:0)
安全性始终是使黑客更难的问题-您永远不可能使他们无法篡改。
所以这里有一些想法:
GetScore()
得到BananaJungle()
-黑客在不花几个小时的时间(不希望逐步浏览源代码的情况下)无法找到正确的功能GetScore()
的函数应进行完整性检查:“它是否低于10?” getScore()
可能会返回<10,但有人可能会将代码中的得分覆盖到999999。ScoreLogger将检查得分历史记录,以查看跳跃等。 li>
答案 1 :(得分:0)
即使它确实具有支持服务器,也永远不会阻止黑客入侵您的游戏。只要看看所有非官方的魔兽服务器世界。如果您拥有服务器,则可以使事情保持相对安全,可以确保其源代码安全,并且没有服务器就没有任何意义(请考虑没有多人游戏功能的Dota 2 ...)。即使这样,您也无法真正验证玩家的一举一动,除非它是基于回合的游戏,并且您实际上将每一步发送给服务器以进行处理(例如,这在《炉石传说》中有效,但在《魔兽世界》中无效,因此所有反作弊工具)。 EA无法做到,Rockstar无法做到,Activision无法做到,即使强大的Denuvo也无法做到,您当然也无法做到。
但是,您应该停下来问自己为什么,您希望自己的游戏如此安全。在您停止的每1000个作弊者中,也许实际上会支付一两个。您应该在安全性上付出一定的努力(听取KYL3R的建议),只是为了让诚实的人诚实。不诚实的人总会找到方法,所以不必担心他们,以至于浪费时间在(无用的)安全性上。时间可以花在改善游戏上。
哦,顺便说一句,这也是阻止黑客进入的一种方法:频繁更新游戏。他们没有生命,但是他们没有足够的时间每周制作市场上每款游戏的黑版。