反编译.NET程序及调试

想要了解一个开源项目,可以直接读代码,想了解别的,就得反编译了。

其实.NET的反编译算是方便的,毕竟是IL中间语言而不是机器码或者汇编,不过当我需要这个功能并开始找的时候发现选择并不多,其实就两个:Reflector和ILSpy。

Reflector更有名,不过2011年开始转向了收费,ILSpy则是?Development started after Red Gate?announced?that the free version of .NET Reflector would cease to exist by end of February 2011.

但是2012年开始ILSpy也停止了更新,按理说一个开源软件停止更新基本两个原因:1.社区人跑光了;2.一些法律或者其他公司的干预。ILSpy和SharpDevelop是一个社区,一直非常活跃,所以开始我觉得是M$又动手脚了。

实际情况是ILSpy的项目整合到了SharpDevelop里面,不过没有任何明确的公告,我想原因可能是遭到了M$的压力或者核心成员有争论。

ILSpy1.0开始就支持直接反编译DLL然后直接attach调试,设断点什么的,但是2.0开始变成了插件需要自己编译(二进制包里这个被删了,源码包里有)。2.1的时候连源码里也没有了而且最新的一个发布里面有冲突。ILSpy的Debug功能消失几乎是和ILSpy停止开发同时,再同时,SharpDevelop出了类似的功能,可以在调试的同时反编译第三方库。

本质上这其实是一个功能,但是实际上ILSpy原来的用法更方便,因为不需要构造Solution敲任何代码,直接可以用。

我想原因可能是:

1.过于简单的反编译操作使得门槛降低,可能受到了一些压力。

2.开发这个项目的社区目的是方便开发人员调试自己的程序,而不是去剽窃他人的劳动,所以人为地加了一些限制。

不管怎么样,现在的确不方便了,虽然可以用2.0版,不过2.0不支持64位的环境= =。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注