0

Are assemblies compiled by Visual Studio .NET for C++ projects interpreted code like C# is? (Hence easily de-compiled back into their full source code by the many tools out there)

4

2 回答 2

2

C# 不被解释。

另请注意,从 C#(或任何其他语言)编译到 IL 应该被视为单程旅行。您可以将程序集反编译为 IL 并尝试将其转换回 C#。正如 Ben 和 Trant 在评论中指出的那样,一些原始代码可能会重新出现生成代码,但是您使用的语言的功能越多,生成的代码与原始代码的差异就越大。

于 2013-08-23T21:02:47.233 回答
2

因此,要回答您要问的问题:

如果您使用 编译 C++ 代码/clr,那么编译器将生成 MSIL 而不是机器代码,以及描述您的程序结构的 .NET 元数据。这足以让反汇编程序生成执行相同操作的可编辑 C# 1代码。

如果您在 C++/CLI 项目中有普通的 C++ 代码(所以您需要/clr),您仍然可以使用它#pragma managed(off)来使您的程序的一部分编译为(不太可逆的)机器代码。不过,只有实际上并未使用 .NET 的部分。


  1. 或者 C++/CLI ...但是 .NET Reflector 中的 MSIL -> C++/CLI 转换器有很多错误,我认为其他反编译器也是如此,如果他们甚至尝试支持它的话。
于 2013-08-23T21:17:38.657 回答