ILSpy工具使用

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保存为一个项目(csproj)文件,并且把它所有的类型加到这个项目中。

Debugger 调试器


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

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

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

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

从上面两张图中已经可以看出它的用法,和调试源代码一样。在需要监视变量值的方法的地方,设置断点,当程序运行到此时,就可以通过监视窗体来观察变量的值。从ILSpy的状态栏中看出,上面的第一张图是正处于调试状态,第二张图,是准备就绪,可以进行调试。

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

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

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

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

由此看来,这还是相当不错的调试IL代码的工具。工具可以促进学习的效果,学习领悟之后,又可以推进工具的发展,这就是知识的无止境的发展。

ILSpy的debugger是以插件形式存在的,请确保包含ILSpy.Debugger的Plugin。

根据我们的理解,调试.NET程序集一定需要PDB文件才可以。然而ILSpy却没有产生PDB文件(no PDB files are
generated),而且它不可以调试ASP.NET Web application和Web
服务。 
这其中的原理,不甚明白。compiler/debugger一直是我喜爱的技术主题,但学识肤浅,无法分享。

Reflector会检测到系统时间超过了它预设的时间,如果不升级,它会主动删除自己,从你的电脑中out掉。如果你对此很烦恼,那就让它out吧,你可以有另一个选择,试试ILSpy,或许会带来一丝的惊喜。

ILSpy工具使用,布布扣,bubuko.com

时间: 2024-07-30 10:15:49

ILSpy工具使用的相关文章

ILSpy反编译工具之C#反汇编

1.下载ILspy工具 https://github.com/icsharpcode/ILSpy#ilspy------- 注意: ILspy需要在电脑上安装.NET Framework 4.0.   2.反编译 打开ilspy工具如图所示 3.反编译成功保存 按 ctrl+s 保存即可. 原文地址:https://www.cnblogs.com/pythoncd/p/10365845.html

使用Dotfuscator加密混淆程序以及如何脱壳反编译

混淆演示 首先介绍如何使用Dotfuscator对.net程序加密码混淆/加壳 C#或vb.net编写的应用程序或DLL. 这里随便创建了一个C#的命令行控制台程序.程序很简单,对当前的时间进行了AES的加解密并输出. 接下来使用Dotfuscator对程序进行混淆. 一,运行dotfuscator.exe 二,添加ConsoleApplication1.exe 三,对混淆选项进行一些配置 四,开始混淆. 五,查看混淆结果. 这里使用ILSPY工具,打开混淆后的程序.如图: 可以发现,代码被混淆

aspx代码审计-1

今天和大家分享一下aspx网站的代码审计,漏洞类型就是SQL注入和cookie欺骗. 本文作者:i春秋签约作家--非主流 今天看的cms名字叫做:XX星员工请假系统 我们首先看一下网站的目录结构: 其中,很明显可以看到bin目录下面都是dll文件,也就是aspx网站的源码:install目录就是安装目录:admin目录就是后台目录-etc. 我们今天的目标是纯白盒审计,一切只看代码.下面就是正题咯 先看login.aspx吧,毕竟登录框,说不定就有注入呢? 其中inherits的值就是这个文件的

[原]System.IO.Path.Combine 路径合并

使用 ILSpy 工具查看了 System.IO.Path 类中的 Combine 方法 对它的功能有点不放心,原方法实现如下: // System.IO.Path /// <summary>Combines two path strings.</summary> /// <returns>A string containing the combined paths. If one of the specified paths is a zero-length stri

FtpDataStream中的隐藏问题

最近在使用FtpWebResponse.GetResponseStream方法时遇上个问题——Stream在未关闭之前就报出了ObjectDisposedException.刚开始十分困惑,因为一直用的是类似的写法,从逻辑上不应该会出现异常.之后通过ILSpy工具查看源代码以及网上找寻相关资料才找到了原因,故在此作文,以作分享. 我最初的代码是这样写的: FtpWebRequest request = (FtpWebRequest)WebRequest.Create(param.URL); re

ILSpy,DLL反编译工具,学习与了解原理的好帮手

你是否一直苦于找到了好的dll却只知道怎么使用而不知道其原理. 你是否在使用一个dll的时候发现它在一些参数时报错了却没法解决. 你是否想成为一个优秀的.net开发,成为一个优秀的系统制造者. 那你需要这款工具,ILSpy,强大的dll反编译工具,让你了解原理,了解"宇宙"最初的本源. 来吧,下载吧 ILSpy_2.1.0.1603

ILSpy反编译工具的使用

本文导读:ILSpy反编译工具的使用.不过,ILspy需要在电脑上安装.NET Framework 4.0.ILspy可以将一个dll文件转换为C#或VB语言.ILspy对于单个文件可以保存为.cs文件或.vb文件,当文件较多时,可以选择保存为项目文件.C#语句可被ILspy反编译出来,并可支持yield return语句和 lambdas表达式的反编译. 以前一直使用reflector来查看.net类库的一些信息,不过,自2011年2月份开始,reflector就开始转向收费软件了,所以爱好免

ILSPY反编译工具下载代替收费的Reflector工具

原文发布时间为:2011-10-10 -- 来源于本人的百度文章 [由搬家工具导入] ILSPY反编译工具下载 http://build.sharpdevelop.net/BuildArtefacts/#ILSpyMaster

[转]dll反编译工具(ILSpy)的使用

软件地址: 链接:https://pan.baidu.com/s/1YunJ3MAuNisGtl8YYzr4hw 密码:ejx8 工具使方法 1.将压缩文件进行解压,打开exe文件. 2.打开后,选择File->文件夹,选择需要反编译的dll文件. 3.在里面可以看到命名空间,类,方法,以及代码实现,如下图: 4.当你知道一个方法的时候,可以直接使用搜索,搜索结果包含方法的命名空间,点击之后就可以在代码区,看到对应的代码. 原文地址:https://www.cnblogs.com/sentang