欢迎光临
我们一直在努力

jc1文件怎么打开(【初夏教程】关于Cocos2dx-js游戏的jsc文件解密(二))

【写在前面】

—————————————————————————————————————

上一期#【初夏教程】关于Cocos2dx打包游戏的jsc文件的解密#后,有一些同学似乎遇到了一些新的问题,下面列举一些:

1-

利用ASCII字符串Cocos

Game来定位解密密匙在有些游戏中似乎行不通;

2-

拿到了正确的Key后,利用解密工具解出来依然是乱码;

3-

解密后的js文件用不用重新加密为jsc格式的文件然后打包回去;

4-

解密的密匙还能在哪里获取等等。

诸如此类的问题很多,希望看了下面的一些简单分析能为大家提供一些答案。

【初步分析】

————————————————————————————————————

研究逆向先看正向,从官网上下载CocosCreator开发工具,使用案例js工程尝试构建编译,在构建发布页面很清楚的看到了脚本加密选项。

按流程构建编译后得到简单的样本APK。关于APK内各个文件夹的作用和内容,这里不在多说,感兴趣的同学可以结合Cocos2dx源码进行分析。

先拿样本APK做简单的分析,先用Jadx-gui去java层稍微读下源码,了解下assets目录下二进制源代码的加载情况,在入口Cocos2dxActivity处我们看到有一个onLoadNativeLibraries函数,跳转到其声明发现加载了一个叫android.app.lib_name的字符串资源。

在AndroidManifest.xml下找到其定义为cocos2djs,即加载了libcocos2djs.so文件。

明确了加载Assets目录资源的操作大概率不在java层后,再结合非虫前辈的“jsc反编译工具编写探索之路”,研究对象随即转移到libcocos2djs.so上。

【构建过程】

————————————————————————————————————

通过阅读Cocos2dx源码发现,其脚本加解密用的就是

xxtea

加密和解密(和Cocos2dx-lua加解密相似)。进而结合CocosCreator了解到其构建项目的过程为:

1.

工程用到的所有js脚本聚合为project.js等几个脚本

2.

如果勾选“Zip

压缩”选项,会进行压缩project.js,会减少很多体积,进而可以减少包大小

3.

使用xxtea进行加密上述文件,生成project.jsc

4.

将project.jsc打包到apk、ipa等安装包中

在程序运行时,正好做了相反操作:

1.

使用xxtea进行解密

2.

如果勾选“Zip

压缩”选项,进行解压缩

3.

调用js代码

【实例分析】

—————————————————————————————————————

通过以上初步分析和构建过程的了解,怎么去获得Key值似乎就有些思路了。这里用两个游戏案例做分析,某Tap平台可下载:

某书院模拟器(A)

某公传承(B)

先拿游戏A分析,按上个帖子中的方法把安装包lib目录下的libcocos2djs.so拖进十六进制编辑器,搜索ASCII字符串:Cocos

Game,结果没有搜索到相关信息。

直接上IDA分析libcocos2djs.so文件,导出函数名很整洁看起来没有加什么奇怪的东西,说明没有做一些安全手段。搜索xxtea

/

key之类的函数名得到这几个相关函数:

先尝试直接在so层寻找明文的Key,函数jsb_set_xxtea_key看着简单,似乎直接设置了key,去看看有没有希望的Key值。F5伪代码看下,传入了一个字符串化的指针参数,大概率可能是Key。

回溯调用该函数的地方,看下传入的参数值。

以下楼层继续————————————————————————

赞(0) 打赏
未经允许不得转载:艾飞特资源网 » jc1文件怎么打开(【初夏教程】关于Cocos2dx-js游戏的jsc文件解密(二))
分享到

登录

找回密码

注册