diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 8f6eb901..28142a3b 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -41,7 +41,10 @@ def __init__( if signature == "UnityArchive": raise NotImplementedError("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: - m_DirectoryInfo, blocksReader = self.read_web_raw(reader) + if self.version == 6: + m_DirectoryInfo, blocksReader = self.read_fs(reader) + else: + m_DirectoryInfo, blocksReader = self.read_web_raw(reader) elif signature == "UnityFS": m_DirectoryInfo, blocksReader = self.read_fs(reader) else: @@ -98,6 +101,10 @@ def read_fs(self, reader: EndianBinaryReader): uncompressedSize = reader.read_u_int() dataflagsValue = reader.read_u_int() + # UnityWeb version 6 + if self.signature != "UnityFS": + reader.read_byte() + version = self.parse_version() # https://issuetracker.unity3d.com/issues/files-within-assetbundles-do-not-start-on-aligned-boundaries-breaking-patching-on-nintendo-switch # Unity CN introduced encryption before the alignment fix was introduced.