mirror of
https://github.com/NuclearPowered/Reactor.OxygenFilter.git
synced 2026-10-19 15:52:01 +00:00
Fix AssemblyResolver issues
This commit is contained in:
1 parent
f2631d375b
commit
d31b0a37b3
4 files changed
+30
-5
No files matched your search
@@ -0,0 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
using Mono.Cecil;
|
||||
|
||||
namespace Reactor.OxygenFilter.MSBuild
|
||||
{
|
||||
public class AssemblyResolver : DefaultAssemblyResolver
|
||||
{
|
||||
protected override AssemblyDefinition SearchDirectory(AssemblyNameReference name, IEnumerable<string> directories, ReaderParameters parameters)
|
||||
{
|
||||
if (name.Name == "netstandard")
|
||||
return null;
|
||||
|
||||
return base.SearchDirectory(name, directories, parameters);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,12 +33,21 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
|
||||
var mappings = JsonConvert.DeserializeObject<Mappings>(Context.MappingsJson);
|
||||
|
||||
var resolver = new DefaultAssemblyResolver();
|
||||
var resolver = new AssemblyResolver();
|
||||
resolver.AddSearchDirectory(Path.Combine(Context.MappedPath, "references"));
|
||||
resolver.AddSearchDirectory(Path.Combine(AmongUs, "BepInEx", "core"));
|
||||
resolver.AddSearchDirectory(Path.Combine(AmongUs, "BepInEx", "plugins"));
|
||||
resolver.AddSearchDirectory(Path.Combine(AmongUs, "BepInEx", "unhollowed"));
|
||||
|
||||
var readerParameters = new ReaderParameters { AssemblyResolver = resolver };
|
||||
|
||||
// quick fix for reactor plugin having different file name than assembly name
|
||||
resolver.ResolveFailure += (_, reference) =>
|
||||
{
|
||||
var files = Directory.GetFiles(Path.Combine(AmongUs, "BepInEx", "plugins"), $"{reference.Name}-*.dll");
|
||||
return files.Length == 1 ? AssemblyDefinition.ReadAssembly(files.Single(), readerParameters) : null;
|
||||
};
|
||||
|
||||
var deobfuscated = new List<string>();
|
||||
|
||||
foreach (var input in Input)
|
||||
@@ -58,7 +67,7 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
|
||||
using var stream = File.Open(input, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
|
||||
using var moduleDefinition = ModuleDefinition.ReadModule(stream, new ReaderParameters { AssemblyResolver = resolver });
|
||||
using var moduleDefinition = ModuleDefinition.ReadModule(stream, readerParameters);
|
||||
var toDeobfuscate = new Dictionary<MemberReference, string>();
|
||||
|
||||
foreach (var type in moduleDefinition.GetTypeReferences())
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<LangVersion>latest</LangVersion>
|
||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||
|
||||
<Version>0.2.7</Version>
|
||||
<Version>0.2.8</Version>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<RepositoryUrl>https://github.com/NuclearPowered/Reactor.OxygenFilter</RepositoryUrl>
|
||||
<PackageLicenseExpression>LGPL-3.0-or-later</PackageLicenseExpression>
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
public override bool Execute()
|
||||
{
|
||||
using var stream = File.Open(Input, FileMode.Open, FileAccess.ReadWrite);
|
||||
var resolver = new DefaultAssemblyResolver();
|
||||
var resolver = new AssemblyResolver();
|
||||
|
||||
var obfuscatedAssembly = AssemblyDefinition.ReadAssembly(Path.Combine(AmongUs, "BepInEx", "unhollowed", "Assembly-CSharp.dll"));
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Reactor.OxygenFilter.MSBuild
|
||||
{
|
||||
foreach (var referencedAssembly in referencedAssemblies)
|
||||
{
|
||||
if (referencedAssembly.Name.FullName == reference.FullName)
|
||||
if (referencedAssembly.Name.Name == reference.Name)
|
||||
{
|
||||
return referencedAssembly;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user