我使用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"如何提出这样的代码是非常令人困惑的.
不,它不是有效的C#.有可能它是反编译的代码,一开始就被混淆了,所以使用在IL中有效但在C#中没有的标识符.
通常情况下,如果您正在反编译混淆代码,那么您正在做一些违反代码原始作者意愿的事情 - 所以我建议不要这样做.如果您认为有正当理由获取某些内容的源代码,请询问作者.
你能把它转换成有效的C#吗?当然 - 只需获取每个#前缀标识符,并将其(一致地)映射到其他内容,例如
using hashj;
...
string path = hashdb.hashab(HttpUtility.UrlDecode(text));
Run Code Online (Sandbox Code Playgroud)
...并且最终你会遇到一个被称为等级的类#db,然后重命名为hashdb等等.但混淆的重点是使这个过程变得痛苦.
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |