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