zoukankan      html  css  js  c++  java
  • 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自带的组件“体系结构和分析工具”,

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

  • 相关阅读:
    windown reids
    redis 类型、方法
    nginx 路由配置
    http status code
    beego orm mysql
    thinkphp5
    beego
    MAC 更新brew 镜像源
    php session存入redis
    ios项目开发— iOS8 定位功能API改变
  • 原文地址:https://www.cnblogs.com/caianhua/p/9527768.html
Copyright © 2011-2022 走看看