HTML5 游戏如何反作弊?

2016-01-07 13:03:58 +08:00
 falcon05
HTML5 游戏,可能会有这样的需求,比如游戏结束要将用户的得分提交到后台,之后会形成一个积分榜。因为 html5 游戏整个运行实际是在客户端,所以必须写个 ajax 来向后端服务器提交数据,参数是得分和用户 id 。但是恶意用户稍有开发知识也可以不老老实实玩游戏,直接通过这个请求地址去提交任意的得分和用户 id 。这不就乱套了吗?我就想问问对这方面大家有什么好的想法没有。
7899 次点击
所在节点    问与答
26 条回复
klausgao
2016-01-07 22:06:51 +08:00
如果是微信内做的 h5 游戏,开始之前要 oauth 登录,就能限制必须在微信内运行,也就不好破解了
temberature
2016-01-07 22:52:31 +08:00
严格意义上,除非你的游戏是图灵测试的一种才能杜绝。
m939594960
2016-01-07 23:03:37 +08:00
我感觉完全可以看看 pc 端的游戏怎么做检测
心跳包每个心跳包返回 key 每次发包的时候根据 key 生成加密(每个包一定要设置 过期时间 而且尽量保持快点 这让做挂的人调试起来特别麻烦)
js crc (不知道现实不) 静态 CRC + 每次请求 JS 不同加载不同动态 CRC
点与关键数据检测 (游戏任务 /打斗 点记录 每( 10/20 )个封包时候悄悄地发送一下最近经过点(不发游戏 也不会出现任何故障 但是最后成绩提交不上 或者第二天封号))
如果 真正想做这个反检测的话 可以看看现在世面上主流的检测比较强的游戏 的检测方法 例如地下城 天天酷跑 你会找到很多灵感的

以上都是我瞎说的。。 我也只是想想
m939594960
2016-01-07 23:10:52 +08:00
我仔细看了下 好像只是那种小游戏 最后要提交积分那种 上面说的话就当没看见吧
又去看了看 43399 的小游戏 造梦西游
http://www.4399.com/flash/78072.htm
也是采用的 post 提交最后的积分

verify:3094ce8651f4f54a6d7319f39885e4ff
session:-1
title:孙悟空
token:
refer:http://s8.4399.com/4399swf/upload_swf/ftp7/hanbao/20120107/6/tylb1970.htm
index:0
uid:*******
gameid:100015389
data:eNrtWktv2zgQvu2hvyLw.....

他发送的数据包大概是这样的 你可以看看他是如何加密的。。
其实要完全杜绝是不可能的 像现在的端游 私下 都流通着很多脱机外挂
只能增加分析难度 降低他们外挂的利润 有能力的人不屑于搞你游戏 没能力的人搞不懂就好了
pepsin
2016-01-07 23:29:12 +08:00
提交的数据必须是个加密过的字符串, 最好通过 https 传, JS 全局做 minify. 拼字符串的时候分数通过位操作去做.

不能说完全防住, 但是防个大多数稍懂的人也是够了.
pubby
2016-01-07 23:55:23 +08:00
@m939594960 嗯,只能通过各种方法增加作弊难度。有利可图,破解是迟早的事情,需要续斗争。

几年前破解过一种 flash 加密,每次 swf 文件的加密部分算法和参数都在变
最后写了个简单的 AS3 ByteCode 模拟器专门跑那部分代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX