Unreal Engine 4 PAK: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
imported>Ikskoks
imported>Ikskoks
 
(43 intermediate revisions by the same user not shown)
Line 71: Line 71:
<font color="blue"><i>FOOTER (44 bytes)</i></font><br />
<font color="blue"><i>FOOTER (44 bytes)</i></font><br />
&nbsp;&nbsp;uint32 {4}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Signature  <font color="purple">((bytes)225,18,111,90) // E1 12 6F 5A  // "..oZ" </font><br />
&nbsp;&nbsp;uint32 {4}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Signature  <font color="purple">((bytes)225,18,111,90) // E1 12 6F 5A  // "..oZ" </font><br />
&nbsp;&nbsp;uint32 {4}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Version  <font color="purple">// 1, 2, 3, 4, 7 or 8</font><br />
&nbsp;&nbsp;uint32 {4}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Version  <font color="purple">// 1, 2, 3, 4, 7, 8, 9 or 11</font><br />
&nbsp;&nbsp;uint64 {8}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Directory Offset<br />
&nbsp;&nbsp;uint64 {8}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Directory Offset<br />
&nbsp;&nbsp;uint64 {8}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Directory Length  <font color="purple">(not including FOOTER)</font><br />
&nbsp;&nbsp;uint64 {8}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Directory Length  <font color="purple">(not including FOOTER)</font><br />
&nbsp;&nbsp;byte {20}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;directory sha1 hash<br />
&nbsp;&nbsp;byte {20}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;directory sha1 hash<br />
&nbsp;&nbsp;<font color="blue"><i>if (version) == 11</i></font><br />
&nbsp;&nbsp;&nbsp;&nbsp;char {160} - compression string + padding  // e.g. "Zlib"
<br />
<br />
</tt>
</tt>
</div>
</div>
=== MultiEx BMS Script ===
Not written yet.
=== QuickBMS Script ===
* [http://aluigi.org/bms/unreal_tournament_4.bms unreal_tournament_4.bms]
* [https://zenhax.com/viewtopic.php?f=9&t=1005&p=56251#p56251 Other scripts]


=== Notes and Comments ===  
=== Notes and Comments ===  


* It is popular file format used in many games made on Unreal Engine 4.
* It is popular file format used in many games made on '''Unreal Engine 4'''.
* These files normally occur in path such as "\<game_name>\<build_name>\Content\Paks\<build_name>-WindowsNoEditor.pak"
* These files normally occur in path such as "\<game_name>\<build_name>\Content\Paks\<build_name>-WindowsNoEditor.pak"
* This archive type uses ZLIB, GZIP or Snappy compression method.
* This archive type uses '''ZLIB''', '''GZIP''' or '''Snappy''' compression method.
* Data may be encrypted with AES encryption.
* Data may be encrypted with '''AES''' encryption.
* To parse the archive, footer needs to be read first, because it has important info about offsets.
* To parse the archive, footer needs to be read first, because it has important info about offsets.


Line 99: Line 92:
List of games using this file format:
List of games using this file format:


* Backbone (PC) (*.PAK) (version 11)
* Little Nightmares II (PC) (*.PAK) (version 8)
* Little Nightmares II (PC) (*.PAK) (version 8)
* Poppy Playtime (PC) (*.PAK) (version 11)
* Pumpkin Jack (PC) (*.PAK) (version 9)
* Styx: Shards of Darkness
* Styx: Shards of Darkness
* Tekken 7 (PC) (*.PAK)
* Tekken 7 (PC) (*.PAK) (version 3)
* The Fall of Lazarus
* The Fall of Lazarus
* Many more...
* Many more...
=== QuickBMS Scripts ===
See [[List of Unreal Engine Tools]] article on this wiki.


=== Compatible Programs ===  
=== Compatible Programs ===  


* [[Game Extractor|Game Extractor]]<br />
See [[List of Unreal Engine Tools]] article on this wiki.
* [https://github.com/allcoolthingsatoneplace/UnrealPakTool UnrealPakTool]<br>
* [http://www.gildor.org/en/projects/umodel umodel]
* [https://github.com/panzi/u4pak u4pak]
* [https://mega.nz/file/tdETRI6B#_BieqC7eBAX70yDsgKQwLmrkzIHfZn67xAGSyKmmsmc UE4PakUnpacker]


=== See Also ===  
=== See Also ===  


* [https://cs.rin.ru/forum/viewtopic.php?t=100672 UE4 keys collection]
* [https://cs.rin.ru/forum/viewtopic.php?t=100672 UE4 keys collection]
* [[Unreal Engine 4 UASSET|Unreal Engine 4 UASSET (xentax wiki)]]
=== Gallery ===
<gallery bordercolor="transparent" spacing="small" orientation="landscape">
fmodel.png|FModel
ue4_pak_unpacker.png|UE4 PAK Unpacker
</gallery>
<br><br>
<br/><br>
<br/><br>



Latest revision as of 11:04, 24 June 2022

Back to index | Edit this page

PAK

  • Format Type : Archive
  • Endian Order : Little Endian
  • Signature : E1 12 6F 5A


Format Specifications

// Unreal Engine 4 PAK file format
FILE DATA
  for each file
    uint64 {8}       - null
    uint64 {8}       - Compressed Length (not including the file header fields or padding)
    uint64 {8}       - Decompressed Length
    uint32 {4}       - Compression Type (0=uncompressed, 1=ZLib, 2=GZip, 4=Snappy, 16=bias memory, 32=bias speed)
    byte {20}        - data sha1 hash
    if (compressed){
      uint32 {4}       - Number of Compressed Blocks
      for each compressed block
        uint64 {8}       - Offset to the start of the compressed data block (relative to the start of the archive)
        uint64 {8}       - Offset to the end of the compressed data block (relative to the start of the archive)

      byte {1}         - null
      for each compressed block
        uint32 {4}       - Decompressed Length of thie block
        byte {X}         - File Data (ZLib Compression)

      byte {0-2047}    - null Padding to a multiple of 2048 bytes (sometimes, not always)
      }

    else if (uncompressed){
      uint32 {4}       - null
      byte {1}         - null
      byte {X}         - File Data
      byte {0-2047}    - null Padding to a multiple of 2048 bytes (sometimes, not always)
      }

DIRECTORY
  uint32 {4}       - Relative Directory Name Length (including null terminator) (10)
  byte {9}         - Relative Directory Name (../../../)
  byte {1}         - null Relative Directory Name Terminator
  uint32 {4}       - Number of Files
  for each file
    uint32 {4}       - Filename Length (including null terminator)
    byte {X}         - Filename
    byte {1}         - null Filename Terminator
    uint64 {8}       - File Offset
    uint64 {8}       - Compressed Length (not including the file header fields or padding)
    uint64 {8}       - Decompressed Length
    uint32 {4}       - Compression Type (0=uncompressed, 1=ZLib, 2=GZip, 4=Snappy)
    byte {20}        - Unknown
    if (compressed){
      uint32 {4}       - Number of Compressed Blocks
      for each compressed block
        uint64 {8}       - Offset to the start of the compressed data block (relative to the start of the archive)
        uint64 {8}       - Offset to the end of the compressed data block (relative to the start of the archive)

      byte {1}         - null
      uint32 {4}       - Decompressed Block Size (65536 if multiple blocks, otherwise the same as the decompressed length)
      }

    else if (uncompressed){
      uint32 {4}       - null
      byte {1}         - null
      }

FOOTER (44 bytes)
  uint32 {4}       - Signature ((bytes)225,18,111,90) // E1 12 6F 5A // "..oZ"
  uint32 {4}       - Version // 1, 2, 3, 4, 7, 8, 9 or 11
  uint64 {8}       - Directory Offset
  uint64 {8}       - Directory Length (not including FOOTER)
  byte {20}        - directory sha1 hash
  if (version) == 11
    char {160} - compression string + padding // e.g. "Zlib"

Notes and Comments

  • It is popular file format used in many games made on Unreal Engine 4.
  • These files normally occur in path such as "\<game_name>\<build_name>\Content\Paks\<build_name>-WindowsNoEditor.pak"
  • This archive type uses ZLIB, GZIP or Snappy compression method.
  • Data may be encrypted with AES encryption.
  • To parse the archive, footer needs to be read first, because it has important info about offsets.

Games

List of games using this file format:

  • Backbone (PC) (*.PAK) (version 11)
  • Little Nightmares II (PC) (*.PAK) (version 8)
  • Poppy Playtime (PC) (*.PAK) (version 11)
  • Pumpkin Jack (PC) (*.PAK) (version 9)
  • Styx: Shards of Darkness
  • Tekken 7 (PC) (*.PAK) (version 3)
  • The Fall of Lazarus
  • Many more...

QuickBMS Scripts

See List of Unreal Engine Tools article on this wiki.

Compatible Programs

See List of Unreal Engine Tools article on this wiki.

See Also

Gallery