Reflector反编译WinForm程序后,可以得到csproj项目网站源码。
但其中的窗体Form类没办法在Visual Studio中直接打开进行界面设计,同时resources资源文件也没办法被Visual Studio设计器辨别。
本程序可一键自动进行转换修复,然后可以直接用Visual Studio打开项目进行界面编辑。需要.Net Framework 4.0环境。
Reflector是.NET开发中应具备的反编译工具。即便没用在反编译范围,也常常用它来检查程序集的命名规范,命名空间是不是合理,组织种类的办法是不是需要改变。举例说明,它有一个可以查询程序集完整名字的功能,请看下图
这里的Name,是标识一个程序集的完整标识,当GAC中存在程序集的多个版本时,这个名字是唯一的辨别名字。
但,Reflector非常早就转向收银管理系统了,需要购买许可才能用。对于耻于用盗版的朋友,一般会舍弃。有朋友说,Reflector并没增加更霸道的功能,却转向收费,让人费解。再看看市场上的.NET反编译软件,被Reflector击溃。
一提到Reflector,说到.NET反编译,Reflector常常是默认的最佳选择工具。
这里提起一下Visual Studio的垄断。Visual Studio占据了.NET开发工具系列的绝对垄断地位。在.NET 1.x年代,还有C# Builder,Delphi.NET来用和体验,一争高低。可是到后来,.NET Framwork更新频繁,动辙在编译器级别,和语言层面做更新,这令第三方的软件开发工具商很烦恼,这类工具也从市场上慢慢消声匿迹,几乎没第三方的软件开发商想开发.NET开发工具与Visual Studio一争高低。没了角逐,进步的速度要慢不少。Visual Studio 2008差不多就是Visual Studio 2005+SP的替代品,在工具层面,Visual Studio 2005 SP1加上了Web Application,就是Visual Studio 2008。虽然说语言层面是进步了不少,.NET 3.0,.NET 3.5,LINQ, 框架办法增加:WCF,WPF,WF,但,我一直认识从2005到2008,它在工具层面没什么进步。
SharpDevelop 是除Visual Studio外,另一个可选择的唯一的.NET开放工具,并且它是开源的。它提供的功能也非常不错,几乎就是在重写Visual Studio。最新的版本中,直接增加了对Visual Studio的解决方安案文件和项目文件的支持。ILSpy是SharpDevelop小组的反编译工具,也是开放源码的,今天来介绍一下它的调试器和反编译器,以让那个收费的,却没增加霸道功能的Reflector out。
ILSpy的界面与Reflector相似,左侧以树型控件显示程序集和它的种类,右侧是对应的源码。基础的反编译功能,与Reflector相比,丝毫不差,甚至有时用Reflector没办法反编译的程序集,用ILSpy可以反编译。
Decompiler 反编译器
基础的种类反编译功能都拥有,目前只支持把源码反编译为C#和IL语言,不支持VB。
当需要找的程序集是.NET框架时,可以直接从菜单File—Open from GAC中打开需要查询网站源码的程序集。
代码保存功能也做得很好,当点击一个种类时,选择File-Save Code会反编译目前的种类并保存到指定的文件中,当选择程序集时,Save Code保存为一个项目文件,并且把它所有些种类加到这个项目中。
Debugger 调试器
这里要说的调试器,不是指Visual Studio的网站源码级别的调试器,而是指程序集的调试器。Reflector有个Addin,可以直接附加在Visual Studio中,调试第三方的种类库,而无需把第三方的种类库反编译后,以网站源码的形式添加到项目中。
ILSpy也有这个功能,直接对第三方的程序集进行调试,有两种选项
假如第三方种类库是可实行程序,可以用Debug an executable来启动这个程序。
假如第三方种类库是程序集,可以用Attach to running application来附加,以启动程序集的调试。
从上面两张图中已经可以看出它的使用方法,和调试源码一样。在需要监视变量值的办法的地方,设置断点,当程序运行到此时,就能通过监视窗体来察看变量的值。从ILSpy的状况栏中看出,上面的第一张图是正处于调试状况,第二张图,是筹备就绪,可以进行调试。
这两者有什么区别是,Attach to a running application调试时,假如代码经过编译器优化,则监视器会没办法得到它的值。
如图所示,没办法显示正在调试的变量num的值,由于代码已经经过优化。官方推荐的方法是Debug an executable
与在Visual Studio中调试.NET源码一样,你可以Step into,Step over,continue,同时状况栏会显示就绪,运行中,正在调试。
除去调试程序集的C#/VB形式的代码以外,也可以以IL代码形式调试,如下图所示
由此看来,这还是非常不错的调试IL代码的工具。工具可以促进学习的成效,学习领悟之后,又可以推进工具的进步,这就是常识的无止境的进步。
ILSpy的debugger是以插件形式存在的,请确保包括ILSpy.Debugger的Plugin。
依据大家的理解,调试.NET程序集肯定需要PDB文件才能。然而ILSpy却没产生PDB文件,而且它不能调试ASP.NET Web application和Web 服务。
这其中的原理,不甚了解。compiler/debugger一直是我喜欢的技术主题,但学识肤浅,没办法推荐。
Reflector会测试到系统时间超越了它预设的时间,假如不升级,它会主动删除自己,从你的电脑中out掉。假如你对此非常烦恼,那就让它out吧,你可以有另一个选择,试一试ILSpy,可能会带来一丝的惊喜。
TAG标签:反编译(3)
转载请说明来源于当下软件园(https://www.gpsdan.com)
本文地址:https://www.gpsdan.com/soft/2100.html
郑重声明:文章来源于网络作为参考,本站仅用于分享不存储任何下载资源,如果网站中图片和文字侵犯了您的版权,请联系我们处理!邮箱3450399331@qq.com