2

ILSPy 为例。当我查看我的程序集时,我是否正在查看我原来的 C#?或者,这段代码是否使用某种逆向工程过程从 CIL 重构?

我的理解是发布程序集不包含任何原始代码,仅包含 CIL。那么,如果我在发布模式下构建程序集会有所不同吗?

4

4 回答 4

4

发布和调试程序集都不包含原始源代码。

ILSpy 和朋友分析编译的 CIL 以提取合理的 C# 等效项。

于 2011-12-07T22:06:15.543 回答
4

发布与调试仍然有很大的不同。编译器确实进行了优化。请参阅Scott Hanselman 关于 Release vs Debug 的帖子

就 ILSpy 的作用而言,是的,它显示 CIL,然后将其反向工程为合理的 C#/VB 表示。我承认 ILSpy 做得很好!我已经用它反转了其他人的程序集,并且可以完全理解他们的代码。我唯一一次遇到问题是使用 WPF 和 GUI 的东西,但我相信也有办法解决这个问题。

在防止组装逆转和保护您的知识产权方面,请使用 Dotfuscator 或其他混淆工具。

于 2011-12-07T22:17:09.383 回答
1

您看到的是从 IL 重构的代码。这个重建过程可以在任何 .NET 程序集上执行,无论它是在调试模式还是发布模式下构建的。

您无法阻止以这种方式从您的程序集中重构您的源代码,但如果您想让代码变得不那么有用/易于理解,您可以使用各种 .NET 混淆工具。

于 2011-12-07T22:06:46.633 回答
0

实际上,您可以使用 ILMerge 或 .net FuZe 将您的 exe 和 dll 包装到一个 exe 或 dll 容器中,使其更难反汇编。

于 2012-02-24T14:12:23.467 回答