FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   UBT | Unity Bundle Tool (https://fileforums.com/showthread.php?t=104855)

Masquerade 28-12-2021 12:14

UBT | Unity Bundle Tool
 
1 Attachment(s)
UBT | Unity Bundle Tool

Unity Bundle Tool is a software made by my friend, SowwyItsAnAlt, which I have been using in my repacks for a few months. With her permission, I have rewritten and polished the code and made a new executable which I am sharing here.

The function of this tool is the ability to decompress compressed Unity Asset Bundles and then recompress them to a close enough point in which a patch is possible (& viable!). I like to use HDiffZ because it gives the smallest patches. XDelta should work just fine (patch creation is significantly quicker than with HDiffZ although the patch file will be larger).

UBT is based on AssetTools.NET by nesrak1 and has compression support for both LZ4 and LZMA algorithms.

Code:

█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
 █      Unity Bundle Tool      █
 █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

 Usage: UBT.EXE <options> <infile> <outfile>

 Options:

    -i      : List information about bundle file (only specify <infile>).
    -d      : Decompress bundle file.
    -c      : Compress bundle file (must specifiy use of LZ4 or LZMA).
    -credits : View credits.

 Example usage:

 UBT.EXE -i data.unity3d
 UBT.EXE -d data.unity3d decompressed_data.unity3d
 UBT.EXE -c lz4 decompressed_data.unity3d data.unity3d
 UBT.EXE -c lzma decompressed_data.unity3d data.unity3d

To prove just how well this tool works, I will demonstrate on the game "Poly Bridge 2" (which I do recommend you all try if you enjoy a good puzzle like myself). This game contains "data.unity3d" which is compressed with LZ4. The steps are:
  1. Decompress the bundle
  2. Compress the decompressed file using the same compression algo as what the original bundle was compressed with
  3. Use your patch program of choice to create a patch file between the new compressed file and the original compressed bundle.

    https://i.ibb.co/fYqQqdk/Capture.png

    As we can see from the above image, the new file is so similar that our HDiffZ patch is less than 1mb in size! Now, in your repack installation, you simply include the decompressed file and compress it then patch it using the patch file after the archive is extracted. Easy!

    Of course, you don't need to patch the file, since Unity will read the file regardless - compressed or decompressed. The patch is simply for a 100% CRC perfect repack.

    Highlighted above is the function of the -d and -c option. Using -i will give the file size in bytes, MD5 and compression type used on the input file.

    This is a standalone tool and NOT for use with FreeArc.

Masquerade 10-02-2022 08:18

Update for 10/2/22
  • UBT now works with bundles larger than 2GB.
  • AssetsTools.NET library upgraded from v2.0.9 to v2.0.11.
  • Significantly less memory usage for compression and decompression.

Masquerade 03-03-2022 13:37

*.CMS from Car Mechanic Simulator games are compressed Asset Bundles with LZ4, however devs changed the File Header so that the "U" in UnityFS is replaced with an S.

If you swap the S for a U, you can then decompress the bundles with UBT :)

L0v3craft 01-04-2022 06:30

Hi. Thank you very much for your work, but please, share an UBT.exe file that works with files larger than 2GB and that is not detected as a trojan. It is dected as virus by 44 on 67 antiviruses:

Code:

https://www.virustotal.com/gui/file/9d34b1c2b139f41d6c733b3cb0730ec76c70a6083818c4ee28644ed5421a365f/detection
it is useless for repacks if the antivirus of the user deletes or blocks it.

Edit: testing it on the file data.unity3d from the game "TUNIC" and gives error in re-compression.

Masquerade 01-04-2022 11:47

Unprotected version: https://bayfiles.com/77eaG3Scxc/UBT_7z

Compiled + ILRepack

-tara 27-06-2022 22:07

whats happening here?
 
ran decomp on "data.unity3d" on a game called "Mango", the file is ~1.7 GB and is compressed with lz4, got an output of ~4 GB or so. Then compressed it using lz4 and the tool finished weirdly quick, after checking the output of the compression it was 300 Megs, then i tried running the game using this output as the "data.unity3d" and the game ran however every texture was purple, whats going on?

Joe Forster/STA 29-06-2022 00:40

Quote:

Originally Posted by -tara (Post 497363)
however every texture was purple

Just an idea: this purple is the transparent color in the textures but the compressor forgot to keep the transparency flag.

Masquerade 15-07-2022 07:47

Update for 15/7/22
  • AssetsTools.NET library upgraded from v2.0.11 to v2.0.12.
  • AssetsTools.NET library made external to the executable.
What this means is that you can now update the library without needing a compiled executable. Useful for any future updates from nesrak1.

Download the latest build from the AssetsTools.NET GitHub and grab the file "AssetsTools.NET.dll" from the zip. Put it in the same folder as UBT.EXE and you're good to go. I don't mind compiling a "standalone" version with the library merged into the executable if someone would like that.

https://github.com/nesrak1/AssetsToo...eleases/latest

Also there's no support for Powerwash Simulator because the bundles are strange. Here's a quote from sowwyitsnalt when we were discussing the bundles:
Quote:

Originally Posted by sowwyitsanalt
The bundles themselves seem to be broken, maybe by the devs, basically what happens is the bundle has a size of 16735030, but it reports the data starts at 1487 and is of length 16735288 so it would end after the actual bundle


dixen 27-07-2022 05:44

Batch decompress - it possible?

Masquerade 27-07-2022 06:38

Quote:

Originally Posted by dixen (Post 497777)
Batch decompress - it possible?

For batch file:

Code:

for /r %%f in (*.bundle) do ubt -d "%%f" "%%f.dec"
Or in parallel, use mparallel tool:

Code:

for /r %%f in (*.bundle) do echo ubt -d "%%f" "%%f.dec" >> run.txt

mparallel --input=run.txt


dixen 28-07-2022 08:37

As Dusk Falls

UBT.exe - c lz4 1.tmp 2 tmp - don't work and don't compressed

UBT.exe - c lzma 1.tmp 2 tmp - all fine works.

Masquerade 28-07-2022 09:48

Quote:

Originally Posted by dixen (Post 497789)
As Dusk Falls

UBT.exe - c lz4 1.tmp 2 tmp - don't work and don't compressed

Please may you upload a small sample?

dixen 28-07-2022 14:11

Quote:

Originally Posted by Masquerade (Post 497790)
Please may you upload a small sample?

https://drive.google.com/file/d/1tYe...ew?usp=sharing

Old version (UBT_Unprotected) - All fine with lz4

KaktoR 09-08-2022 14:55

Quote:

Originally Posted by Masquerade (Post 496377)
Unprotected version: https://bayfiles.com/77eaG3Scxc/UBT_7z

Compiled + ILRepack

Could you reupload the unprotected version? I get "Bad Gateway" on this download.

Hexagon123 09-08-2022 15:01

1 Attachment(s)
Quote:

Originally Posted by KaktoR (Post 497918)
Could you reupload the unprotected version? I get "Bad Gateway" on this download.

Here.

KaktoR 09-08-2022 15:08

Thanks, will test it.

Masquerade 10-08-2022 02:52

Quote:

Originally Posted by KaktoR (Post 497920)
Thanks, will test it.

Latest is not protected afair. I learned my lesson there :o

Thanks for the testing.

KaktoR 10-08-2022 11:43

Sometimes the new compressed file is smaller than the original file, which makes any patches pointless.

Example
Code:

Original file - 239 MB
Uncompressed file - 293 MB
New compressed file - 219 MB


-tara 18-08-2022 08:32

Quote:

Originally Posted by -tara (Post 497363)
ran decomp on "data.unity3d" on a game called "Mango", the file is ~1.7 GB and is compressed with lz4, got an output of ~4 GB or so. Then compressed it using lz4 and the tool finished weirdly quick, after checking the output of the compression it was 300 Megs, then i tried running the game using this output as the "data.unity3d" and the game ran however every texture was purple, whats going on?

Update on this:
After doing more testing i realized that this happens if the output written in the command does not have an extension, what i was doing is just "UBT.exe -c -lz4 data.unity3d data" instead of adding the .unity3d extention and modifying the output name, the tool seems to work nice, thanks Masq!

Dragonis40 02-06-2023 11:21

Good evening everyone! I have some questions:
-) Can I use this tool on a single file? (A .pak file, a .pkg file, a generic .xxx file, etc)
-) Can I use UBT tool even if the decompressed file is composed of several small files? (Such as .dat files, .bin files, etc)
-) I can see a .tmp file in the picture at top of forum. What is that? How can I generate that file?


All times are GMT -7. The time now is 14:58.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com