下面为大家讲解《部落战争》破解攻略之数据破解教程。

第一步:下载部落战争的apk包,右键解压得到我们要的资源。

第二步:解密资源 csv logic sc 三个目录的文件是 使用修改过的 LZMA 算法压缩的。

下载 LZMA 库,把Decode函数中的unsigned char header[LZMA_PROPS_SIZE + 8]; 改成 unsigned char header[LZMA_PROPS_SIZE + 4];,这样就可以解压了。

CFileSeqInStream inStream;

CFileOutStream outStream;

FileSeqInStream_CreateVTable(&inStream);

File_Construct(&inStream.file);

FileOutStream_CreateVTable(&outStream);

File_Construct(&outStream.file);

InFile_Open(&inStream.file, strFileName.c_str());

OutFile_Open(&outStream.file, strOutName.c_str());

Decode(&outStream.s, &inStream.s);

File_Close(&outStream.file);

File_Close(&inStream.file);

第三步:解密sc文件

首先sc文件是CoC的动画UI数据。其中包含了整张的图片信息:TextField,Image,Shape,MoveClip, Matrix,Color

csv表格里面有很多的ExportName SWF指的就是对应SWF(sc文件)里面的MovieClip。

TextFiled这个没去详细分析了,对我没啥用处。

Image 表示的是大图里面的一张小图。

Shape 表示的是多张小图组成的一个图片集合(后续MovieClip都是操作它)

MovieClip 是影片剪辑,包含了动画信息

Color 是颜色信息(动画用)

Matrix 是矩阵信息,仿射矩阵(动画用)

sc 二进制解析

12 + 5:这些是 TextField,Image,Shape,MoveClip, Matrix, Color 这些类型的数量描述,但是后面我也可以得到这些数量所以这边就不取了。

首先是导出符号信息:

unsigned short ExportNum unsigned short 导出符号的数量

unsigned short ExportIDArray[ExportNum] 导出符号ID数组

{

char cNameLength;

char Name[cNameLength]; // 自己要尾部补上 \0

}ExportNum 个

其次元素信息:

char cTag; // 元素类型

unsigned int nDataLength; // 该数据的长度

{

该元素的数据结构(参见后面元素详解)

}

}有很多个直到 类型为0,停止解析

类型详细说明

enum CoCSWFTagType

{

CCTT_NONE,

CCTT_Texture = 1,

CCTT_Shape = 18,

CCTT_TextField = 7,

CCTT_TextField2 = 15,

CCTT_Matrix= 8,

CCTT_ColorTransform = 9,

CCTT_MovieClip= 12,

};

CCTT_Texture 纹理:

#define TextureFormat_ARGB8888 0

#define TextureFormat_ARGB4444 2

#define TextureFormat_BGR565 4

char m_cTextureFormat; //图片格式  0 2 4

unsigned short m_nWidth; // 宽度

unsigned short m_nHeight; // 高度

void *data 纹理的数据,根据格式计算出大小

CCTT_Matrix 仿射矩阵:

struct MATRIX {

int a, b, c, d;

int tx, ty;

};

m_trans.a = trans.a / 1024.0f;

m_trans.b = trans.b / 1024.0f;

m_trans.c = trans.c / 1024.0f;

m_trans.d = trans.d / 1024.0f;

m_trans.tx = trans.tx / 20.0f;

m_trans.ty = trans.ty / -20.0f;

CCTT_Matrix 颜色:

struct ColorTransform {

char rm, gm, bm, am;

char ra, ga, ba;

};

CCTT_Shape:图片:

unsigned short m_nID; 图元ID

unsigned short m_nCommandCount; 图片数量

unsigned short nVertxtCount; 顶点总数量

{

char cType; // 暂时用不上 固定17可能是渲染方式

int nLength; // 数据长度,暂时用不上,后面自己可以算出长度了

char textureID; 图片的ID

char cPointCount; 顶点数量

{

int x;int y;顶点坐标

} cPointCount个顶点;

{

short u;short v;顶点坐标

} cPointCount个纹理坐标;

}m_nCommandCount个图片的数据

前面是基本的图片所有数据信息了

CCTT_MovieClip 影片剪辑:

unsigned short m_nID; 影片剪辑ID号

char m_cFrameRate; 帧率

unsigned short m_nFrameCount; 帧数量

unsigned nFrameInfoCount 动画帧信息数量

过掉两个字节,目前发现没用

{

unsigned short nIndex; 图片索引号

unsigned short nIndex; 矩阵索引号

unsigned short nIndex; 颜色索引号

}nFrameInfoCount 个关键帧信息

unsigned short nCount; 图片数量

unsigned short nSHapeID[nCount];

忽略掉nCount个字节

这边是文本相关的用不到,但是我们要跳过这些字节

{

文字长度 char

文字

}nCount个

最后是动画数据

{     忽略1个字节;

int 长度

unsigned short 帧数量

跳过长度 – 2 的字节

}m_nFrameCount个

根据以上资料就可以写出 对应的东西了


   下载地址:http://pan.baidu.com/s/1jGuxW70


部落战争资源破解仅供学习使用,点击导出可以导出当前选择的动画(Json文件)