Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我们是在反汇编程序中查看原始代码还是在反向工程CIL中查看原始代码?_C#_Disassembly_Ilspy - Fatal编程技术网

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

C# 我们是在反汇编程序中查看原始代码还是在反向工程CIL中查看原始代码?,c#,disassembly,ilspy,C#,Disassembly,Ilspy,拿着。当我查看我的程序集时,我是否在查看我的原始C#?或者,该代码是否使用某种类型的逆向工程过程从CIL重构而来 我的理解是,发布程序集不包含任何原始代码,只包含CIL。那么,如果我在发布模式下构建程序集,会有什么不同吗 发布程序集和调试程序集都不包含原始源代码 ILSpy&friends分析编译后的CIL以提取合理的C#等价物。您将看到从IL重构的代码。此重建过程可以在任何.NET程序集上执行,无论它是以调试模式还是发布模式构建的 您不能阻止以这种方式从程序集重构源代码,但如果您想让代码变得不

拿着。当我查看我的程序集时,我是否在查看我的原始C#?或者,该代码是否使用某种类型的逆向工程过程从CIL重构而来


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

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


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

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


您不能阻止以这种方式从程序集重构源代码,但如果您想让代码变得不那么有用/不易理解,可以使用各种.NET模糊处理工具。

发行版与调试版仍然有很大区别。编译器确实进行了优化。看

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


在防止程序集反转和保护知识产权方面,请使用Dotfuscator或其他模糊处理工具

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

+1 shanselman的精彩链接。我很熟悉整个混乱过程,但我相信它对一些人会有用。