老流氓的定义:

//---------------------------------------------------------------------------
//
// FOX Header struct define
//
//---------------------------------------------------------------------------
typedef struct
{ WORD Magic; // 00,FOX文件标识:FE F2
BYTE Flag; // 02,FOX类型:"加密类型" EE或者 "未加密类型"FF
WORD Version; // 03,FOX版本
WORD NumOfFiles; // 05,文件列表中定义的文件个数
WORD OrdOfMainPrg; // 07,主文件的序号
DWORD EndPosOfBlob; // 09,字符串信息的结束位置
DWORD StartPosOfBlob; // 0D,字符串信息的起始位置
DWORD SizeOfBlob; // 11,字符串信息的长度
BYTE Reserved[0x12]; // 15,保留字节
WORD CheckSum; // 27,校验和
} FOX_HEADER,* PFOX_HEADER;
WORD CalcCheckSum(PFOX_HEADER pFoxHeader)
{ return CalcFoxCheckSum(pFoxHeader,0xFEF2,0x25);
}
WORD SwapByte(WORD wCheckSum)
{
return (((BYTE)wCheckSum << 8) + ((wCheckSum >> 8) & 0x0FF)) & 0x0FFFF;
}
WORD CalcFoxCheckSum(PFOX_HEADER pFoxHeader,WORD wInitKey,int nSize)
{
PBYTE pHeader = (PBYTE)pFoxHeader;
int i = nSize;
WORD wCheckSum = wInitKey;
do
{
wCheckSum = SwapByte(wCheckSum);
wCheckSum = (*pHeader) ^ wCheckSum;
wCheckSum ^= (((BYTE)wCheckSum >> 4) & 0x0F);
wCheckSum ^= (((BYTE)wCheckSum ^ (wCheckSum << 7)) << 5 );
pHeader ++;
i --;
}while(i > 0);
return wCheckSum;
}