Fallback to obfuscated names in generic fixing
This commit is contained in:
2 files changed
+10
-5
No files matched your search
@@ -4,7 +4,7 @@
|
||||
<LangVersion>latest</LangVersion>
|
||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||
|
||||
<Version>0.1.4</Version>
|
||||
<Version>0.1.5</Version>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/NuclearPowered/Reactor.OxygenFilter</RepositoryUrl>
|
||||
<PackageLicenseExpression>LGPL-3.0-or-later</PackageLicenseExpression>
|
||||
|
||||
@@ -33,6 +33,8 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
using var stream = File.Open(Input, FileMode.Open, FileAccess.ReadWrite);
|
||||
var resolver = new DefaultAssemblyResolver();
|
||||
|
||||
var obfuscatedAssembly = AssemblyDefinition.ReadAssembly(Path.Combine(AmongUs, "BepInEx", "unhollowed", "Assembly-CSharp.dll"));
|
||||
|
||||
resolver.ResolveFailure += (_, reference) =>
|
||||
{
|
||||
foreach (var referencedAssembly in ReferencedAssemblies)
|
||||
@@ -48,6 +50,11 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
}
|
||||
}
|
||||
|
||||
if (reference.FullName == obfuscatedAssembly.Name.FullName)
|
||||
{
|
||||
return obfuscatedAssembly;
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
@@ -166,8 +173,6 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
}
|
||||
}
|
||||
|
||||
var obfuscatedAssembly = ModuleDefinition.ReadModule(Path.Combine(AmongUs, "BepInEx", "unhollowed", "Assembly-CSharp.dll"));
|
||||
|
||||
// fix generic methods
|
||||
foreach (var methodDefinition in moduleDefinition.GetAllTypes().SelectMany(x => x.Methods))
|
||||
{
|
||||
@@ -196,11 +201,11 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
type = type.DeclaringType;
|
||||
}
|
||||
|
||||
var typeDefinition = obfuscatedAssembly.GetType(GetObfuscated(hierarchy.First()));
|
||||
var typeDefinition = obfuscatedAssembly.MainModule.GetType(GetObfuscated(hierarchy.First()) ?? hierarchy.First().FullName);
|
||||
|
||||
foreach (var element in hierarchy.Skip(1))
|
||||
{
|
||||
typeDefinition = typeDefinition.NestedTypes.Single(x => x.Name == GetObfuscated(element));
|
||||
typeDefinition = typeDefinition.NestedTypes.Single(x => x.Name == (GetObfuscated(element) ?? element.Name));
|
||||
}
|
||||
|
||||
// get same method from obfuscated assembly
|
||||
|
||||
Reference in new issue
Block a user