dnSpy应该是目前使用最多的.net反编译工具。很多情况下反编译C#代码非常方便,特别是查找基类,子类。搜索一些class,方法。接口,非常方便。比ILspy好很多。而且dnspy是可以配置的。

如果要dnSpy非常干净地显示反编译之后的代码,可以看我具体的配置:

第一张是效果图,过滤一个具体的关键词筛选的时候可以使用【全词匹配】,可以在所有的.net framework中查找你需要寻找的那个关键字,不区分大小写。

右侧底部的这个搜索框是可以配置的,而且有时候很容易被隐藏掉,需要“上拉”才能显示出来。隐藏得比较深。

第二张图:常规情况下,默认sndpy反编译出来会有很多垃圾注释。红色框部分都是我们不需要的,会干扰我们分析代码。如何去掉这些注释的干扰,请看第三张图。

第三张图:菜单导航栏 -> 视图 ->选项 ;    反编译器 -> C#  ||  IL  设置如下即可。有时候为了查看表达式树的内部结构,我们一般不勾选 Expression Tree。查看ExpressionTree内部结构图,图4那样。

第四张图:默认情况下ILSpy要查看表达式目录树的内部实现,是看不到的,需要切换C#版本号,而dnspy更加简洁。直接取消掉ExpressionTree上面勾选即可。

取消对ExpressionTree的反编译,就是上面取消勾选“ExpressionTree”就是下面这种:

勾选 反编译 ExpressionTree 之后,效果如下,看到的是表达式目录树原始的样子:Expression<Func<People, bool>> lambda = (People x) => x.Id.ToString().Equals("5");

大家可以测试一下。

第五张图:一个经常需要用到的工具,就是查看某个类的子类。比如MVC5中的Action返回结构经常是ViewResult(); 除了这个返回值之外,它其实还可以返回所有基于ActionResult的子类。

还一个功能就是 重新加载所有程序集。其实dnspy是有这个功能的。

通过以上对dnspy的配置,基本上可以替代我们日常的反编译工具了。

唯一需要注意的是,exe文件被dnspy打开之后,就是独占的状态,会导致visual studio 2017无法重新编译生成exe。

需要退出dnspy才行。

另外,经常看见博客园中有人丢出一些类图。分析开源项目的框架,继承的一些关系。

比如像这种:

结合这种dnspy的反编译工具,把.net framework的类库摸一个dll反编译出   .sln 的解决方案文件,就可以用vs2017自带的组件“体系结构和分析工具”,

右键解决方案中“项目”——“在代码图中显示”,就可以像上面那样子去深度分析和实践面向对象程序设计了。理解别人的代码的底层实现和设计原理,会有比较大的帮助。

最新文章

  1. WPF DataGrid 鼠标双击选中的DataGridRow及Row数据
  2. Java-数组练习1
  3. js中的hasOwnProperty()和isPrototypeOf()
  4. virtualbox 在window10上的兼容性调整
  5. POJ_1287_mst
  6. JS多维数组转一维
  7. MapReduce/Hbase进阶提升(原理剖析、实战演练)
  8. ROOT android 原则。 基于(zergRush)
  9. shell变量赋值进阶
  10. 打不开BT,一直重复的关闭开启。
  11. 设计一个 iOS 控件
  12. Reids详解-抄本
  13. Ubuntu下使用网易云音乐
  14. winfrom 控件的显示隐藏方法
  15. ibatis.net:第二天,Hello,World ?
  16. 2015.7.8js-05(简单日历)
  17. Oracle sqlloader
  18. java 使用POI读写Excel文件(兼容2003、2007)
  19. SpringBoot(零)-- 工程创建
  20. 看雪论坛 破解exe 看雪CTF2017第一题分析-『CrackMe』-看雪安全论坛

热门文章

  1. Perl学习笔记(3)----遍历哈希表的一个容易疏忽的地方
  2. C中atoi和strcpy的自定义实现
  3. oracle大量数据删除
  4. Hadoop学习---CentOS中hadoop伪分布式集群安装
  5. laravel 使用EasyWechat 3分钟完成微信支付(以APP支付为例)
  6. 如何使用cntlm配置代理上网
  7. Hibernate缓存策略
  8. python功能代码块记录
  9. IIS 7.5+FCK编辑器+burp suite神器拿webshell
  10. tftp传输可执行程序问题