This is the specifications for the archive file which is handled by the
Game Extractor plugin
Archive_DLL_MZ.
Endian Order: | Little Endian |
Compression: | None |
Encryption: | None |
This format is used by the following Games:
DLL/EXE Program Resources | *.dll *.exe *.ocx *.msstyles |
Petz 5 | *.env cat dog clo toy |
Catz 5 | *.env cat dog clo toy |
Dogz 5 | *.env cat dog clo toy |
Enigma Virtual Box | *.exe |
Balacera Brothers | *.exe |
Blood Paws Unleashed | *.exe |
Buccaneers: Shipshape | *.exe |
Charnel House Trilogy | *.exe |
3D Ultra Minigolf | *.dlx |
This is the format specification information:
| // HEADER
2 - Header (MZ)
2 - Number of Fields following??? (3)
4 - Unknown
4 - Unknown
4 - Unknown
4 - Offset to PE Header (always 184, but not always the right value!)
4 - null
4 - Offset to MS-DOS Program (64)
32 - null
4 - Offset to PE Header (this is the correct field!)
X - MS-DOS Program
// PE HEADER
4 - Header (PE)
// IMAGE_FILE_HEADER
2 - Target Platform (332 = 32-bit Intel)
2 - Number Of Section Tables
4 - Created Timestamp
4 - Offset To Symbol Table (usually null)
4 - Number Of Symbols In The Symbol Table
2 - Length of IMAGE_OPTIONAL_HEADER
2 - Characteristics (EXE Attributes)
// IMAGE_OPTIONAL_HEADER
2 - Type Code (267 = 32-bit Intel)
1 - Visual Studio Major Version (eg. 6 = Visual Studio 6.X)
1 - Visual Studio Sub Version (eg. 1 = Visual Studio X.1)
4 - Length of IMAGE_SCN_CNT_CODE section
4 - Length of Initialized Data
4 - Length of Uninitialized Data
4 - Offset to Program Entry Point
4 - Base Of Code
4 - Base Of Data
4 - Type Of EXE File (268435456 = DLL)
4 - Section Alignment
4 - File Alignment (Padding Size? usually 4096)
2 - Major OS Version
2 - Minor OS Version
2 - Major Image Version
2 - Minor Image Version
2 - Major Subsystem Version
2 - Minor Subsystem Version
4 - Win32 Version (unused - usually null)
4 - Length Of Image (length of executable data? - multiple of the SectionAlignment)
4 - Length Of Headers (length of all headers, resources, etc. - multiple of the FileAlignment)
4 - Checksum
2 - Subsystem Required
2 - DLL Characteristics
4 - Length Of Stack Reserve (initial memory size alocated to this file?)
4 - Length Of Stack Commit
4 - Length Of Heap Reserve
4 - Length Of Heap Commit
4 - Loader Flags (unused)
4 - Number Of Entries In The Data Directory (16)
// DATA DIRECTORY
// for each entry
4 - Virtual Address To Data (offset)
4 - Length Of Data
// SECTION TABLES
// for each section table
8 - Section Name (null terminated) (.rsrc = Resource)
4 - Virtual Length (length of data - kinda)
4 - Virtual Address (offset to data - kinda)
4 - Length Of Raw Data (multiple of FileAlignment)
4 - Offset To Raw Data (multiple of FileAlignment)
4 - Offset To Relocations
4 - Offset To Line Numbers
2 - Number Of Relocations
2 - Number Of Line Numbers
4 - Characteristics
// ( GUESSED FROM THIS POINT ONWARDS!!! )
// RESOURCE TABLE
4 - Characteristics? (null)
4 - Timestamp? (null)
4 - Version Number? (null)
2 - Number Of Names Entries
2 - Number Of ID Entries (Different Languages?)
// for each named entry + each ID entry
4 - Resource Name OR ID (ignore bit#32)
if (bit#32 == 1)
// Offset To Resource Name (relative to the start of the resource table)
else
// The first 2 bytes are the resource ID, the last 2 bytes are null
4 - Offset To Resource (relative to the start of the resource table)
if (bit#32 of resourceOffset == 1)
// offset points to a nested resource table (repeat from "//RESOURCE TABLE")
else
// offset points to the details for this resource
// RESOURCE DETAILS
// for each resource
4 - File Offset
4 - File Length
8 - null
// RESOURCE NAMES
// for each named resource
2 - Filename Length [*2 for unicode]
X - Filename (unicode)
// RESOURCE DATA
// for each resource
X - File Data
X - Other Table Data
X - Executable Data |
Game Extractor is able to read files of this type, as well as files from thousands of other games. To give it a try, download
Game Extractor (Basic Version) for
free, and see what it can do.
For further information on this format, refer to the source code on our
GitHub repository.