C#反编译器?

Gil*_*man 5 .net c#

这是真的吗?有人可以反编译我在CIL中用MSIL编写的代码吗?从.exe文件?

Han*_*ant 28

这大多是真的.一位名叫Lutz Roeder的聪明的程序员写了一个名为Reflector(现在由redgate拥有)的优秀反编译.将IL转换回C#或VB.NET代码非常擅长.它不是完整的魔法,它不能

  • 将常量转换回其常量标识符
  • 恢复局部变量的名称
  • 反编译除了中间形式之外的匿名方法
  • 反编译迭代器,如上所述
  • 如上所述,反编译lambda
  • 如上所述,反编译使用承诺的C#5异步和等待关键字的代码
  • 恢复代码中的注释.

并且有一些错误使它诉诸goto语句或摔倒.它作为调试辅助工具非常有用,可帮助您发现和诊断未编写的代码中的错误.没有任何记录在案的案例表明任何人使用它从通过反编译获得的盗版源代码开始成功的业务.它的效果太好了.

否则它就会为"混淆器"开启一个生动的细分市场,这些工具会重写程序集的内容,使其难以反编译.典型的策略是重写标识符,因此它们变得非常难以解释和/或修改程序集的结构,因此反编译器会崩溃但CLR不会崩溃.Redgate,Reflector的现任所有者,也出售混淆器.Visual Studio付费许可证中包含一个名为"Dotfuscator Community Edition"的许可证.不知道它有多好,它永远不会受到考验.

在代码中使用大量的lambda和迭代器已经是混淆代码的绝佳方法.将其反向设计为原始代码非常困难.那个Lutz在他做的同时放弃了Reflector并不是巧合,那就是当C#变得难以可靠地反编译时.


Taw*_*feh 8

开源替代方案:ILSpy.我已经尝试过,我自己封装了大约99%的反射器功能.