.NET程序员的开发利器—.NET Reflector简介
一、 简介

  程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序集信息,而且是免费的工具。

  如今,在Visual Studio.NET中编译源代码(无论是VB还是C#)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL),是包在一个或多个DLL或可执行文件中的。

  基于ILDASM检查程序集中的IL有时很有用,但它要求我们熟悉MSIL。通常,比起IL,大多数开发人员对像C#或Visual Basic这样的高级程序设计语言更为熟悉。

  Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持。

  二、 下载与运行Reflector

  Reflector是由微软员工Lutz Roeder编写的免费程序。这个软件经常更新,你可以在http://www.aisto.com/roeder/dotnet下载最新的版本。在本文成文之时,Reflector的最新版本为5.0.35.0,仅有1M大小。只要双击下载后的Reflector.exe文件即可运行Reflector。

  默认情况下,Reflector会打开一组公共程序集(mscorlib、System、System.Data、System.Drawing等等)。每个打开的程序集都列在Reflector的主窗口中(见图1)。单击程序集旁边的+图标可以展开树结构并展示程序集的命名空间。每个命名空间旁边都有一个相关的+图标,单击这个图标将显示这个命名空间内的类。除此以外,还可以展开每个类,显示类的成员:事件、字段、方法与属性。

  图1 Reflector的主窗口

  要想查看其它程序集(包括我们自己创建的程序集)的细节,你可以使用菜单命令“File→Open”。然后,浏览到想要查看的程序集。只要选择了有效的.NET程序集,这个程序集就可以在Reflector的主窗口中与其它默认程序集共同显示。要想从Reflector的主窗口中删除程序集,只需右击程序集并选择“Close”。

  三、 使用Reflector反汇编程序集

  提供基本的程序集是Reflector唾手可得的功能,然而,Reflector真正的威力体现在它的反汇编能力。只要浏览到类级的成员,就可以通过Tools菜单中的Disassembler项(或在该项上单击右键)反汇编此成员。这将打开第二个窗格,以C#、Visual Basic、Delphi或者IL显示反汇编后的内容。图2以C#语言展示了对SmtpClient类中Abort方法的反汇编结果。

  图2 使用Reflector反编译类方法

  有了Reflector的反编译功能,要研究.NET框架基类库就容易多了。我们完全可以在没有源代码的情况下研究我们所创建或者正在使用的程序集相应源代码。

  不用太担心,你自己的.NET应用程序还有其它受保护措施。但是,想阻止别人查看.NET程序集的IL(继而反编译成C#或者Visual Basic)是不可能的,但你可以使用“混淆”技术使IL变得混乱。目前,市场上有许多.NET混淆产品,比如:PreEmptive Solution的Dotfuscator、WiseOwl的Dmeanor以及Remotesoft的.NET Obfuscator等。

  四、 Reflecator的其它功能

  除了作为对象浏览器与反汇编器之外,Reflector还可以显示类与其成员的调用与被调用图、提供单键访问Google或MSDN搜索的能力并提供了允许第三方开发人员为Reflector创建插件的框架。

  要查看调用或被调用图,只需要在树视图中选择一个成员,访问Tools菜单,选择Call Graph或Callee Graph选项即可。Call Graph会列出所选项所调用的成员,而Callee Graph列出调用所选项的成员。

  通过使用插件,Reflector的功能可以得到进一步扩展。目前有能显示程序集依赖图、自动加载当前运行中的程序集、输出整个程序集的反汇编内容以及在Visual Studio中作为Reflector的宿主等的插件。还有更多插件都列在http://www.codeplex.com/reflectoraddins中。在此,我极力推荐有兴趣的读者前去一看。

  不出乎所料,的确存在一个Reflector.VisualStudio插件。有了这个插件,就可以让Reflector集成在Visual Studio环境中,进而取代以前那个有些“拙漏”的对象浏览器。

  首先,我们需要在机器上准备Reflector的最新版,然后从http://www.testdriven.NET/reflector下载最新版本的Reflector.VisualStudio插件。据说安装了此插件之后,Reflector能够与Visual Studio完美融合。但遗憾的是,本人试下载此软件并安装(仅能得到TestDriven.NET-2.8.2130 RTM个人测试版本,时间7/30/2007,大小3.3M)后,没有大发现—仅是在VS2005中添加“Go to Reflector”和一个帮助菜单项。点击“Go to Reflector”菜单项仅是从VS2005内部启动Reflector而已。

  有了Reflector.VisualStudio插件(正版,下面是根据在线资料介绍),Reflector可以寄在Visual Studio中Reflector不仅是一个对象浏览器、反汇编器,包裹在同一个程序中的所有功能还可以寄于Visual Studio中。

  五、 小结

  还记得Spy++吗?在Win32时代,这个软件对于我们分析一个陌生软件的设计思路可谓立下汗马功劳。在如今的.NET时代,Reflector又成为每个严肃的.NET开发人员工具箱中必不可少的精髓工具之一。怎么样,请赶紧试锋吧。

转载链接:http://hi.baidu.com/wodaole1/blog/item/0476330279460b074afb511c.html

转载于:https://www.cnblogs.com/elaine89/archive/2012/08/14/2637574.html

(转)NET Reflector简介相关推荐

  1. Reflector、ReflectorFactory的今生

    一.Reflector简介 Reflector是Mybatis中反射模块的基础,每个Reflector对象都对应一个类,在Reflector中缓存了反射操作需要使用的类的元信息.ReflectorFa ...

  2. mpls ***简介

    在研究了基于mpls的***技术的原理和工作的基础上,给出了基于bgp扩展实现的mpls ***的一个网络组成模型,同时描述了这个模型中的各个设备及其功能.最后分析了mpls ***的技术优势及其应用 ...

  3. 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理

    简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...

  4. [C#反编译教程]001.Reflector.NET反编译工具 v8.5绿色版+注册机+注册教程

    截图 下载地址 Reflector.NET反编译工具 v8.5绿色版+注册机 下载地址:http://pan.baidu.com/s/1mgN1Cpi 密码:mx19 简介 .NET Reflecto ...

  5. mybatis 简介、中文文档、中英对照文档 下载

    mybatis 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 mybatis-3.2.8.jar mybatis-3.2.8-API文档-中文版 ...

  6. keepalived原理 mysql_高可用实现KeepAlived原理简介

    一.简介 目前主流实现web网站及数据库服务高可用软件包括:keepalived.heartbeat.corosync,cman;高可用简称HA: 1.keepalived主要功能 对RealServ ...

  7. android开发工具简介及下载地址

    AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具. ...

  8. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  9. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  10. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

最新文章

  1. C++:常类型Const
  2. 物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
  3. matlab支持的文件类型,MATLAB可以读取的数据文件类型有()
  4. android浮动文本,android 添加浮动标签在textView最尾端,自动换行
  5. 归纳:数据库设计的六个阶段详解(有这一篇就够了)
  6. 从EXCEL文件将数据导入数据库的向导程序设计!
  7. 微信小程序 WXBizDataCrypt 解密 报错
  8. 实战生产环境vCenter HA配置(VCSA6.5)
  9. office系统构架
  10. Synchronized底层实现--概论
  11. '_thread._local' object has no attribute 'value'
  12. java web 密码加密_JavaWeb日记——Shiro之密码加密
  13. 频域采样与恢复matlab实验,实验二 时域采样与频域采样及MATLAB程序
  14. Photoshop 更改图片颜色
  15. 2022-2028全球及中国双输入RTD温度计行业研究及十四五规划分析报告
  16. EM and Variational Inference Derivation
  17. 【linux】net-speeder减少由于网络距离过远导致的丢包问题
  18. 计算机课件文字,计算机应用基础_文字处理wordppt课件.ppt
  19. 十月二日读书笔记(JSP网页的内置对象)
  20. 【GlobalMapper精品教程】043:图片自动矢量化

热门文章

  1. 计算机系统中设置保护系统还原,win7系统电脑设置系统还原点的操作方法
  2. 大数据分析服务器硬件配置如何选择
  3. 年度回顾篇:2018年的亚马逊,众生虽苦,诸恶莫作
  4. 【一起入门NLP】中科院自然语言处理作业三:用BiLSTM+CRF实现中文命名实体识别(TensorFlow入门)【代码+报告】
  5. 鸿蒙系统桌面首页怎么修改,如何设置才能恢复Win7/8/10系统被修改的默认主页
  6. 微信点击链接直接跳转手机默认浏览器下载APP的APK文件实现code
  7. 卓有成效的管理者(珍藏版) (德鲁克管理经典)
  8. DiskPart使用方法(ZT)
  9. mapbox-gl:创建Marker
  10. 如何通过低代码平台搭建以“督办”为中心的办公管理系统