- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
所以我们现在已经经历了好几次,我们发布了一个游戏(以便宜的价格),有人破解了它并把它放在镜子上。我们为所有应用设置了 Google 快讯,因此我们每天都会被告知谁在进行黑客攻击。到目前为止,我们已经按照 Google 的建议实现了许可服务,每次使用唯一设备 ID 启动许可时,我们的盐都是随机生成的。当应用程序第一次启动时,我们运行一次检查服务。然后,我们为键和存储的值生成一个 512 个字符的散列,然后在 SharedPreferences 中进行比较。
现在,我知道检查一次可能是应用程序被阻止的地方。我们的字节码很可能在没有启动检查的行的情况下被查看和重新编译。
从这里开始,我不想混淆我们的代码,因为我之前已经看到它被破坏了。我想要一些更扎实的东西,我也想学习如何正确地做到这一点。在这一点上,我更感兴趣的是学习而不是赚钱,因为只有 2% 的人会寻找破解版。
到目前为止,我自己已经想出了一个随机数生成器,它放置在游戏的几个启动区域中。启动时(例如,50 次中有 1 次)检查许可证。我知道这会使破解变得更加困难,因为破解者必须消除每个案例,编译,消除,编译。但是,这种方法仍然可以破解……那么你们有什么建议?同样,我对这个安全过程非常感兴趣,所以请教育,不要把它变成关于混淆或基于时间戳定期检查的讨论。
谢谢
最佳答案
我的想法不是黑客证明,但可能会消除一些对黑客游戏的兴趣。
免费增值模式
1) 前 5-10 个关卡免费,这样人们就可以免费学习游戏并获得一些乐趣。更少的人想要破解第一关,游戏将通过免费增值模式传播得更远。
共享软件/集群关卡
2) 让部分游戏关卡或逻辑保持在线。例如。当达到 5 级或 10 级或 15 级时,下载游戏的小部件,每次提交游戏的进度日志,并根据可能的值 + 哈希码进行验证。这也许可以自动关闭被黑客入侵的帐户。
隐身作弊者保护
3) 您也可以只计算您在游戏中放置的“小警告标志”。不要一开始就检查“验证”,不要将这些标志构建到游戏逻辑本身中。不要让它破坏游戏玩法,因为那样没有人会寻找它。然后当用户到达怪物级别的末尾时,检查是否有任何记录的警告标志。这些不会出现在游戏中,因此拥有被黑版本的不知情的用户可能会玩几个小时/几天,然后突然意识到他/她无法完成游戏或进入下一个级别,因为游戏有一个“错误”。用户不知道的是,这个错误只发生在被黑的客户端上。
结论
比 cookies 聪明。愚弄他们以为工作已经完成。进行版权保护,并知道更高级的破解者将能够将其删除。但是他们可能不想玩50级来检查破解是否也能一路奏效。
一旦他们意识到这个问题,他们可能也会开始破解它。但是,如果您将游戏分解为关卡包,您仍然可以在每个包下载之间进行验证。因此,一旦您收到被黑的客户端哈希数据,只需执行一个异常并在客户端上使游戏崩溃。哎呀游戏崩溃了。不要告诉它,因为它被黑了。可能会发生程序错误。 :-)
同样,它不是黑客证明。但这可能会惹恼他们,让他们继续进行下一场比赛。最后,您还可以定期更新游戏,只有最新版本才能“发布记录”等,因此活跃用户必须更新以保持循环。
关于Android游戏不断被黑客入侵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600143/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!