dnspy的详细配置,dnspy如何过滤反编译之后的乱码,dnspy如何反编译表达式目录树
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自带的组件“体系结构和分析工具”,
右键解决方案中“项目”——“在代码图中显示”,就可以像上面那样子去深度分析和实践面向对象程序设计了。理解别人的代码的底层实现和设计原理,会有比较大的帮助。
最新文章
- WPF DataGrid 鼠标双击选中的DataGridRow及Row数据
- Java-数组练习1
- js中的hasOwnProperty()和isPrototypeOf()
- virtualbox 在window10上的兼容性调整
- POJ_1287_mst
- JS多维数组转一维
- MapReduce/Hbase进阶提升(原理剖析、实战演练)
- ROOT android 原则。 基于(zergRush)
- shell变量赋值进阶
- 打不开BT,一直重复的关闭开启。
- 设计一个 iOS 控件
- Reids详解-抄本
- Ubuntu下使用网易云音乐
- winfrom 控件的显示隐藏方法
- ibatis.net:第二天,Hello,World ?
- 2015.7.8js-05(简单日历)
- Oracle sqlloader
- java 使用POI读写Excel文件(兼容2003、2007)
- SpringBoot(零)-- 工程创建
- 看雪论坛 破解exe 看雪CTF2017第一题分析-『CrackMe』-看雪安全论坛