【问题标题】:ConfuserEx: System.TypeInitializationException on MonoConfuserEx:单声道上的 System.TypeInitializationException
【发布时间】:2017-01-08 00:47:45
【问题描述】:

我无法让我的混淆应用程序在单声道上运行。单声道上未混淆的作品。当我在 win7 上使用 .net 框架时,它在两种变体中都没有问题。

这是我得到的例外:

未处理的异常: System.TypeInitializationException:“”的类型初始化程序引发了异常。 ---> System.NullReferenceException:对象引用未设置为对象的实例 在.‮‮‎‫‎âªâ€â€‹â€ªâ€«âªâ¬â€Žâªâ¯â€«â€Œâ€‹â€â¯â€â«â¯â ¬â€â€â«â€Œâ€®â«â€... 在 ..cctor () 在 :0 --- 内部异常堆栈跟踪结束 --- 在 Vintagestory.Server.Program.Main (System.String[] args) 在 :0 [错误] 致命的未处理异常:System.TypeInitializationException:“”的类型初始化程序引发了异常。 ---> System.NullReferenceException:对象引用未设置为对象的实例 在.‮‮‎‫‎âªâ€â€‹â€ªâ€«âªâ¬â€Žâªâ¯â€«â€Œâ€‹â€â¯â€â«â¯â ¬â€â€â«â€Œâ€®â«â€... 在 ..cctor () 在 :0 --- 内部异常堆栈跟踪结束 --- 在 Vintagestory.Server.Program.Main (System.String[] args) in :0

该异常似乎发生在它必须从在同一进程中也被混淆的外部库加载其他代码时。

我什至可以如何调试/修复这个问题?

更新:似乎也发生在 Windows Mono 上

Update2:这里也是一个 github 问题条目,其中包含更多详细信息:https://github.com/yck1509/ConfuserEx/issues/535

【问题讨论】:

  • 我没有使用过 ConfuserEx 或单声道 - 也许他们使用了 linux 不支持的东西 - 我猜这是引发异常的构造函数,但你拍摄的代码都没有显示任何可以抛出 NullReferenceException 的东西。我认为您没有一种简单的调试方法,因为这基本上是混淆的重点,因此您可能必须深入研究并理解代码。也许粘贴构造函数的整个代码,我可以尝试帮助你。
  • 感谢您的回复,我已在整个源代码中添加了一个 pastebin。我可以尝试的另一件事是禁用个人保护并查看原因。
  • 似乎经典的Trace.WriteLine 调试会有所帮助。在静态初始化程序的每个语句之后打印调试消息以缩小问题的位置(还将静态字段的任何初始化移动到静态初始化程序)。
  • 我记得在我的WPF 应用程序中使用了ConfuserEx。我也遇到了问题,但仅限于 Windows(没有Mono)。正如您所假设的那样,我禁用了所有保护,然后开始一一启用它们。它有帮助。你可以试试同样的方法。
  • 嗯好的,谢谢你的建议,过几天我会测试一下。

标签: c# mono confuserex


【解决方案1】:

我对单个 C# 类使用了最大混淆级别,该类甚至没有使用,而是需要的外部库的一部分,这似乎是问题所在。

当我将混淆级别降低到“激进”时,它会起作用。不理想,但现在可以。

【讨论】:

    【解决方案2】:

    我还设置了“防调试”和“防篡改”保护动作删除。它对我有用。

    <protection id="anti debug" action="remove"/>
    <protection id="anti tamper" action="remove"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2010-10-15
      • 2017-07-31
      相关资源
      最近更新 更多