From 9a967345b9766338450f5fc990fe8047f61801f1 Mon Sep 17 00:00:00 2001 From: zznty <94796179+zznty@users.noreply.github.com> Date: Mon, 10 Oct 2022 20:31:59 +0700 Subject: [PATCH] skip obfuscated assemblies from compatibility fixes --- Torch/Plugins/AssemblyRewriter.cs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Torch/Plugins/AssemblyRewriter.cs b/Torch/Plugins/AssemblyRewriter.cs index e2a006d..43bb4a4 100644 --- a/Torch/Plugins/AssemblyRewriter.cs +++ b/Torch/Plugins/AssemblyRewriter.cs @@ -1,14 +1,17 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Reflection; using Mono.Cecil; +using NLog; namespace Torch.Plugins; internal static class AssemblyRewriter { + private static readonly ILogger Log = LogManager.GetCurrentClassLogger(); private static readonly ZipResolver _zipResolver; private static readonly DefaultAssemblyResolver _defaultResolver; @@ -23,12 +26,25 @@ internal static class AssemblyRewriter public static Assembly ProcessWeavers(this Stream stream, ZipArchive archive) { _zipResolver.Archive = archive; + using var assStream = new MemoryStream(); stream.CopyTo(assStream); assStream.Position = 0; - var ass = ProcessInternal(assStream, _zipResolver); - _zipResolver.Archive = null; - return ass; + + try + { + var ass = ProcessInternal(assStream, _zipResolver); + return ass; + } + catch (Exception e) + { + Log.Error(e, "Unable to process assembly, skipping"); + return Assembly.Load(assStream.ToArray()); + } + finally + { + _zipResolver.Archive = null; + } } public static Assembly ProcessWeavers(this Stream stream, string path)