Add support for bundles with obfuscated unity version

This commit is contained in:
VaDiM
2025-07-24 15:55:29 +03:00
parent 6b41a36c7d
commit efca2a7557
3 changed files with 22 additions and 7 deletions

View File

@ -83,7 +83,10 @@ namespace AssetStudio
m_Header.signature = reader.ReadStringToNull(); m_Header.signature = reader.ReadStringToNull();
m_Header.version = reader.ReadUInt32(); m_Header.version = reader.ReadUInt32();
m_Header.unityVersion = reader.ReadStringToNull(); m_Header.unityVersion = reader.ReadStringToNull();
m_Header.unityRevision = new UnityVersion(reader.ReadStringToNull()); var revStr = reader.ReadStringToNull();
if (!UnityVersion.TryParse(revStr, out m_Header.unityRevision))
m_Header.unityRevision = new UnityVersion();
switch (m_Header.signature) switch (m_Header.signature)
{ {
case "UnityArchive": case "UnityArchive":

View File

@ -70,15 +70,13 @@ namespace AssetStudio
if (header.m_Version >= SerializedFileFormatVersion.Unknown_7) if (header.m_Version >= SerializedFileFormatVersion.Unknown_7)
{ {
var versionPos = reader.Position; var versionPos = reader.Position;
try
{ var verStr = reader.ReadStringToNull();
version = new UnityVersion(reader.ReadStringToNull()); if (!UnityVersion.TryParse(verStr, out version))
}
catch (NotSupportedException e)
{ {
if (assetsManager.SpecifyUnityVersion == null) if (assetsManager.SpecifyUnityVersion == null)
{ {
Logger.Warning(e.Message); Logger.Warning($"Failed to parse Unity version: \"{verStr}\"");
version = new UnityVersion(); version = new UnityVersion();
return; return;
} }

View File

@ -66,6 +66,20 @@ namespace AssetStudio
} }
} }
public static bool TryParse(string versionStr, out UnityVersion version)
{
version = null;
try
{
version = new UnityVersion(versionStr);
return true;
}
catch (Exception)
{
return false;
}
}
#region UnityVer, UnityVer #region UnityVer, UnityVer
public static bool operator ==(UnityVersion left, UnityVersion right) public static bool operator ==(UnityVersion left, UnityVersion right)
{ {