0

我用 msbuild 构建了我的 dll(.NET4),并用 SmartAssembly 5.5 进行了混淆。

之后,我在 Mac(10.8)上的 MonoDevelop(最新)中为简单的控制台应用程序设置了它们。

构建好,但是当我运行那个简单的应用程序时,我收到一条消息:未知堆类型:SmartAssembly

我询问了 SA 支持,但还没有运气(saproj 已检查项目 blabla(支持 Mono)。

我看不到如何附加屏幕截图,但是,当我运行我的应用程序时,我在控制台中看到该消息两次。它出现在程序在第一行代码的断点处停止之前。

所以也许有人知道在 SmartAssembly 或 MonoDevelop 中要改变什么来消除这个问题?谢谢

4

1 回答 1

1

许多 .NET 混淆器会更改程序集,使其在技术上不是正确的程序集(它们不属于 .NET 程序集规范),但通过利用特定于 Microsoft 实现的错误,它们仍然可以在 Microsoft .NET 运行时运行。我怀疑他们这样做是为了让程序集阅读器工具/库更难加载程序集。不幸的是,这也阻止了 Mono 运行时加载程序集。一般来说,Mono的政策是不“修复”对这种无效混淆代码的支持,因此您需要向 SmartAssembly 支持寻求帮助。

如果您确定您正在使用 SmartAssembly 的“严格有效”选项进行编译并且它不起作用,也许您可​​以尝试他们的“基本”选项。

于 2012-11-30T22:49:09.317 回答