当前位置: 移动技术网 > IT编程>开发语言>.net > .net程序反编译工具(ILSpy)

.net程序反编译工具(ILSpy)

2018年12月10日  | 移动技术网IT编程  | 我要评论

日本疗养院砍人事件,43699,WWE2017皇家大战

本文导读:ilspy反编译工具的使用。不过,ilspy需要在电脑上安装.net framework 4.0。ilspy可以将一个dll文件转换为c#或vb语言。ilspy对于单个文件可以保存为.cs文件或.vb文件,当文件较多时,可以选择保存为项目文件。c#语句可被ilspy反编译出来,并可支持yield return语句和 lambdas表达式的反编译。

以前一直使用reflector来查看.net类库的一些信息,不过,自2011年2月份开始,reflector就开始转向收费软件了,所以爱好免费软件的开发者们转而开发自己的反编译软件。于是ilspy就因运而生了。ilspy这个开源工具的目的就是代替reflector的,它反编译出的代码和reflector差不多。

sharpdevelop 是除visual studio外,另一个可选择的唯一的.net开放工具,并且它是开源的。它提供的功能也相当不错,几乎就是在重写visual studio。最新的版本中,直接增加了对visual studio的解决方安案文件和项目文件的支持。ilspy是sharpdevelop小组的反编译工具,也是开放源代码的,下面介绍一下它的调试器和反编译器。

ilspy的界面截图

\

ilspy的界面与reflector相似,左边以树型控件显示程序集和它的类型,右边是对应的源代码。基础的反编译功能,与reflector相比,丝毫不差,甚至有时候用reflector无法反编译(因为)的程序集,用ilspy可以反编译。

ilspy需要在电脑上安装.net framework 4.0. ilspy常用的几个功能

基础的类型反编译功能都具备

现在只支持把源代码反编译为c#和il语言,不支持vb。

效果图为:

\

ilspy的代码保存功能

当点击一个类型时,选择file->save code会反编译当前的类型并保存到指定的文件中,当选择程序集时,save code保存为一个项目(csproj)文件,并且把它所有的类型加到这个项目中。

ilspy的调试器功能

这里要说的调试器,不是指visual studio的级别的调试器,而是指程序集的调试器。reflector有个addin,可以直接附加在visual studio中,调试第三方的类型库,而不需要把第三方的类型库反编译后,以源码的形式添加到项目中。

ilspy也有这个功能,直接对第三方的程序集进行调试,有两种选项

如果第三方类型库是可执行程序(exe),可以用debug an executable来启动这个程序。

如果第三方类型库是程序集(dll),可以用attach to running application来附加,以启动程序集的调试。

\

从上图中已经可以看出它的用法,和调试源代码一样。在需要监视变量值的方法的地方,设置断点,当程序运行到此时,就可以通过监视窗体来观察变量的值。

这两者的区别是,attach to a running application调试时,如果代码经过编译器优化,则监视器会无法得到它的值。

\

如图所示,无法显示正在调试的变量num的值,因为代码已经经过优化。官方推荐的方式是debug an executable


与在visual studio中调试.net源代码一样,你可以step into,step over,continue,同时状态栏会显示就绪(stand by),运行中(running),正在调试(debugging)。

除了调试程序集的c#/vb形式的代码之外,也可以以il代码形式调试,如下图所示

\

ilspy的debugger是以插件形式存在的,请确保包含ilspy.debugger的plugin。

\

不过调试.net程序集一定需要pdb文件才可以。然而ilspy却没有产生pdb文件(no pdb files are generated),而且它不可以调试asp.net web application和web 服务。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网