https://github.com/0xd4d/dnSpy

https://github.com/0xd4d/dnSpy/releases/

dnSpy是反向工程.NET程序集的工具。它包括一个反编译器,一个调试器和一个程序集编辑器(和更多),可以通过编写自己的扩展名来轻松地扩展。它使用dnlib来读取和写入程序集,因此它可以处理混淆的程序集(例如恶意软件)而不会崩溃。

二进制

最新发布

最新版本: 

或者从源代码构建,请参阅Wiki

特征

  • 开源(GPLv3)和免费永远(:TM :)
  • 装配编辑器
    • 使用C#或Visual Basic编辑任何方法,属性和事件
    • 代码编辑器具有IntelliSense(代码完成,签名帮助,快速信息)
    • 可以通过添加C#和Visual Basic代码将整个类添加到程序集中
    • 编辑类型(类),方法,属性,事件和字段的所有元数据
    • 添加,删除,重命名任何类型(类),方法,属性,事件,字段
    • 编辑,添加,删除.NET资源并将其保存到磁盘
    • IL编辑器允许在IL级编辑方法体:IL指令,本地人,异常处理程序
  • 调试器
    • 调试任何.NET程序集,不需要源代码
    • 在任何程序集中设置断点,包括框架程序集,GAC中的程序集和只存在于内存中的程序集
    • 内存窗口
    • 输出窗口
    • 附加到进程
    • 当地人的窗口
      • 本地人的原始内容(例如解密的字节数组)可以保存到磁盘
    • 调用堆栈窗口
    • 线程窗口
    • 模块窗口
      • 模块(例如,解密的内存模块)可以保存到磁盘
    • 异常设置
    • 可以调试动态程序集
    • 支持调试CoreCLR程序集
  • 解码到C#,Visual Basic,IL
  • 主题:蓝色,黑暗,浅色(和高对比度)
  • 支持较小的屏幕(例如笔记本电脑)
    • 线高可以针对较小的屏幕进行优化

      • 空白和非字母数字线是正常高度的75%
      • 行之间没有额外的间距(每行保存1个垂直像素)
    • 菜单和工具栏共享同一行
    • 全屏模式(Shift + Alt + Enter)保存一些垂直像素
  • 高DPI支持和每个监视DPI感知
  • 翻译成几种语言
  • 高度可扩展
    • 编写自己的扩展名并添加自己的功能
    • 所有主要功能都已经是扩展(程序集编辑器,调试器,反编译器)
  • 多个选项卡和选项卡组
    • 你的屏幕太大了?不要把它削减一半,添加另一个垂直的标签组,一次读两个类!
    • 文本编辑器中的选项卡和位置在您关闭dnSpy并在启动时恢复时保存,以便您可以继续停止
  • 搜索程序集
    • 搜索类型(类),方法,属性,事件和字段
    • 在代码中搜索字符串或数字
  • 装配分析仪
    • 查找类型(类),方法,属性,事件和字段的用法
  • BAML到XAML反编译器
  • 快速
  • 突出显示的引用,关键字
    • 突出显示插入符号下的引用,以便在代码中更容易查看引用的所有用途
    • 标签,Shift + Tab,Ctrl + Shift +向上,Ctrl + Shift +向下移动到下一个或上一个引用
    • Alt + Down和Alt + Up移至下一个或以前的定义(类型(类),方法,属性,事件,字段)
  • 结构可视化
    • 在代码块的开始和结束之间显示的垂直引导线
    • 不同的颜色用于不同的块,例如。循环,条件,方法等
  • dnlib用于读取和写入程序集,因此可以处理混淆的代码(例如恶意软件)而不会崩溃
  • 转到命令:
    • 入口点
    • 汇编静态初始化方法(<Module> .. cctor)
    • 任何元数据令牌
    • 任何元数据行
  • 将鼠标悬停在类型(类),方法,属性,事件,字段上时,语法突出显示带有XML文档注释的工具提示
  • 方法,属性和事件以源代码顺序或自定义用户定义的顺序进行反编译
    • 源代码顺序意味着相关方法通常彼此相邻,就像程序员想要的一样
  • 背景图像可以在文本编辑器中显示
  • 导出到项目反编译所有选定的程序集并创建一个Visual Studio解决方案
    • 可以同时导出多个程序集
    • 创建Visual Studio解决方案(支持VS2005 - VS-latest)和项目文件
    • 支持WinForms和WPF类(创建代码隐藏的.cs / .vb文件和WinForms .resx / WPF .xaml文件)
    • 将.NET资源转换为.resx文件
  • 从GAC开放
  • 命令行反编译器
    • 支持Windows,Linux和Mac
    • 语法高亮输出到屏幕
  • 使用C#REPL编写脚本
    • 从脚本调用公共dnSpy方法
    • 脚本调试器和其他扩展
  • 十六进制编辑器
  • 方法令牌和地址显示在注释中,可以单击以转到原始元数据或IL字节
  • 元数据编辑器
  • Collapse Assembly Explorer节点命令快速折叠未使用的节点
  • 和更多...

图片时间!

在C#或Visual Basic中编辑任何方法,属性或事件

编辑任何类型(类),方法,属性,事件,字段

添加,删除,重命名任何类型(类),方法,属性,事件,字段

编辑,添加,删除.NET资源并将其保存到磁盘

IL编辑器允许在IL级编辑方法体:IL指令,本地人,异常处理程序

调试任何.NET程序集,不需要源代码

当地人的原始内容(例如解密的字节数组)可以保存到磁盘

较小屏幕的优化

多个选项卡和选项卡组

搜索程序集

装配分析仪

突出显示的引用,关键字,使用Tab,Shift + Tab,Ctrl + Shift +向上,Ctrl + Shift +向下选择下一个或上一个参考或Alt + Up / Down进行下一个定义

结构可视化器在花括号之间添加着色垂直导向线; 循环,try / catch和条件块以不同的颜色显示

当您使用这样的方法时,结构可视化程序非常有用:

转到:入口点,模块初始化程序,MD令牌,MD表行

将鼠标悬停在类型(类),方法,属性,事件,字段上时,语法突出显示带有XML文档注释的工具提示

背景图像可以在文本编辑器中显示

相同的图像与左边距和上边距设置为75%

导出到项目反编译所有选定的程序集并创建一个Visual Studio解决方案

命令行反编译器,支持Windows,Linux,Mac

使用C#REPL 编写脚本,可以使用调试器和其他扩展来控制C#

十六进制编辑器

元数据编辑器,单击令牌或按Ctrl + Shift + D

想要贡献?

检查问题的开放性问题,特别是对于抓取标签的问题,因为它们应该更容易开始。

如果您发送PR,请尝试使用与正在编辑的当前项目相同的编码风格。这是一个简短的列表:

  • 标准C#编码约定除了:
  • 标签,大小= 4
  • 打开花括号({)始终与ifwhile/ method-signature 在同一行
  • 使用var的大部分时间,除了基本类型,你可以使用原始类型(如int),而不是var
  • 只用'这个'。如果需要

翻译dnSpy

如果您想帮助将dnSpy翻译成您的母语,请点击此处

维基

有关构建说明和其他文档,请参阅Wiki

执照

dnSpy是根据GPLv3许可的。

.NET dnSpy 程序集编辑器,反编译器和调试器的更多相关文章

  1. [连载]《C#通讯(串口和网络)框架的设计与实现》- 11.调试器的设计

    目       录 第十一章     调试器设计... 2 11.1         调试接口... 2 11.2         界面方式调试... 3 11.3         命令行方式调试.. ...

  2. C#调试器导航

    本快速入门演示如何在 Visual Studio 调试会话中导航,以及如何在会话中查看和更改程序状态. 本 快速入门适用于不熟悉用 Visual Studio 进行调试的开发人员,以及要详细了解在 V ...

  3. zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意

    参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...

  4. OC编写使用调试器

    OC编写使用调试器 编写代码免不了,Bug.那么Debug就是程序员的必备技能了.本文和大家一起探讨,如何在应用开发编写代码过程中,使用日志项消息:以及使用动作.条件.迭代控制增强断点. 记录信息 在 ...

  5. iOS LLDB调试器

    随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环 ...

  6. firebug调试js时提示调试器未激活处理办法

    firebug是web开发中最常用的分析调试软件,不过我今天使用在调试百度在线编辑器UEditor时一直提示调试器未激活. 从使用经验来看不应该啊,我都下了断点了为什么会提示调试器未激活呢!多次载入网 ...

  7. 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件

    查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求.   内容 查找符号 (.pdb) 文件 查找源文件   查找符号 (.pdb) 文件 说明 在之前的 Vis ...

  8. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  9. 17. Debuggers (调试器 5个)

    反编译是安全研究的重要组成部分. 它将帮助您解剖Microsoft补丁,以发现他们无法告诉您的默认修复的错误,或更仔细地检查服务器二进制文件以确定为什么您的漏洞利用不起作用. 许多调试器都可用,但ID ...

随机推荐

  1. 【剑指offer】面试题 49. 丑数

    面试题 49. 丑数 题目描述 题目:把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺 ...

  2. (error) DENIED Redis is running in protected mode because protected mode is enabled

    在通过Java程序链接配置好的redis服务时出现 DENIED Redis is running in protected mode because protected mode is enable ...

  3. 19. Remove Nth Node From End of List【Medium】【删除单链表倒数第n个结点】

    Given a linked list, remove the n-th node from the end of list and return its head. Example: Given l ...

  4. HTML的介绍

    什么是HTML? HTML:Hyper Text Markup Language :超文本标记语言. 超文本:功能比普通文本更加强大 标记语言:使用一组标签对内容进行描述的语言,它不是编程语言 htm ...

  5. hibernate自连接--典型的oracle自带emp实现

    用S2SH三大框架整合,用了oracle自带的表emp,实现了自连接. pojo类: public class Emp implements java.io.Serializable { // Fie ...

  6. 删除Kali Linux多余的系统架构

    删除Kali Linux多余的系统架构   现在大家通常安装的都是Kali Linux 64位操作系统,其架构为amd64.如果要安装运行32位的程序(如wine32),则必须添加32位架构i386. ...

  7. [LOJ6191][CodeM]配对游戏(概率期望DP)

    n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 首先容易想到用概率算期望,p[i][j][k]表示已加入i个数,1有j个,总长为 ...

  8. bzoj 2038 小Z的袜子(hose)(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 11542  Solved: 5166[Sub ...

  9. [Lydsy1805月赛] quailty 算法

    稍微建一下模型就可以发现,题目要求的其实是一个最小异或基环森林.... 可以用类似最小生成树的拟阵性质来证明,贪心的从小的边权开始依次尝试加入的方法是对的. 所以我们把a[]排完序之后直接递归贪心就行 ...

  10. UVA 12338:Anti-Rhyme Pairs(后缀数组+ST表)

    [题目链接] click [题目大意] 给出一些字符串,询问查询任意两个字符串的最长公共前缀 [题解] 将字符串拼接,对拼接的字符串做后缀数组,对于查询的两个字符串, 只要在height数组上查询区间 ...