C# 使用dotPeek反编译.net程序集时给出的语法无效

C# 使用dotPeek反编译.net程序集时给出的语法无效,c#,decompiling,dotpeek,C#,Decompiling,Dotpeek,我在反编译.net程序集时遇到问题。当我在dotPeek中打开程序集时,有一个名为frmMain的类,其中有几百个变量声明如下: [SpecialName] private static int \u0024STATIC\u0024SortByLengthAsc\u002402811241124\u0024xlen; 当我尝试将其导出到project时,所有这些行都会给出错误(静态未定义),即使我将所有\u0024更改为$。我做错什么了吗?不,程序集已经被混淆,以防止人们(像你一样)偷看代码,

我在反编译.net程序集时遇到问题。当我在dotPeek中打开程序集时,有一个名为frmMain的类,其中有几百个变量声明如下:

[SpecialName]
private static int \u0024STATIC\u0024SortByLengthAsc\u002402811241124\u0024xlen;

当我尝试将其导出到project时,所有这些行都会给出错误(静态未定义),即使我将所有\u0024更改为$。我做错什么了吗?

不,程序集已经被混淆,以防止人们(像你一样)偷看代码,并可能“窃取”代码。这些变量名在IL中是允许的,但在实际的C#代码中是不允许的,所以这就是它失败的原因


我知道的唯一补救办法是反向模糊处理工具,它知道模糊处理程序如何进行模糊处理,并试图扭转这种局面。或者你可以手工完成,这通常会花费很多时间,这证明了模糊处理是有好处的。

模糊处理包的作者可能有另一个产品,它可以为调试目的去除模糊代码。通常情况下,这是真的@PanagiotisKanavosI只会要求我的朋友(该程序的作者)给我源代码。感谢您的回答我在反编译Microsoft.NET Framework程序集(如PresentationFramework.dll)后看到了类似的输出。我认为这些程序集没有被混淆,因为它们现在是开源的?