From a4e9e5c43435d71b1cb4dee8dec945a75519b8cd Mon Sep 17 00:00:00 2001 From: Escartem Date: Wed, 1 May 2024 15:32:09 +0200 Subject: [PATCH 1/3] fix name for fork --- AssetStudio.GUI/MainForm.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AssetStudio.GUI/MainForm.cs b/AssetStudio.GUI/MainForm.cs index 985477e..1453ef7 100644 --- a/AssetStudio.GUI/MainForm.cs +++ b/AssetStudio.GUI/MainForm.cs @@ -85,7 +85,7 @@ namespace AssetStudio.GUI { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); InitializeComponent(); - Text = $"YarikStudio v{Application.ProductVersion}"; + Text = $"Studio v{Application.ProductVersion}"; InitializeExportOptions(); InitializeProgressBar(); InitializeLogger(); @@ -308,7 +308,7 @@ namespace AssetStudio.GUI } } - Text = $"YarikStudio v{Application.ProductVersion} - {productName} - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; + Text = $"Studio v{Application.ProductVersion} - {productName} - {assetsManager.assetsFileList[0].unityVersion} - {assetsManager.assetsFileList[0].m_TargetPlatform}"; assetListView.VirtualListSize = visibleAssets.Count; @@ -1484,7 +1484,7 @@ namespace AssetStudio.GUI public void ResetForm() { - Text = $"YarikStudio v{Application.ProductVersion}"; + Text = $"Studio v{Application.ProductVersion}"; assetsManager.Clear(); assemblyLoader.Clear(); exportableAssets.Clear(); From 5c7f402997c7aa88c03feb210334ca8826fbfb5b Mon Sep 17 00:00:00 2001 From: Escartem Date: Wed, 1 May 2024 15:32:41 +0200 Subject: [PATCH 2/3] fixed games handling --- AssetStudio/OffsetStream.cs | 70 +++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/AssetStudio/OffsetStream.cs b/AssetStudio/OffsetStream.cs index 9ba4f4a..5256847 100644 --- a/AssetStudio/OffsetStream.cs +++ b/AssetStudio/OffsetStream.cs @@ -8,7 +8,6 @@ namespace AssetStudio { public class OffsetStream : Stream { - private readonly Stream _baseStream; private long _offset; @@ -81,34 +80,59 @@ namespace AssetStudio else { using var reader = new FileReader(path, this, true); - var signature = reader.FileType switch - { - FileType.BundleFile => "UnityFS\x00", - FileType.MhyFile => "mhy", - FileType.Blb3File => "Blb\x03", - _ => throw new InvalidOperationException() - }; - Logger.Verbose($"Parsed signature: {signature}"); + var readSignature = reader.FileType; + var signature = ""; - var signatureBytes = Encoding.UTF8.GetBytes(signature); - var buffer = ArrayPool.Shared.Rent((int)reader.Length); - while (Remaining > 0) + if (readSignature == FileType.BundleFile || + readSignature == FileType.MhyFile || + readSignature == FileType.Blb3File) { - var index = 0; - var absOffset = AbsolutePosition; - var read = Read(buffer); - while (index < read) + switch (reader.FileType) { - index = buffer.AsSpan(0, read).Search(signatureBytes, index); - if (index == -1) break; - var offset = absOffset + index; - Offset = offset; - yield return offset; - index++; + case FileType.BundleFile: + signature = "UnityFS\x00"; + break; + case FileType.MhyFile: + signature = "mhy"; + break; + case FileType.Blb3File: + signature = "Blb\x03"; + break; + } + + Logger.Verbose($"Parsed signature: {signature}"); + + var signatureBytes = Encoding.UTF8.GetBytes(signature); + var buffer = ArrayPool.Shared.Rent((int)reader.Length); + while (Remaining > 0) + { + var index = 0; + var absOffset = AbsolutePosition; + var read = Read(buffer); + while (index < read) + { + index = buffer.AsSpan(0, read).Search(signatureBytes, index); + if (index == -1) break; + var offset = absOffset + index; + Offset = offset; + yield return offset; + index++; + } + } + ArrayPool.Shared.Return(buffer); + } else + { + while (Remaining > 0) + { + Offset = AbsolutePosition; + yield return AbsolutePosition; + if (Offset == AbsolutePosition) + { + break; + } } } - ArrayPool.Shared.Return(buffer); } } } From 494d005fa7c03c36c06479c6defd8f1cd28ead9a Mon Sep 17 00:00:00 2001 From: Escartem Date: Wed, 1 May 2024 15:47:30 +0200 Subject: [PATCH 3/3] fix invalid container crash --- AssetStudio.GUI/Studio.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/AssetStudio.GUI/Studio.cs b/AssetStudio.GUI/Studio.cs index 5bb379e..36a90c4 100644 --- a/AssetStudio.GUI/Studio.cs +++ b/AssetStudio.GUI/Studio.cs @@ -304,9 +304,18 @@ namespace AssetStudio.GUI var preloadIndex = m_Container.Value.preloadIndex; var preloadSize = m_Container.Value.preloadSize; var preloadEnd = preloadIndex + preloadSize; - for (int k = preloadIndex; k < preloadEnd; k++) + + switch(preloadIndex) { - containers.Add((m_AssetBundle.m_PreloadTable[k], m_Container.Key)); + case int n when n < 0: + Logger.Warning($"preloadIndex {preloadIndex} is out of preloadTable range"); + break; + default: + for (int k = preloadIndex; k < preloadEnd; k++) + { + containers.Add((m_AssetBundle.m_PreloadTable[k], m_Container.Key)); + } + break; } } }