Main table encrypted. Format same from game JianLong. Here decryption algo
from JianLong (keys can be different)
Code:
struct BAGHeader
{
DWORD dwID;
DWORD dwTotalFiles;
DWORD dwTableOffset;
};
Code:
//1bag
dwTotalFiles ^ 0xe7356461
dwTableOffset ^ 0xcb449442
Code:
//2bag
dwTotalFiles ^ 0x27252421
dwTableOffset ^ 0x3b343432
Code:
DWORD __cdecl JLBAGDecrypt(int dwVersion, int dwOffset, int pScrBuffer, int pDstBuffer, int dwCount)
{
int i;
int j;
int k;
int ScrBuffer = 0;
int DstBuffer = 0;
ScrBuffer = pScrBuffer;
DstBuffer = pDstBuffer;
i = dwCount;
if ( dwVersion == 0x62616731 ) // 1bag
{
if ( i )
{
j = 0;
do
{
*(DWORD *)(j + DstBuffer) = dwOffset ^ *(DWORD *)((char *)ScrBuffer + j) ^ 0x698346BD;
*(DWORD *)(j + DstBuffer + 4) = dwOffset ^ *(DWORD *)(ScrBuffer + j + 4) ^ 0x867389FE;
*(DWORD *)(j + DstBuffer + 8) = dwOffset ^ *(DWORD *)(ScrBuffer + j + 8) ^ 0xABEDC59D;
dwOffset += 12;
j += 12;
--i;
}
while ( i );
}
}
else
{
if ( dwVersion == 0x62616732 ) // 2bag
{
if ( i )
{
k = 0;
do
{
*(DWORD *)(k + DstBuffer) = dwOffset ^ *(DWORD *)((char *)ScrBuffer + k) ^ 0x5953565D;
*(DWORD *)(k + DstBuffer + 4) = dwOffset ^ *(DWORD *)(ScrBuffer + k + 4) ^ 0x6663696E;
*(DWORD *)(k + DstBuffer + 8) = dwOffset ^ *(DWORD *)(ScrBuffer + k + 8) ^ 0x7B7D757D;
dwOffset += 12;
k += 12;
--i;
}
while ( i );
}
}
}
return (int)szOutBuf;
}
Entries don't contain names only hashes.
Also you can look bms script >
http://forum.xentax.com/viewtopic.php?p=82822#p82822