![]() | 1 laommmm 2024-07-03 11:26:13 +08:00 via Android 都做游戏引那么大的包了,都舍不得引 200K 的加密包? |
3 Marthemis 2024-07-03 11:34:58 +08:00 普通的。浏览器打开 f12 ,找到提交分数的接口,找到在哪个方法调用的,将 score 这个参数固定传一个 9999999 。 |
![]() | 4 zephyru 2024-07-03 11:44:21 +08:00 @zero3412 这种写在前端的话,对着源码 debug ,找到加密前提交前即将执行的函数,加个断点,自己想提交什么提交什么区别应该不大 |
7 renmu 2024-07-03 11:55:55 +08:00 via Android 对用户每一步操作发送信息到接口,最后计算操作是否与分数一致 |
![]() | 8 hezhou920 2024-07-03 11:56:37 +08:00 我感觉根本上前端无法解决掉这个问题,只能增加篡改难度。根本上解决还是得将计算逻辑放到后端。 |
11 LuckyLauncher 2024-07-03 12:12:32 +08:00 能说一下是什么类型的游戏么,感觉只能加风控提高破解成本或者将得分放到后端计算 |
![]() | 12 zero3412 OP @LuckyLauncher 可以理解为纯前端得分的 html5 游戏,类似 120 秒倒计时填词,余多少秒即为得分值, 但后台都是 119 秒就完成的 -_!! |
![]() | 13 imdong 2024-07-03 12:25:38 +08:00 via iPhone 贵司这代码好眼熟…端午女朋友公司的 H5 活动,抓了一下代码,连变量名都一样,看着就是一个通用模板然后改一下素材就上线的。 提交接口分数有加密,加密的方法是一个看起来随机的函数名,但所有的代码都没有搜索到相关内容,但好巧不巧不巧看到一段所谓“最强”加密后的代码,好巧不巧不巧鄙人擅长此加密的脱密,好巧不巧又是这个加密里面最容易还原的,两分钟就取出函数内容,好了,现在,先调用函数算出一个分数的密文,然后复制一个请求到 curl 命令,替换加密分数,回车,搞定。‘前后总耗时 30 分钟’ 端午前一天,女朋友拎着活动奖品回家了(特意刷的二等奖,因为一等奖不需要) |
14 LuckyLauncher 2024-07-03 12:49:02 +08:00 @zero3412 #12 首先从风控角度不可能 1 秒就完成游戏的,这些账户设备可以都 ban 了,其次,可以记录开始时间,每填一个词都记录下时间,时间过于离谱的也按作弊处理 |
![]() | 15 zero3412 OP @imdong 哈哈哈,这边代码中没有这个“最强”加密函数,也没有为得分进行加密,能分享下这个最强加密么,至少给你造成了 30 分钟的难度。 |
16 hwf 2024-07-03 13:40:26 +08:00 每道题记录一下答题填写的时间, 不合理的就按作弊处理 |
![]() | 17 vace 2024-07-03 13:48:12 +08:00 直接提交分数这种,仅在前端无法避免,加密也无法避免,只能不断提高门槛,踢掉一些脚本小子。 简单的互动可以服务端验算,把用户的操作 log 下来,在服务端推导分数验证,但开发成本比较高了。 |
![]() | 18 imdong 2024-07-03 14:12:10 +08:00 via iPhone ![]() 关于这个加密可以在我资料页进我博客搜索加密,最牛相关关键词找一下,应该会有 3 篇文章讲解,具体细节我也忘记了。 至于怎么反破解,如果只是小游戏,短期的东西,我给你一个实现简单效果好的方案: 首先游戏道具生成之类的不要真随机,要通过下发随机数种子,然后要有带时间的得分纪录,客户端不要只提交分数,把种子和得分纪录都提交。 服务器拿到数据,要确认种子是自己下发的,且只能用一次。然后分数保存到数据库就好了。 什么?你问我得分 log 呢?丢掉,直接丢掉。没用的东西,只是障眼法。 你要在客户端就体现出:我做了很多防御,这个东西搭眼一看就知道是一时半会搞不定的东西,还是别浪费时间了。放弃放弃。 @zero3412 #15 |
![]() | 19 zephyru 2024-07-03 14:14:36 +08:00 @zero3412 分数计算上报只要在前端做,就总会被绕过去/破解,无非是成本问题,真的想解决,只能把操作传给后端,让后端去算,(不知道把这个逻辑丢到 worker 里去会不会更安全些?没试过) |
20 Nitsuya 2024-07-03 14:44:18 +08:00 这种直接改 js 逻辑,排除掉错误,加大得分触发率,然后正常的玩儿游戏,最后提交老高的分数....曾经无数个 V 号,试探服务器 ban 上限....这种很难搞,因为根本不从报文入手. |
![]() | 21 tomatocici2333 转到后端处理才能从根上解决 |
![]() | 22 neptuno 2024-07-03 21:27:46 +08:00 via iPhone 用户手册里面没说刷票作废成绩吗 |
![]() | 23 a62527776a 2024-07-03 21:42:40 +08:00 前端重放录制 人工审核呗 |
![]() | 24 laommmm 2024-07-04 09:42:30 +08:00 via Android 你有做代码混淆吗? 买第三方混淆服务,混淆后发上去试下。 |
25 geekdonie 2024-07-05 00:41:22 +08:00 前端防不住的,就算你把代码混淆掉,只抓网络请求一样分析出来。 真要搞的话就从服务端入手,分析用户的异常行为,人工判定或者训练模型去机器判定。 所谓的防只是加大破解难度而已,还要考虑一个投入产出比,花 100w 去强化一个只值 10w 的项目那就没必要了。 我也是做 H5 的小游戏,每个游戏最后提交一个成绩计入榜单,根本不怕刷,因为排名不涉及核心业务。 |
![]() | 27 seedhk 2024-07-05 10:40:29 +08:00 说到 H5 改数据,让我想起阿里月饼事件。。。。。(手动狗头保命) |