c# - 这行来自 ILSpy 反编译器的代码是否有效?

标签 c# ilspy

我使用 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));

问题:使用# 是什么意思,我该如何更正这些错误?

我还注意到一些反编译类的名称以# 开头,一些 namespace 和方法名称也是如此。我从未使用过这样的命名约定,因此“ILSpy”如何想出这样的代码非常令人困惑。

最佳答案

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

通常,如果您正在反编译混淆代码,那么您就是在违背代码原作者的意愿 - 所以我建议您不要那样做。如果您认为您有正当理由获取某物的源代码,请询问作者。

能否将其转换为有效的 C#?当然 - 只需获取每个以 # 为前缀的标识符,并将其(一致地)映射到其他东西上,例如

using hashj;
...

string path = hashdb.hashab(HttpUtility.UrlDecode(text));

... 最终你会遇到一个名为 #db 的类,然后你将其重命名为 hashdb 等。但混淆的重点是使这是一个痛苦的过程。

关于c# - 这行来自 ILSpy 反编译器的代码是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285072/

相关文章:

c# - 在代码隐藏中使用 Multibinding.StringFormat

c# - ASP.NET c# 向数据集添加行

c# - 如何删除文件?

c# - 反编译器如何识别编译常量?

.net - Mono 实现 CLR 吗?或者至少有一些非托管内部调用?或无?

c# - 如何在 C# 中通过 OLEDB 在 Access SQL 通配符查询中使用文字下划线?

c# - Entity Framework 关系结果Web Api序列化错误

c# - 为什么这个 .dll 在 ILSpy 中有奇怪的字母?

c# - 反编译的程序集 - 异常代码