反编译.NET 2.0二进制文件

时间:2010-02-16 16:20:51

标签: .net reverse-engineering decompiling

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

5 个答案:

答案 0 :(得分:15)

您可能希望查看Reflector,它应该将程序集显示为C#或IL。

编辑:

随着Reflector的成本增加,我已经切换到ILSpy以满足我的日常需求。

答案 1 :(得分:3)

将exe放入ILDASM或Dot Net Reflector应该可以解决问题。

答案 2 :(得分:1)

搜索Lutz Roeder,你会发现:

http://www.red-gate.com/products/reflector/

答案 3 :(得分:1)

我将引用自己的question earlier today

  

你永远无法恢复精确   因为没有相同的来源   有关保存的元数据   编译代码。

     

但是你可以从中重新创建代码   汇编代码。

     

如果你是的话,请查看这本书   对这些事情感兴趣:逆转:   逆向工程的秘密。

     

修改

     

有些编译器 - 101,如果你是的话   用另一个单词定义编译器   而不像“编译器”那样技术性,   它会是什么?

     

答案:翻译

     

编译器翻译语法/   你写的另一个短语   C编译器转换为的语言   装配甚至机器代码。 C#代码   被翻译成IL等等。

     

你拥有的可执行文件只是一个   翻译原文/   语法,如果你想“逆转它”   因此,“将其翻译回来”   很可能没有得到相同的结构   正如你在开始时那样。

     

更真实的例子是if   你从英语翻译成德语   从德语回到英语,   最大的信号结构   可能是不同的,其他的话可能会   被使用但意义,背景,   很可能没有改变。

     

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

关于C#,你已经获得了许多很棒的工具,比如Reflector。但是,如果代码被混淆,您将无法阅读它。

答案 4 :(得分:0)

是。首先,所有.net库都有类型信息的清单。可以使用反射或使用反射器等工具来查询问题。查看您需要查看的类的system.reflection命名空间。