Cocos2d-lua 以及 quick 的解密

步骤一、改后缀名为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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值