InstallShield CAB
Contents: GRAFs page - All - 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - Edit
Format Type: Archive
Extensions: cab cab + hdr
Platforms: unknown
Endian Order: Little Endian
Signature: ISc(
Format Specifications (Type 1)
The *.cab file contains the file data, the *.hdr file contains the directory
Uses a variant of ZLib Compression (ZLibX, as defined by Aluigi from ZenHax)
Not all files have filenames
HDR FILE...
HEADER
uint32 {4} - File Header
uint32 {4} - Unknown (16798209)
uint32 {4} - null
uint32 {4} - Strings Directory Offset (512)
uint32 {4} - Strings Directory Length
uint32 {4} - Length of this HDR file
byte {X} - Unknown Stuff to offset 512
STRINGS DIRECTORY
uint32 {4} - English Strings Tables Offset
uint32 {4} - null
uint32 {4} - Unknown Length/Offset
uint32 {4} - Strings Directory Length
uint32 {4} - null
uint32 {4} - Unknown (337)
uint32 {4} - Unknown (337)
uint32 {4} - Unknown (1)
uint32 {4} - null
uint32 {4} - Unknown (4)
uint32 {4} - Unknown (5)
uint32 {4} - Unknown (4)
byte {X} - Unknown Stuff
FILES DIRECTORY
uint32 {4} - Files Directory Length
for each file
uint32 {4} - Offset to File Details (relative to the start of the Files Directory)
for each file (58 bytes per entry)
uint32 {4} - Filename Offset (relative to the start of the Files Directory) (or null if not a file)
uint32 {4} - null
uint16 {2} - Entry Type (12=Unknown, 4=File)
uint32 {4} - Decompressed File Length (or null if not a file)
uint32 {4} - Compressed File Length (or null if not a file)
uint32 {4} - Unknown (128) (or null if not a file)
uint32 {4} - Unknown (or null if not a file)
uint32 {4} - Unknown (or null if not a file)
uint32 {4} - null
uint32 {4} - null
uint32 {4} - File Data Offset in CAB file (first entry starts at 512, non-file entries retain the previous offset value)
uint64 {8} - Chechsum? Hash? Time?
uint64 {8} - Chechsum? Hash? Time?
for each filename
byte {X} - Filename
byte {1} - null Filename Terminator
byte {1} - null End of HDR File Terminator?
CAB FILE...
HEADER
uint32 {4} - File Header
uint32 {4} - Unknown (16798209)
uint32 {4} - null
uint32 {4} - File Data Offset (512)
uint32 {4} - null
uint32 {4} - File Data Offset (512)
uint32 {4} - null
uint32 {4} - null
uint32 {4} - Unknown (4)
byte {X} - Unknown Stuff
FILE DATA
for each file
for each compressed block in the file (keep reading until you reach the DecompressedFileLength or the CompressedFileLength, depending on what you're recording...)
uint16 {2} - Compressed Data Block Length
byte {X} - File Data (compressed)
Format Specifications (Type 2)
The *.cab file contains the file data, the *.hdr file contains the directory.
There are quire often 2 cab files (data1.cab, data2.cab), and just 1 hdr file (data1.hdr).
Uses a variant of ZLib Compression (ZLibX, as defined by Aluigi from ZenHax).
Not all files have filenames
HDR FILE...
HEADER
uint32 {4} - File Header
uint32 {4} - Unknown (16801804)
uint32 {4} - null
uint32 {4} - Strings Directory Offset (512)
uint32 {4} - Strings Directory Length
uint32 {4} - Length of this HDR file
byte {X} - Unknown Stuff to offset 512
STRINGS DIRECTORY
uint32 {4} - English Strings Tables Offset
uint32 {4} - null
uint32 {4} - Unknown Length/Offset
uint32 {4} - Strings Directory Length
uint32 {4} - null
uint32 {4} - Files Directory Length
uint32 {4} - Files Directory Length
uint32 {4} - Number of Directories
uint32 {4} - null
uint32 {4} - Length of Directories Offset Section (numDirectories * 4)
uint32 {4} - Number of Files
uint32 {4} - Length of Directories Offset Section (numDirectories * 4)
byte {X} - Unknown Stuff
FILES DIRECTORY
for each directory
uint32 {4} - Directory Name Offset (relative to the start of the files directory)
for each file (87 bytes per entry)
uint16 {2} - Entry Type (12=Unknown, 4=File, 0=Setup-related File)
uint64 {8} - Decompressed File Length (or null if not a file)
uint64 {8} - Compressed File Length (or null if not a file)
uint64 {8} - File Offset
byte {16} - Checksum/Hash/?
uint16 {2} - Unknown
uint16 {2} - Unknown
uint32 {4} - Unknown
uint64 {8} - null
uint32 {4} - Filename Offset (relative to the start of the files directory)
uint16 {2} - Directory ID (zero-based ID to one of the directories listed at the start of the files directory)
uint32 {4} - Unknown Flags
uint32 {4} - Unknown
byte {13} - null
uint16 {2} - Data File Number? (1/2)
for each filename
byte {X} - Filename
byte {1} - null Filename Terminator
for each directory
byte {X} - Directory Name
byte {1} - null Directory Name Terminator
CAB FILE...
HEADER
uint32 {4} - File Header
uint32 {4} - Unknown (16801804)
uint32 {4} - null
uint32 {4} - File Data Offset (512)
uint32 {4} - null
uint32 {4} - File Data Offset (512)
uint32 {4} - null
uint32 {4} - null
uint32 {4} - Unknown (4)
byte {X} - Unknown Stuff
FILE DATA
for each file
for each compressed block in the file (keep reading until you reach the DecompressedFileLength or the CompressedFileLength, depending on what you're recording...)
uint16 {2} - Compressed Data Block Length
byte {X} - File Data (compressed)
Format Specifications (Type 3)
Uses a variant of ZLib Compression (ZLibX, as defined by Aluigi from ZenHax)
Not all files have filenames
HEADER
uint32 {4} - File Header
uint16 {2} - Version? (4)
uint16 {2} - Unknown (256)
uint32 {4} - null
uint32 {4} - Unknown Data Block Offset (512)
uint32 {4} - Unknown Data Block Length (approximate only) [-8 or -16]
uint32 {4} - Unknown
uint32 {4} - null
uint32 {4} - null
uint32 {4} - Number of Files [+1] (including files of type=8)
byte {X} - Unknown Stuff to offset 512
UNKNOWN DATA BLOCK
uint32 {4} - Unknown
uint32 {4} - null
uint32 {4} - Unknown
uint32 {4} - Unknown Data Block Length (including these header fields)
byte {X} - Unknown
FILES DIRECTORY
uint32 {4} - Files Directory Length
for each file and each directory
uint32 {4} - Offset to File Details (relative to the start of the Files Directory) (not necessarily in offset order!) (or offset to directory name)
for each file (42 bytes per entry)
uint32 {4} - Filename Offset (relative to the start of the Files Directory) (or -35520232 if not a file)
uint32 {4} - Directory Name ID Number (index starts at 0)
uint16 {2} - Entry Type (8=Unknown, 4=File)
uint32 {4} - Decompressed File Length (or null if not a file)
uint32 {4} - Compressed File Length (or null if not a file)
uint32 {4} - Unknown (32/33) (or null if not a file)
uint32 {4} - Unknown (or null if not a file)
uint32 {4} - Unknown (or null if not a file)
uint32 {4} - null
uint32 {4} - null
uint32 {4} - File Data Offset
for each filename
byte {X} - Filename
byte {1} - null Filename Terminator
for each directory name
byte {X} - Directory Name (can be empty - ie 0 bytes)
byte {1} - null Directory Name Terminator
FILE DATA
for each file
for each compressed block in the file (keep reading until you reach the DecompressedFileLength or the CompressedFileLength, depending on what you're recording...)
uint16 {2} - Compressed Data Block Length
byte {X} - File Data (compressed)
MultiEx BMS Script
No BMS script
Supported Programs
Notes
No additional notes
Games
- InstallShield