这行来自 ILSpy 反编译器的代码是否有效?
Is this line of code from ILSpy decompiler valid?
我使用 ILSPy 反编译了一个发布程序集,我得到了如下代码。当我在 VS 2013 中打开反编译的项目时,我得到了每个语句的错误。
using #j;//this line shows up as an error in VS2013
using System;
错误是:
Preprocessor directives must appear as the first non-whitespace character on a line
我在下一行也遇到了类似的错误。
string path = #db.#ab(HttpUtility.UrlDecode(text));
问题 : 使用#
是什么意思,我该如何纠正这些错误?
我还注意到一些反编译的 类 的名称以 #
开头,一些名称空间和方法名称也是如此。我从来没有使用过这样的命名约定,所以“ILSpy”是如何想出这样的代码的,这让人非常困惑。
不,它不是有效的 C#。很可能是反编译代码开始时被混淆了,所以使用在 IL 中有效但在 C# 中无效的标识符。
通常情况下,如果您正在反编译混淆代码,那么您就是在违背代码原作者的意愿 - 所以我建议您不要那样做。如果您认为您有正当理由获取某些东西的源代码,请询问作者。
您可以将其转换为有效的 C# 吗?当然 - 只需要每个 #
前缀的标识符,并将其(一致地)映射到其他东西上,例如
using hashj;
...
string path = hashdb.hashab(HttpUtility.UrlDecode(text));
... 最终您将 运行 跨越一个名为 #db
的 class,然后您将其重命名为 hashdb
等。但是重点混淆是为了让这个过程变得痛苦。
我使用 ILSPy 反编译了一个发布程序集,我得到了如下代码。当我在 VS 2013 中打开反编译的项目时,我得到了每个语句的错误。
using #j;//this line shows up as an error in VS2013
using System;
错误是:
Preprocessor directives must appear as the first non-whitespace character on a line
我在下一行也遇到了类似的错误。
string path = #db.#ab(HttpUtility.UrlDecode(text));
问题 : 使用#
是什么意思,我该如何纠正这些错误?
我还注意到一些反编译的 类 的名称以 #
开头,一些名称空间和方法名称也是如此。我从来没有使用过这样的命名约定,所以“ILSpy”是如何想出这样的代码的,这让人非常困惑。
不,它不是有效的 C#。很可能是反编译代码开始时被混淆了,所以使用在 IL 中有效但在 C# 中无效的标识符。
通常情况下,如果您正在反编译混淆代码,那么您就是在违背代码原作者的意愿 - 所以我建议您不要那样做。如果您认为您有正当理由获取某些东西的源代码,请询问作者。
您可以将其转换为有效的 C# 吗?当然 - 只需要每个 #
前缀的标识符,并将其(一致地)映射到其他东西上,例如
using hashj;
...
string path = hashdb.hashab(HttpUtility.UrlDecode(text));
... 最终您将 运行 跨越一个名为 #db
的 class,然后您将其重命名为 hashdb
等。但是重点混淆是为了让这个过程变得痛苦。