如何防止so文件被黑客入侵

How to prevent so file hacking in so file

在我的应用程序(unity5,il2cpp build)中,有一个函数像

"GetScore()"

不幸的是,我在黑市上发现了我的应用程序的被黑版本。被黑版本的 "GetScore()" 函数总是 returns 100。原始 return 值必须小于 10。

我想这个被黑的应用程序是通过使用 'il2cppDumper' 并将我的 return 值更改为 100;

重新打包的

有什么办法可以避免这个问题吗?

安全始终是让黑客更难入侵的问题 - 你永远无法让他们无法篡改。

所以这里有一些想法:

  • 混淆:GetScore() 得到 BananaJungle() - 黑客如果不花几个小时(希望如此)逐步查看源代码就无法找到正确的函数
  • 在多个点验证分数:调用 GetScore() 的函数应该进行完整性检查:"is it below 10?"
  • 除此之外:您可能希望忽略 10 以上的分数,以欺骗他成功的黑客。您可以在 2 小时左右后锁定应用程序。
  • 在某处添加一个 ScoreLogger 来记录分数的历史记录,因此 getScore() 可能 return 值 <10 但有人可能只是将代码中的分数覆盖为 999999。ScoreLogger 将检查分数历史记录用于跳跃等
  • 用总游戏时间(大约)验证分数

你永远不会阻止黑客入侵你的游戏,即使它确实有一个支持服务器。只要看看所有非官方的魔兽世界服务器。如果你有服务器,你可以保证事情相对安全,你保证它的源代码安全,没有它的服务器你的游戏就毫无意义(想想没有多人游戏功能的 Dota 2......)。即便如此,你也无法真正验证玩家的一举一动,除非它是一个回合制游戏,并且你实际上将每一个动作发送到服务器进行处理(例如,这适用于炉石传说,但不适用于魔兽世界,因此所有反-作弊工具)。 EA做不到,Rockstar做不到,动视做不到,再牛逼的Denuvo也做不到,你肯定做不到。

但是,您应该停下来问问自己为什么您希望您的游戏如此安全。在您阻止的每 1000 个作弊者中,也许会有一两个真正付钱。你应该在安全方面付出适度的努力(听取 KYL3R 的建议),只是为了让诚实的人保持诚实。不诚实的人总能找到办法,所以不要太担心他们,以至于你最终会把时间浪费在(无用的)安全上;您可以花时间改进游戏。

哦,顺便说一句,这也是防止黑客入侵的一种方法:频繁更新游戏。他们没有生活,但他们没有足够的时间每周继续制作市场上每款游戏的破解版。