diff --git a/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.TargetFramework.props b/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.TargetFramework.props
index 5e4c58a..56f6ef3 100644
--- a/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.TargetFramework.props
+++ b/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.TargetFramework.props
@@ -12,6 +12,11 @@
+
+
+
+
+
@@ -43,6 +48,6 @@
-
+
\ No newline at end of file
diff --git a/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.csproj b/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.csproj
index e2b96e5..51ff9d4 100644
--- a/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.csproj
+++ b/Reactor.OxygenFilter.MSBuild/Reactor.OxygenFilter.MSBuild.csproj
@@ -4,7 +4,7 @@
latest
true
- 0.1.3
+ 0.1.4
git
https://github.com/NuclearPowered/Reactor.OxygenFilter
LGPL-3.0-or-later
diff --git a/Reactor.OxygenFilter.MSBuild/Reobfuscate.cs b/Reactor.OxygenFilter.MSBuild/Reobfuscate.cs
index 4827adc..9507943 100644
--- a/Reactor.OxygenFilter.MSBuild/Reobfuscate.cs
+++ b/Reactor.OxygenFilter.MSBuild/Reobfuscate.cs
@@ -11,6 +11,9 @@ namespace Reactor.OxygenFilter.MSBuild
{
public class Reobfuscate : Task
{
+ [Required]
+ public string AmongUs { get; set; }
+
[Required]
public string Input { get; set; }
@@ -30,13 +33,23 @@ namespace Reactor.OxygenFilter.MSBuild
using var stream = File.Open(Input, FileMode.Open, FileAccess.ReadWrite);
var resolver = new DefaultAssemblyResolver();
- foreach (var directory in ReferencedAssemblies
- .Select(Path.GetDirectoryName)
- .Distinct()
- .OrderBy(x => x.EndsWith("unhollowed"))) // workaround for mono.cecil picking netstandard.dll from unhollowed instead of sdk
+ resolver.ResolveFailure += (_, reference) =>
{
- resolver.AddSearchDirectory(directory);
- }
+ foreach (var referencedAssembly in ReferencedAssemblies)
+ {
+ if (Path.GetFileNameWithoutExtension(referencedAssembly) == reference.Name)
+ {
+ var assemblyDefinition = AssemblyDefinition.ReadAssembly(referencedAssembly);
+
+ if (assemblyDefinition.Name.FullName == reference.FullName)
+ {
+ return assemblyDefinition;
+ }
+ }
+ }
+
+ return null;
+ };
using var moduleDefinition = ModuleDefinition.ReadModule(stream, new ReaderParameters { AssemblyResolver = resolver });
var toObfuscate = new Dictionary();
@@ -153,6 +166,8 @@ 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))
{
@@ -172,8 +187,6 @@ namespace Reactor.OxygenFilter.MSBuild
{
// get same type from obfuscated assembly
- var assemblyDefinition = resolver.Resolve(new AssemblyNameDefinition("Assembly-CSharp", null));
-
var hierarchy = new List();
var type = deobfuscatedCall.DeclaringType;
@@ -183,7 +196,7 @@ namespace Reactor.OxygenFilter.MSBuild
type = type.DeclaringType;
}
- var typeDefinition = assemblyDefinition.MainModule.GetType(GetObfuscated(hierarchy.First()));
+ var typeDefinition = obfuscatedAssembly.GetType(GetObfuscated(hierarchy.First()));
foreach (var element in hierarchy.Skip(1))
{