前几日得到若干份Coco2d-js框架编译的APP。
于是捣鼓起了jsc文件的解密。
网上找了好多解密的资料。
思路是一致的。
warning 注意
是解密,不是逆向。
加密的流程
主要是这几个类型。
- XXTEA
- XXTEA + ZIP
- XXTEA + GZIP
网上的解密工具很少。
并且年代久远。
于是自己动手写了一份,来供自己快速调用。
XXTEA_Key的寻找
试了一些APP,发现多数未对key进行处理。
用010Editor搜索字符串jsb-adapter
或者 Cocos Game
在附近就能寻找到16位的key 形似 xxxxxxxx-xxxx-xx
还有一种通用的办法就是通过 Frida 进行Hook注入。
贴上代码
Java.perform(function(){ let xxtea_decryptaddr = Module.findExportByName("libcocos2djs.so","xxtea_decrypt"); console.log("[xxtea_decryptAddr]-> ",xxtea_decryptaddr); Interceptor.attach(xxtea_decryptaddr,{ onEnter:function (args) { console.log("[key]-> "+ args[2].readCString()) // 打印Key }, onLeave:function (retval) { } }) })
Hook libcocos2djs.so
中的 xxtea_decrypt
函数,得到xxtea_key。
脚本食用方法
我在GitHub也有写使用说明。
只需要将APP使用压缩包工具打开,将assets
文件夹中的src
文件夹解压到一个路径。打开Terminal/Cmd
,输入脚本指令。
python main.py [-d] [xxteaKey] [jscDir]
示例:
python main.py -d xxxxxxxx-xxxx-xx C:\DecJsc-master\src
脚本会在src/out
目录下输出解密后的文件。
至此完成解密过程。
发表回复