前言
目前市面见到的手游有很多是cocos2dx类型,我将以自己的经验对它做一个简单的逆向和保护的讲解。
分析流程
1、 特征识别
Cocos2dx类型的游戏,在安装包lib目录下,会有libcocos2djs.so文件
在assets下有index.jsc文件
2、 关键代码位置
Cocos2dx的关键逻辑一般都在index.jsc文件中,这个文件解密后是js代码。
3、 找密钥
解密index.jsc,密钥在libcocos2djs.so中,这个so会用xxtea算法解密jsc文件,我们可以通过直接搜关键字符串“Cocos Game”找到密钥,如下图,字符串旁边的就是密钥
也可以通过ida分析so文件,通过xxtea算法定位到密钥,如下图,打马赛克的为密钥,它会经过jsb_set_xxtea_key设置密钥,后面用来解密index.jsc文件
4、 解密
网上解密工具也不少,但是总感觉有各种问题,这儿推荐一款JscDecodeCsharp.exe,可以解密也可以压缩加密成jsc文件,网上一搜索就能找到对应的包。
5、 重打包
我们分析完代码,一般都会改改js代码,分析过程,我们可以插一些日志代码,比如console.log来打印出关键点的值,查看日志可以用android中logcat命令查看,或者用ddms这类看日志的工具查看。修改完代码后,关键的就是能重打包运行。
重打包也是用4中提到的JscDecodeCsharp.exe,截图如下,解密时将文件拖入程序即可解密出js代码到输出框中,加密时,点击新加密,会自动把输出框中的js代码压缩并加密,具体使用方式,读者多探索几次就熟悉了。
保护思路
1、 so加固
可以对app做整体加固,再对so做一个加固,或者对so中的字符串做加密,so整体做个代码膨胀增加被分析的难度。
2、 文件校验
增加对index.jsc文件的校验,防止jsc文件被替换。增加对so被hook的检测,防止hook so替换js代码。
3、 js混淆
Cocos2dx的核心代码都在js中,js相对反编译后的其他代码,比如c,汇编等,更容易看懂,建议增加一些混淆,字符串做一些加密。
总结
cocos2dx类型的app个人觉得相对还是比较好分析的,没做保护的app可以当一个新手练习逆向的例子。
原文始发于微信公众号(移动安全星球):安卓Cocos2dx-js游戏攻防
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论