Spider Man Web Of Shadows

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
deepshit
Posts: 22
Joined: Fri Aug 08, 2014 6:24 am

Spider Man Web Of Shadows

Post by deepshit »

Hi
Can anybody help me on this?
Thanks.

Archive Samples

Here's what I've figured out.
The only thing missing is how the entries on table1 are linked to nameTable.
Note : Not all names on nameTable are entry names.

Code: Select all

//HEADER

uint8_t  magic[4];
uint32_t dummy;
uint32_t dummy;
uint32_t headerSize;

uint32_t dataSectionSize;   //??
uint32_t tbl1Offset;
uint32_t dummy;
uint32_t tbl2Offset;      // + headerSize
uint32_t tbl1Offset;
uint32_t tbl1Size;      // + some other info
uint32_t dummy;
uint32_t dummy;
uint32_t dummy;
uint32_t numTypes;

for (int i = 0;i < numTypes;i++)
{
   uint8_t  type[4];
   uint32_t typeCode;      //??
}

//Align position to 32

uint32_t dummy;
uint32_t namesOffset;      //SEEK_CUR
uint32_t dummy;
uint32_t dummy;


/*************************************************/

//Table 1

uint32_t numRecs;
uint32_t dummy;      //Always 4

for (int i = 0;i < numTypes;i++)
{
   uint8_t  type[4];
   uint32_t fileOffset;      // + headerSize
   uint32_t size;
   uint32_t unk;         //always 32   alignment???
   uint32_t unk;
   uint32_t unk;
}

/*************************************************/

//Table 2

uint32_t numRecs;
uint32_t dummy;      //Always 4


for (int i = 0;i < numTypes;i++)
{
   uint32_t nameOffset;      //SEEK_CUR
   uint8_t  type[4];
   int32 fileOffset      //negative offset (go backward)
}

aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Spider Man Web Of Shadows

Post by aluigi »

http://aluigi.org/papers/bms/others/spi ... hadows.bms

Just some notes:

- I have found no references to the names, there ist a "strg" chunk but there are no offsets or indexes referred to them

- the wave files are FSB4 archives but you can notice a sort of header of 0x40 bytes in almost all the files. I found that none of the 3 32bit fiels can be used to guess if this header is available or not (I tried to remove it but one file had a size < 0x40)