如何解决如何将 SmartAssembly 8 与 .NET 3.1+ 单文件可执行文件 (.EXE) 发布一起使用,而不会以捆绑的、未混淆的依赖项结束?
SmartAssembly official method 使用 single-file executables* (EXE)(在 .NET Core 3 中引入)以便使用他们的混淆工具进行发布。
我们采用了这种方法。简而言之,他们使用了一种聪明的方法,我不会说'hack',而是将混淆的程序集注入到 MSBuild/发布过程中的'方法' (通过 $(ProjectDir)\obj
目录)。这似乎有效,因为它会生成一个按预期执行的单个 .EXE 文件。
我们遇到的问题是,当我们在二进制级别检查生成的单个可执行文件时,我们发现它似乎包含依赖项副本主要程序集引用(应该通过 SmartAssembly 合并和混淆)以未混淆的形式!这个结果违背了使用混淆器的目的。
有人以这种方式成功使用过 SmartAssembly 吗?
更新:有一个示例项目 here 说明了这个问题(这个示例项目是针对 .netcoreapp3.1 构建的,所以它不是 .net5.0 -特定问题)。此示例是一个依赖于类库的控制台应用程序。混淆项目设置为混淆类库并将其合并到控制台应用程序中。
This image 显示单个 EXE 文件的十六进制转储的一部分,其中包含一个应该被混淆的字符串。事实上,EXE 包含了整个类库。
最后,如果您构建并运行示例,它会尝试打印混淆类型的名称和混淆字符串,该字符串作为其混淆类型出现。我们目前的结论是,这个问题很可能是由于发布过程将未混淆的依赖项重新添加回 .EXE 文件所致。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。