步骤一、改后缀名为zip直接解压你找到APK,或者使用APKIDE等工具(自行百度)
步骤二、查看lib文件夹,发现libcocos2dlua.so,几乎就可以确认是cocos的游戏
步骤三、来到assets\res 目录,发现好多zip包,不能直接解压。默认几乎就是加密的zip,而cocos默认就是xxtea加密
很简单找来源码解密
步骤四、确定sign,用记事本打开zip文件,乱码前面的就是sgin
步骤五、找到解密的key,使用静态反编译工具ida(自行百度)打开libcocos2dlua.so,并打开view-Strings窗口,搜索sgin
,双击查看View-A,一般情况下附近的字符串就会有key
这里看见,可以大胆的猜测基本就是这个
步骤六、撸代码写解密程序吧
在quick或者cocos的lib代码里面找到xxtea的原始文件,很简单 ,一个头文件,一个源文件
写入一个工程,解密函数如下,自己看吧
/ XxteaDecrypt.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "xxtea.h"
#include <iostream>
#include <fstream>
#include <array>
using namespace std;
void decrptfile(char* srcfilePath, char* dstfilePath,int signSize,char* key ) {
ifstream srcfile;
srcfile.open(srcfilePath, ios::binary);
srcfile.seekg(0, ios::end); //偏移指针移到末尾
unsigned int fileSize = srcfile.tellg() ; //获取实际解密大小
fileSize = fileSize -signSize;
srcfile.seekg(signSize, ios::beg);
char* srcContent = new char [fileSize];
srcfile.read(srcContent, fileSize);
unsigned int retlen;
char * dstContent = (char*)xxtea_decrypt((unsigned char*)srcContent, fileSize, (unsigned char*)key ,strlen(key), &retlen);
ofstream dstfile;
dstfile.open(dstfilePath, ios::out | ios::app |ios::binary);
dstfile.write(dstContent, retlen);
}
int main(int argc,char *argv[])
{
for (int i = 0; i < argc; i++) {
cout << argv[i] << endl;
}
decrptfile(argv[1],argv[2],strlen(argv[3]), argv[4]);
int wait;
cin >> wait;
return 0;
}