2010-02-16 73 views
2

是否可以反编译.NET 2.0二进制文件(* .exe)的,以某种可读的代码?或者,如果没有,只需从中提取一些信息(例如方法名称,调试信息等)?反编译.NET 2.0二进制

+0

请记住,你*可能*最终会违反许可协议...... – 2010-02-16 16:25:42

回答

15

你可能想看看Reflector,它应该告诉你的装配C#或IL。

编辑:

带反光的成本增加,我已经切换到ILSpy我的日常需求。

+1

反射器是我曾经用于倒转的最佳工具:)) – 2010-02-16 16:27:04

+0

工程就像一个魅力,谢谢你:)。 – pako 2010-02-16 16:48:29

+0

Reflector也适用于转换代码,比如从VB.NET转换为C#。 – 2010-02-16 16:57:30

3

删除的exe到ILDASM或点净反射应该做的伎俩。

0

是。首先所有的.net库都有类型信息清单。他们可以使用反射或通过使用反射镜等工具进行问题询问。看看你需要查看的类的system.reflection命名空间。

1

我会引用自己从这个question earlier today

你永远无法回到确切 同一来源,因为有关于保存在 编译的代码没有 元数据。

但是你可以从出来的 汇编代码重新创建代码。

看看这本书,如果你对这些东西感兴趣 :逆向: 逆向工程的秘密。

编辑

一些编译器-101在这里,如果你 定义与另一个词 一个编译器而不是技术为“编译”, 那会是什么?

答:翻译

编译器翻译语法/ 短语,你已经写进另一个 语言C编译器转化为 大会甚至机器代码。 C#代码 被翻译成IL等等。

你的可执行文件只是一个 翻译的原文/ 语法的,如果你想“扭转为” 因此“它翻译回”,你会 最有可能还不如你有得到相同的结构 在开始时。

如果 你从英语译成德文 和从德国回英语更现实生活中的例子是, 的森泰斯结构最 有可能是不同的,可能 可以使用其他的话,但意思,上下文中, 很可能没有改变。

也是一样的编译器/ 翻译,如果你在C到ASM, 的逻辑是一样的,它只是一个 的阅读它不同的方式(和 当然它的优化)。

关于C#,您已经获得了许多很棒的工具,如Reflector。但是,如果代码被混淆,您将在阅读时遇到问题。