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.version = reader.ReadUInt32();
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)
{
case "UnityArchive":

View File

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