dnSpyEx
dnSpyEx 是 dnSpy 项目的非官方延续版本,它是一个调试器和 .NET 程序集编辑器。即使没有源代码,你也可以使用它来编辑和调试程序集。主要功能:
- 调试 .NET 和 Unity 程序集
- 编辑 .NET 和 Unity 程序集
- 浅色和深色主题
更多功能见下文


二进制文件
最新稳定版:https://github.com/dnSpyEx/dnSpy/releases
如果你想尝鲜,可以使用最新的“beta”构建版本,来自:

构建
git clone --recursive https://github.com/dnSpyEx/dnSpy.git
cd dnSpy
# or dotnet build
./build.ps1 -NoMsbuild
要调试 Unity 游戏,你还需要这个仓库:https://github.com/dnSpyEx/dnSpy-Unity-mono
调试器
- 调试 .NET Framework、.NET 和 Unity 游戏程序集,无需源代码
- 设置断点并单步执行任何程序集
- 局部变量、监视、自动窗口
- 变量窗口支持将变量(例如解密后的字节数组)保存到磁盘或在十六进制编辑器(内存窗口)中查看
- 对象ID
- 可以同时调试多个进程
- 在模块加载时中断
- 跟踪点和条件断点
- 导出/导入断点和跟踪点
- 可选的仅我的代码(JMC)单步执行过滤器,用于系统库
- 调用堆栈、线程、模块、进程窗口
- 在抛出的异常上中断(第一次机会)
- 变量窗口支持计算 C# / Visual Basic 表达式
- 可以调试动态模块(但由于 CLR 限制,不能调试动态方法)
- 输出窗口记录各种调试事件,默认显示时间戳 :)
- 可以调试在运行时自行解密的程序集,dnSpy 将使用内存中的映像。你也可以强制 dnSpy 始终使用内存映像而不是磁盘文件。
- 绕过常见的调试器检测技术
- 公共 API,你可以编写扩展或使用 C# 交互窗口来控制调试器
程序集编辑器
- 所有元数据都可以编辑
- 使用 IntelliSense 在 C# 或 Visual Basic 中编辑方法和类,无需源代码
- 在 C# 或 Visual Basic 中添加新的方法、类或成员
- IL 编辑器用于低级 IL 方法体编辑
- 可以编辑低级元数据表。内部使用十六进制编辑器。
十六进制编辑器
- 点击反编译代码中的地址,跳转到十六进制编辑器中对应的 IL 代码
- 上述操作的逆操作:在十六进制编辑器的 IL 体中按 F12 跳转到反编译代码或其他高级位表示。这对找出补丁修改了哪个语句很有帮助。
- 高亮显示 .NET 元数据结构和 PE 结构
- 工具提示显示所选 .NET 元数据/PE 字段的更多信息
- 转到位置、文件、RVA
- 转到 .NET 元数据令牌、方法体、#Blob/#Strings/#US 堆偏移量或 #GUID 堆索引
- 跟踪引用 (Ctrl+F12)
其他
- BAML 反编译器和反汇编器
- 蓝色、浅色和深色主题(以及深色高对比度主题)
- 书签
- C# 交互窗口可用于编写 dnSpy 脚本
- 搜索程序集以查找类、方法、字符串等
- 分析类和方法的使用情况,查找调用者等
- 多标签页和标签组
- 引用会高亮显示,使用 Tab/Shift+Tab 移动到下一个引用
- 转到入口点和模块初始化器命令
- 转到元数据令牌或元数据行命令
- 代码工具提示(C# 和 Visual Basic)
- 导出为项目
dnSpy 使用的其他开源库列表
翻译 dnSpy
如果你想帮助将 dnSpy 翻译成你的母语,请点击这里。
Wiki
查看 Wiki 获取构建说明和其他文档。
许可证
dnSpy 采用 GPLv3 许可证。