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