我们是在查看反汇编程序中的原始代码还是反向工程CIL?

时间:2011-12-07 22:02:44

标签: c# disassembly ilspy

选择ILSPy。当我查看我的装配时,我看着原来的C#?或者,这个代码是使用某种类型的逆向工程过程从CIL重建的吗?

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

4 个答案:

答案 0 :(得分:4)

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

ILSpy&朋友分析编译的CIL以提取合理的C#等价物。

答案 1 :(得分:4)

Release vs Debug仍然有很大的不同。编译器会进行优化。请参阅Scott Hanselman's post about Release vs Debug

就ILSpy的功能而言,是的,它会显示CIL,然后将其反向工程设计为合理的C#/ VB表示。我承认ILSpy做得很好!我已经用它改变了其他人的装配,并且可以完美地理解他们的代码。我唯一一次崩溃的原因是WPF和GUI的东西,但我确信有办法可以解决这个问题。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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