是否可以将 .NET 2.0 二进制文件 (*.exe) 反编译为某种可读代码?或者如果没有,只是从中提取一些信息(例如方法名称、调试信息等)?
5 回答
将 exe 放入 ILDASM 或 Dot Net Reflector 应该可以解决问题。
搜索 Lutz Roeder,您会发现:
我将在今天早些时候从这个问题中引用自己:
您永远无法回到完全相同的源,因为没有与已编译代码一起保存的元数据。
但是您可以从汇编代码中重新创建代码。
如果您对以下内容感兴趣,请查看这本书:逆向:逆向工程的秘密。
编辑
这里的一些编译器-101,如果你用另一个词定义一个编译器,而不是像“编译器”那样技术,它会是什么?
答:译者
编译器将您编写的语法/短语翻译成另一种语言,C 编译器将其翻译成汇编甚至机器代码。C# 代码被翻译成 IL 等等。
您拥有的可执行文件只是原始文本/语法的翻译,如果您想“反转它”因此“将其翻译回来”,您很可能不会得到与开始时相同的结构。
一个更现实的例子是,如果您将英语翻译成德语,然后将德语翻译回英语,句子结构很可能会有所不同,可能会使用其他词,但含义和上下文很可能不会改变。
如果您从 C 转到 ASM,编译器/翻译器也是如此,逻辑是相同的,只是阅读方式不同(当然还有优化)。
关于 C#,您已经获得了很多很棒的工具,例如 Reflector。但是,如果代码被混淆,您将无法阅读它。
是的。首先,所有 .net 库都有带有类型信息的清单。可以使用反射或使用反射器等工具对它们进行有问题的询问。查看您需要查看的类的 system.reflection 命名空间。