Improve multi platform support, fix signatures again

This commit is contained in:
js6pak committed 2021-02-16 15:29:09 +01:00
1 parent 81696bc1ce
commit f2631d375b
16 files changed
+324 -153

No files matched your search

@@ -4,7 +4,7 @@
<LangVersion>latest</LangVersion>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<Version>0.2.6</Version>
<Version>0.2.7</Version>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/NuclearPowered/Reactor.OxygenFilter</RepositoryUrl>
<PackageLicenseExpression>LGPL-3.0-or-later</PackageLicenseExpression>
+22 -2
View File
@@ -229,8 +229,28 @@ namespace Reactor.OxygenFilter.MSBuild
}
// get same method from obfuscated assembly
var signature = deobfuscatedCall.GetSignature(t => GetObfuscated(t) ?? t.FullName);
MethodReference definition = typeDefinition.GetMethods().Single(x => x.Name == obfuscated && x.GetSignature() == signature);
var nameMatched = typeDefinition.GetMethods().Where(x => x.Name == obfuscated).ToArray();
var signature = deobfuscatedCall.GetSignature((member, original) =>
{
if (member is TypeReference typeReference && typeReference.Scope.Name == "Assembly-CSharp.dll-Deobfuscated")
{
var resolved = typeReference.Resolve();
if (resolved != null)
{
var s = GetObfuscated(resolved);
if (s != null)
{
return s;
}
}
}
return original;
});
MethodReference definition = nameMatched.Length <= 1 ? nameMatched.Single() : nameMatched.Single(x => x.GetSignature() == signature);
// obfuscate generics
if (deobfuscatedCallReference is GenericInstanceMethod generic)