Difference between revisions of "Unity Unity3d UnityFS"

From XentaxWiki
Jump to: navigation, search
(Format Specifications)
(Compatible Programs)
Line 90: Line 90:
 
* [https://github.com/HearthSim/UnityPack UnityPack]
 
* [https://github.com/HearthSim/UnityPack UnityPack]
 
* [https://forum.zoneofgames.ru/topic/36240-unityex/ UnityEx]
 
* [https://forum.zoneofgames.ru/topic/36240-unityex/ UnityEx]
* [https://github.com/DerPopo/UABE Unity Assets Bundle Extractor]
+
* [https://github.com/DerPopo/UABE Unity Assets Bundle Extractor (UABE)]
 +
* [https://github.com/nesrak1/UABEA Unity Assets Bundle Extractor Avalonia (UABEA)]
  
 
=== See Also ===  
 
=== See Also ===  

Revision as of 21:21, 29 November 2021

Back to index | Edit this page

Unity3d

  • Format Type : Archive
  • Endian Order : Little Endian / Big Endian
  • Signature : UnityFS


Format Specifications

// Unity3d file format

// header
8 bytes (char) - signature + null // "UnityFS"
4 bytes (uint32) - version  // 6 or 7
6 bytes (char) - minimum player version + null  // e.g. "5.x.x."
12 bytes (char) - file engine version + null // e.g. "2017.4.35f1" (Punishing: Gray Raven)
                                             //      "2018.4.24f1." (Shadowverse)
                                             //      "2018.4.5f1.." (Blacksad)
                                             //      "2019.4.22f1." (Game of Nightmares)
                                             //      "2019.4.23f1." (Argonavis)
8 bytes (uint64) - archive size
4 bytes (uint32) - compressed "info block" data size
4 bytes (uint32) - uncompressed "info block" data size
4 bytes (uint32) - flags


// info block
// Note: this section may be compressed with LZ4
{
   // blocks info
   16 bytes - hash
   4 bytes (uint32) - number of blocks  
   num_of_blocks *
   {
      4 bytes (uint32) - uncompressed block size
      4 bytes (uint32) - compressed block size
      2 bytes (uint16) - flags
   }

   // paths info
   4 bytes (uint32) - number of paths
   num_of_paths *
   {
      8 bytes (uint64) - path location
      8 bytes (uint64) - size of the uncompressed data
      4 bytes (uint32) - flags  // 0x04 - serialized file
      37 bytes (char) - filepath  // e.g. "CAB-c0f952eacf35e09957047188fc534360"
   }
}

   
// data
num_of_files *
{
   x bytes - file data  // may be compressed with LZ4
}  

MultiEx BMS Script

Not written yet.

quickBMS Script

Notes and Comments

  • UnityFS is a new asset bundle format introduced in Unity 5 Engine.
  • Files inside archive may be compressed with LZ4 compression method.
  • Archive may be partially or fully encrypted with XOR or with AES.
  • In some games filenames of unity3d archives may be hashed, for example "06477b71ac17b5740482e85abc24da14" and they don't have *.unity3d extension.

Games

List of games using this file format:

  • Argonavis from BanG Dream! AAside (Android) (no extension) (encrypted with XOR, key is "CB 69 BF 09")
  • Blacksad: Under The Skin (no extension?)
  • Game of Nightmares (iOS) (no extension) (encrypted with XOR, key is "0x0B", more info here)
  • NEO: The World Ends With You (PC) (*.unity3d) (Encrypted with AES-128-CBC, read more here)
  • Punishing: Gray Raven (Android) (no extension) (Unity 2017.4.35f1) (Game version: 1.9.1 (global) ) (not encrypted, but "Kuro" word is added before "UnityFS" signature)
  • Shadowverse (Android) (*.unity3d)

Compatible Programs

See Also

Gallery