.NET dnSpy 程序集编辑器,反编译器和调试器
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
- 打开花括号({)始终与
if
/while
/ method-signature 在同一行 - 使用
var
的大部分时间,除了基本类型,你可以使用原始类型(如int
),而不是var
- 只用'这个'。如果需要
翻译dnSpy
如果您想帮助将dnSpy翻译成您的母语,请点击此处。
维基
有关构建说明和其他文档,请参阅Wiki。
执照
dnSpy是根据GPLv3许可的。
.NET dnSpy 程序集编辑器,反编译器和调试器的更多相关文章
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 11.调试器的设计
目 录 第十一章 调试器设计... 2 11.1 调试接口... 2 11.2 界面方式调试... 3 11.3 命令行方式调试.. ...
- C#调试器导航
本快速入门演示如何在 Visual Studio 调试会话中导航,以及如何在会话中查看和更改程序状态. 本 快速入门适用于不熟悉用 Visual Studio 进行调试的开发人员,以及要详细了解在 V ...
- zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意
参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...
- OC编写使用调试器
OC编写使用调试器 编写代码免不了,Bug.那么Debug就是程序员的必备技能了.本文和大家一起探讨,如何在应用开发编写代码过程中,使用日志项消息:以及使用动作.条件.迭代控制增强断点. 记录信息 在 ...
- iOS LLDB调试器
随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环 ...
- firebug调试js时提示调试器未激活处理办法
firebug是web开发中最常用的分析调试软件,不过我今天使用在调试百度在线编辑器UEditor时一直提示调试器未激活. 从使用经验来看不应该啊,我都下了断点了为什么会提示调试器未激活呢!多次载入网 ...
- 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件:指定符号加载行为.使用符号和源服务器上:加载符号自动或在要求. 内容 查找符号 (.pdb) 文件 查找源文件 查找符号 (.pdb) 文件 说明 在之前的 Vis ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
- 17. Debuggers (调试器 5个)
反编译是安全研究的重要组成部分. 它将帮助您解剖Microsoft补丁,以发现他们无法告诉您的默认修复的错误,或更仔细地检查服务器二进制文件以确定为什么您的漏洞利用不起作用. 许多调试器都可用,但ID ...
随机推荐
- (编译)使用 AppCenter 持续输出导出到 Application Insights
原文地址:https://blog.xamarin.com/appcenter-continuous-export-application-insights/ 五星手机应用有一个特殊的特点:他们不会放 ...
- 微软企业库5.0 学习之路——第八步、使用Configuration Setting模块等多种方式分类管理企业库配置信息
在介绍完企业库几个常用模块后,我今天要对企业库的配置文件进行处理,缘由是我打开web.config想进行一些配置的时候发现web.config已经变的异常的臃肿(大量的企业库配置信息充斥其中),所以决 ...
- PHP实现选择排序
选择排序: 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小( ...
- win7家庭版如何获得管理员权限?
1.首先,打开你的命令提示符,输入cmd.有一点非常重要,如图所示,我们必须“以管理员的方式打开”.只有以管理员身份打开,那么接下来要敲打的命令才会成功. 2. 打开命令提示符后,在输入框输入net ...
- 在class中获取web资源
背景介绍 项目中用jasperreport做报表,模板文件为web资源,不在classpath之中.class又需要获取模板文件,结合数据源,生成pdf格式的报表. 之前的做法是定义一个public ...
- 【SPOJ 220】Relevant Phrases of Annihilation
http://www.spoj.com/problems/PHRASES/ 求出后缀数组然后二分. 因为有多组数据,所以倍增求后缀数组时要特判是否越界. 二分答案时的判断要注意优化! 时间复杂度\(O ...
- [Codeforces #192] Tutorial
Link: Codeforces #192 传送门 前两天由于食物中毒现在还要每天挂一天的水 只好晚上回来随便找套题做做找找感觉了o(╯□╰)o A: 看到直接大力模拟了 但有一个更简便的方法,复杂度 ...
- linux基础环境搭建(2)
打开虚拟机,用Xshell连接之前,首先我们要获取IP的地址 先输入获取 IP的命令 ip addr 获取ipifup (网卡名字) #网卡启动ifdown (网卡名字) #网卡关闭 没有获取到的 ...
- Bootstrap-table固定表头并解决表头与内容不对齐
写在前面: 之前在做表格的时候,一直忽略了表格的height高度,导致表格的的表头不能固定,这个样子当表格数据过多的时候,导致无法分辨表头是什么,所以决定固定表头. 固定表头需要使用height这一属 ...
- http请求 url 传递参数(特殊字符)解决方法
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码 十六进制值 1. + URL 中+号表示空格 %2B ...