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自带的组件“体系结构和分析工具”,

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

原文地址:https://www.cnblogs.com/caianhua/p/9527768.html