Tuesday, May 15, 2007

Ancient Wars - Sparta .PAK Extractor v1.1

As I said before this guys from World Forge made tricky file format and I find out what was the problem why some files wont work after extraction, thanks to Suuk who tried my extractor and reported this bug. Developers used 3 values to mark file state in .PAK container.

public int IsPacked; // 0 - Encrypted first 0x100 bytes; 1 - encrypted and compressed; 2 - plain.

I've updated saving routine, so you can find new version here: Ancient Wars - Sparta .PAK Extractor v1.1

Death to Spies ( SMERSH )

Developer: Haggard Games
European Publisher: Nobilis
Russian publisher: 1C
1C Game page: Death to Spies
Russian demo: download
Screen shots:

Smersh is the Russian for "Death to Spies" and was the name of a set of counterintelligence departments in the Soviet Army formed during World War II. Their mission was to secure the rear of the active Red Army by arresting traitors, deserters, spies and criminal elements. During the war these agents became the main force combating the German intelligence service.

The game's main character is a captain in the 4th department of the Soviet counterintelligence service. He is a professional spy trained to execute dangerous operations on his own. During missions he will have to complete various tasks in the heart of enemy territory including stealing important documents, eliminating different enemy officers or high-ranking officials, kidnapping and sabotage.

Game missions are based on real historical events and operations which were executed by the military intelligence and counterintelligence during the war.

Another game, another quite simple extractor for it. Now developers prepared for us their .vfs format, vfs its abbr. from Virtual File System :) so I decided to investigate it.
Offset to file list I found less in a minute, I always checking end and begin of file, so at the EOF was two numbers very similar to offsets.

Byte order is little-endian (Intel) so 0x28BE and 0x73A5 numbers, and I decided to check some thing, what if EOF offset 0x6D3C3 - 0x28BE - 8 = 0x6AAFD( 8 is size of our 2 unknown numbers yet ) lets see what we got here:

Wow, that's zlib header 0x789C then 0x73A5 might be uncompressed size, after decompression I have found its our file list with offsets / unpacked size /packed size and so on... so you can try now my tool to extract all game resources:

Download: Death to Spies .vfs Extractor v1.0