各位游戏开发者同僚们,我想你们一定不想自己的游戏上线后被Crack利用、破解的吧?
或许你有想过,通过各种技术手段再一定程度上减少损失,但还是会被XX掉
在开始之前我先给大家介绍写提纲~
1.了解并知晓 | Crack如何一步步破解你的资源,并利用的
2. 加密的手法 | 针对不同的需求运用不同的技术
3. 科普时间 | 预判他的预判从而让自己预判
4. 做点手脚 | 在游戏包中下暗雷、暗桩、树人
5. 安全等级划分 | 敌人诡计多端,应当逐一当断!
【1.了解并知晓】
好戏开始了!首先先介绍一下各种Crack者
初级:
1.利用apktools 对 你的APK/APP 进行解包 | IOS 只需要改后缀为 .zip即可
2.将游戏工程目录拷贝出来,查看所有工程资源即可
3.如果有加密(图片、代码)在利用脚本、工具解密(通为市场流动的)
初级举例图:
描述:该游戏的资源都没有进行加密,而且内容很多
中级:
1.利用apktools 对 你的APK/APP 进行解包 | IOS 只需要改后缀为 .zip即可
2.将游戏工程目录拷贝出来,查看所有工程资源即可
3.如果有加密(图片、代码)在利用脚本、工具解密(通为市场流动的)
4.如果加密无法现成解密则=>手动对其解密
描述:该游戏的资源核心部分加密,以至于被找到漏洞口,从而全员丢失
高级:
1.利用apktools 对 你的APK/APP 进行解包 | IOS 只需要改后缀为 .zip即可
2.将游戏工程目录拷贝出来,查看所有工程资源即可
3.如果有加密(图片、代码)在利用脚本、工具解密(通为市场流动的)
4.如果加密无法现成解密则=>手动对其解密
5.解剖代码拷贝出js部分代码,进行解密还原,然后改写换皮,市场流通
描述:该游戏资源全部加密,不过是用了官方的 md5混淆。该方法一样可以被破解,还原名称回去
不过代码部分为JS 加密。还是很弱。。
建议大家用我推荐的 加密方式 ! 在本文章 3,4阶段中会做描述介绍。
【2.加密的手法】
[1星]
方法名:远程资源(res)
运行时: apk/app 游戏包的资源通过远程服务器获取到,而在获取时需要交换token才能取得资源文件
优点:使应用程序加快访问和下载速度,最简单的项目优化和加密手段
缺点:如果觉得这种加密可以称为加密,那真的是大聪明。
[2星]
方法名:异或暗调(res)
运行时:apk/app 该类游戏通常会有预加载场景,运行到此时不论资源存储在哪里,它一定会对所有图片资源进行异或反调。使得之前不可查看的方式变为可查看、可使用。
优点:可以防御 初级Crack 同时项目结构看起来清晰有序
缺点:预加载时间很长,在打包时要解决很多问题
异或暗调(res)加密方法:
建议:如果是个人游戏或小工程,含金量不大就用这种足够
[3星]
方法名:Aes秘钥加密(res、js、cpp\lua)
运行时:apk/app 游戏包的资源 每次运行时被该头文件库 进行解码
优点:可以防御 初级Crack,中级Crack
缺点:资源加载的时间变得更长了一些,同时在CC中,可能库引用不当会出现很多意料外的问题
Aes秘钥加密(res、js、cpp\lua)加密方法:
可以参考这篇文章来学习写法
CSDN: AES加解密之C++实现
https://blog.csdn.net/lixiang987654321/article/details/109009397
[4星]
方法名:Audio dk加密(res、js、cpp\lua、音频)
运行时:apk/app 游戏包的资源在首界面启动时,才会开始释放所有被加密的资源。且释放出的内容为缓存文件,对用户不可见、不可使用。即使搜索到也全都是无法打开的音频文件或被损坏的文件
优点:1.可以防御 初级Crack,中级Crack ,高级Crack
缺点:该加密方式为国外圈内捞金行业内使用的方法
1.使得游戏会消耗大量性能资源,且运行速度缓慢
2.硬件需求很高(手机设备、网络)
Audio dk加密方法非常抱歉,我不会写。我只懂得破解。有需求的朋友可以顺着这个逻辑自己去进阶
[5星]
方法名:odBat加密(res、js、cpp\lua)
运行时:apk/app 游戏包的资源在运行调用时,才会被解密在设备内存中(缓存)。且资源全部以Aes秘钥进行加密。如果crack操作不当,则直接会中圈套;
优点:可以防御 初级Crack,中级Crack ,高级Crack ,大神级Crack
缺点:同样的该加密方式也是国外圈内使用的方法
1.使得游戏会消耗大量性能资源(手机发热很快=》掉线、卡退)
2.硬件需求很高(手机设备、网络)
odBat加密方法:依赖前面的几种方式,只是它多了一个手脚模式。不过这种方式可以效仿借鉴!
【3.科普时间】
有许多CC开发者,不会加密,或者加密的方式过于简单。
还有一些加密很繁琐,外行看起来就很复杂!在Crack面前无卵用的加密手法。
防御,要先知道对方想要攻击你哪里。才能加强自己的技术,保护自己的知识。
先来了解一下破解者,拿到你的程序后,都会做什么吧
1.遍历一遍所有目录,看看代码和资源。(高效的算法、特效、逻辑或,资源利用)
2.有无重复利用的价值(二开换皮,上线这种)
3.倒卖你的游戏
4.查看代码,找到api接口处,渗入后端(攻击、恶心、敲竹杠、妨碍你)
个人觉得,前面3者到还好,最后一种就很恶心了,对方不仅拿了你的东西,还要阻碍你的游戏运营或者。。。所以,防御的手段是必须需要的。而且一定要趁早!针对自身的项目,采取对应的加密方式。
不是哪种高级就用哪种。 “知晓痛楚,了解痛楚,感受痛楚”—佩恩说的
我们都有这个痛楚,接下来针对以上第4点,科普一下API防御
api接口如何防御?不论后端是java\cpp\node\php
api攻击方式分为:
- 疯狂请求(拒绝服务) 拉爆你的服务器延迟
- 回执请求(访问服务) 我发1个1,你要回我64个1
- 探测请求(索引目录) 不停的给你全身检查,消耗后端性能
- 验证码请求(反正不是我的钱) 不停的消耗你的验证码次数
socket类: - 垃圾填充(垃圾服务) 在大厅聊天系统中塞入乱码、编码 填充你的数据库
- 伪劫持(Ludp)截获自身与服务端的数据,改写其内容长度内容
- 要塞炸弹(Rmd2p)将事先写好的炸弹程序拷贝其核心底层编码,将其压缩成最短字节。然后通过socket某一项连接处,发送过去。一旦服务端接受。服务端会直接试图理解内容。然后就卡崩了。
api防御模式分为:
防御请求:做好验证机制,例如限制每IP时间段请求次数
防御探测:有专门的方探测工具和插件,装一个。服务器最好是linux,防火墙端口的放行进出很重要
防御垃圾:对内容限制长度和大小即可
防御验证码:同样做好验证,选用靠谱的第三方
防御要塞炸弹:对于匿名方、密文内容异常的包要做筛选接受验证的。
【4.做点手脚】
在游戏开发时、完成时都可以在代码内做些手脚
比如:
-
利用Aes加密方式,但cpp/lua文件中不包含token,需要通过socket首次接通时获取到,然后再对其资源进行解密。
注意:这里可能会被劫持socket内容,来查看你的报文。
加强防御:为你的socket内容,加密其内容,保护交互的token。
安全算法:sha1,sha512 其次sha256 , sha384
补充:sha256,sha384以均被本人破解过,未公布详细解法 -
利用Audio dk加密方式,能够非常有效的保护你的所有文件资源,同时非常考验Crack的耐心,但难免有些异常专注的人就是想一探究竟。 你还需要掌握一定的Bit语言基础,来对你的加密后的资源进行扰码加密
注意:前身的资源文件被解密后,audio格式的文件将会被打回原形!一定要留第二手[扰码]
加强防御:扰码是指将被加密的文件中写入一定的格式化乱码
var decode=[64][64][64][64]
每隔多少段,放入多少乱码。或乱码数值随机化,无规律。
【5.安全等级划分】
最后根据不同的项目等级,这里为大家推荐安全架构方式
项目团队安全架构:
注意点:防御好api接口处
注意点:防御好api接口处,在遇到攻击时,查看log日志是不错的问题排除方式
对于大型开发团队,建议前端资源加密采用 3.Aes加密(128位) .5 odBat加密方式
为什么不推荐第4种(Audio dk加密)
PS:已经是有许多作品的团队了,要考虑用户感受,第4种对用户很不友好,如果目标用户群体质量很高是可以考虑。 而且这种加密方式较为难实现,所以不是很推荐
最后感谢大家观看我的文章,希望以后各位开发的游戏大火!同时也希望Cocos 快点出新版本!
我是大菠萝!大大大大!菠萝!萝