mirror of
https://github.com/NuclearPowered/Reactor.OxygenFilter.git
synced 2026-10-20 01:46:30 +00:00
Improve multi platform support, fix signatures again
This commit is contained in:
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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user