当前位置:网站首页>知物由学 | 小游戏的安全风险在哪里?
知物由学 | 小游戏的安全风险在哪里?
2022-07-27 15:50:00 【网易易盾】
受全球疫情影响,从2020年春节开始,小游戏用户开始暴增。除了微信小程序之外,快手、抖音、百度等平台相继上线小游戏。
小游戏满足了用户打发碎片化时间的需求,也可以对产品的社交关系进行反哺。因此,与大体积的手游相比,小游戏小巧玲珑,不过多占用手机资源,具有快速“安装”或无需安装的特点。其玩法简单,通常以休闲益智类主题为主,深受用户喜欢。当然,小游戏不仅是指以小程序形式加载的游戏,也包括安装包体积很小的游戏,例如白鹭、cocos2djs引擎编写的游戏。
在商业变现可观的背景下,原创小游戏被很多不怀好意的不法分子盯上,或被友商窃取了部分代码资源,或被插入一些广告恶意链接。本文将解答小游戏的风险藏在哪里?如何开展针对性的治理,确保小游戏的底层安全?
01 小游戏暗藏风险
代码被篡改将引发一系列问题,最常见的情况是游戏被盗版、广告泛滥,甚至给玩家带来隐私风险与经济损失。
1.1 盗版层出不穷
客户端研发人员对盗版行为深恶痛绝。一般情况下,不法分子通过获取.wxapkg文件,使用网上成熟的反编译工具进行解包,接着修改代码加之“换皮”,对部分的图片资源进行替换,轻松抄袭原创小游戏。
以曾经风靡一时的“合成大西瓜”为例,如果在微信上搜索对应的小程序,大量名称相似的同类型小游戏映入眼帘,大致如下:

此外,在3dmgame上进行搜索,以cocos2d打包安装包形式呈现的“合成大西瓜”对应版本不时出现,许多被修改为XX版:

由此可见,小游戏存在严重的盗版风险。最大的风险来自于对一些“原始的游戏”进行“二次改包”,快速打包形成新的安装包,意图空手套白狼,也不乏在其中加入一些恶意代码的行为。
总的来说,资源盗版一直以来是部分游戏的痛点,由于小程序结构的简单性,攻击者可以在不修改任何代码的情况下,直接在解包出来的文件中对资源进行窃取,继而重新打包进行发布。诸如此类的违法操作在行业中已是屡见不鲜。
1.2 广告无所不包
我们打开一款火爆的小游戏,总会在几秒内看到一个跳转的广告链接,大多以推广其他游戏为目的。
目前,一个小游戏中往往接入了形形色色的广告,有的是推广广告,有的是恶意广告,或者是修改正版的广告为自己的广告。玩家并不清楚广告的真正来源。除此之外,整个游戏过程中,一些诱导性的广告和分享行为相继出现,使得用户没有办法判断此广告的真正目的。由此看见,小游戏防篡改迫在眉睫。
02 小游戏安全解决方案
为了化解上述风险,易盾提供全新的小游戏解决方案。这里小游戏不仅仅指的是小程序端的安全问题,也包括在不同平台上发行的APK小游戏包,进行全面的安全保护。
2.1 代码保护
盗版的出现以及恶意链接与广告的植入,多是由于第三方获取了客户端代码逻辑,并在代码中修改与增加恶意内容。易盾为代码提供JS的保护,增加代码被分析的门槛,功能包括对于JS中关键代码的控制流混淆,变量名混淆,字符串加密,动态反调试,反格式化等功能,并通过不同的加固组合兼顾到性能,以下是代码保护前后的比较:
保护前:

保护后:

2.2 资源加密
小游戏apk资源
我们可以对apk里面的资源进行加密保护,包括png,.jpg,.js,.html,.json等资源文件,防止资源被盗取。此外,我们对于白鹭和cocos2djs引擎中的资源进行加密处理,并可以通过黑白名单兼顾灵活性。
小程序资源
由于小程序结构特殊,该类型游戏资源可以采用动态分包下发的方式增强安全性,即对于小程序中的资源进行加密,并使用自己唯一的特征进行解密,比如appid等。另一种方式是在图片中植入自己的水印特征,防止有意的攻击者进行改包。
数据保护
数据直接呈现给用户,尤其是用户的重要数据,保护数据是防盗的关键点之一。小程序可以通过随机更新版本,来迭代更新密钥,安全地设计密钥所在的位置,密钥随机多态地更新,以增加盗版者的破解成本。这种方式让盗版分子不能获得正确的数据,及时动态防范。
边栏推荐
- 公网域名如何解析到内网IP服务器——快解析域名映射外网访问
- Can oracle-linux-7.9 support oracle-19c ACFs file system?
- Initial polymorphism
- Explain the pile of binary trees in detail
- Because the employee set the password to "123456", amd stolen 450gb data?
- Soul 1: why is es more suitable for complex condition search than MySQL?
- How difficult the interview is! I was forced to survive the six rounds of interview of ant financial! Almost out (interview resumption)
- JSP自定义标签(下)
- Functions of C language
- x-sheet 开发教程:初始化配置自定义布局
猜你喜欢

Behind every piece of information you collect, you can't live without TA

Lichuang EDA - PCB layout (IV)

笔试缺考者入围教师招聘面试?河南祥符:个别考生成绩统计错误

Wechat applet realizes location map display and introduces map map without navigation

交换机和路由器技术-02-以太网交换机工作原理

js实现右键菜单栏功能

Because the employee set the password to "123456", amd stolen 450gb data?

Interviewer: what is scaffolding? Why do you need scaffolding? What are the commonly used scaffolds?

Notes on standardized management of "ancestral warehouse" of meituan meal

Branch loop statement of C language
随机推荐
Helm install kubevela complete makefile script content
Microsoft silently donated $10000 to curl, which was not notified until half a year later
Rare discounts on Apple's official website, with a discount of 600 yuan for all iphone13 series; Chess robot injured the fingers of chess playing children; Domestic go language lovers launch a new pro
细数国产接口协作平台的六把武器!
机器学习之评价指标(二)——分类评价指标
数据库超话(一)
Database hyperphone (II)
Understanding service governance in distributed development
工信部再治数据安全,网易易盾“隐私合规”守住企业经营底线
x-sheet 开发教程:初始化配置自定义布局
Flutter的布局
详解二叉树之堆
Tencent cloud upload
(2) CBAM integrated two stream project construction - data preparation
Functions of C language
Neural network implementation of handwritten numeral classification matlab
MySQL view and stored procedure
Behind every piece of information you collect, you can't live without TA
C语言怎么学?这篇文章给你完整答案
【obs】NewSocketLoopEnable 网络优化