ILSpy反编译器的这行代码是否有效?

Sun*_*nil 2 c# ilspy

我使用ILSPy反编译了一个发布程序集,我得到了如下代码.当我在VS 2013中打开反编译项目时,每个语句都会出错.

using #j;//this line shows up as an error in VS2013
using System;
Run Code Online (Sandbox Code Playgroud)

错误是:

预处理程序指令必须显示为一行中的第一个非空白字符

我也在下一行得到了类似的错误.

string path = #db.#ab(HttpUtility.UrlDecode(text));
Run Code Online (Sandbox Code Playgroud)

问题:使用的含义是什么#?如何更正这些错误?

我还注意到一些反编译类的名称以名称开头,#一些名称空间和方法名称也是如此.我从来没有使用过这样的命名约定,所以"ILSpy"如何提出这样的代码是非常令人困惑的.

Jon*_*eet 8

不,它不是有效的C#.有可能它是反编译的代码,一开始就被混淆了,所以使用在IL中有效但在C#中没有的标识符.

通常情况下,如果您正在反编译混淆代码,那么您正在做一些违反代码原始作者意愿的事情 - 所以我建议不要这样做.如果您认为有正当理由获取某些内容的源代码,请询问作者.

能把它转换成有效的C#吗?当然 - 只需获取每个#前缀标识符,并将其(一致地)映射到其他内容,例如

using hashj;
...

string path = hashdb.hashab(HttpUtility.UrlDecode(text));
Run Code Online (Sandbox Code Playgroud)

...并且最终你会遇到一个被称为等级的类#db,然后重命名为hashdb等等.但混淆的重点是使这个过程变得痛苦.