​一款开源的.NET程序集反编译、编辑和调试神器

简介: 本文介绍了.NET反编译和调试工具dnSpyEx的使用方法。dnSpyEx是dnSpy的非官方Fork版本,支持.NET Framework、.NET Core和Unity程序集的调试和编辑,具有多种语言界面。主要功能包括:浅色、蓝色和深色主题,调试支持,代码编辑以及多语言支持。用户可以从GitHub下载并直接运行dnSpyEx,无需安装。通过创建测试项目,编译成dll文件,然后使用dnSpyEx进行调试和编辑程序集中的代码和IL指令。此外,文章还提供了项目源码地址和相关优秀项目的链接。

前言

说到.NET相关的反编译工具大家脑海里第一个想到的工具是什么?ILSpy、dnSpy、还是dotPeek?咱们今天的主要内容是讲讲dnSpyEx(dnSpyEx是dnSpy项目的非官方Fork维护版本)这个开源的.NET程序集反编译、编辑和调试工具该如何使用。

dnSpyEx

dnSpyEx是dnSpy(该代码库已于2020年12月21日被所有者归档为只读状态)项目的非官方Fork维护版本,一款开源、功能强大的.NET反编译工具和调试器,可用于在没有源代码的情况下编辑和调试程序集。

主要功能

  • 支持浅色、蓝色和深色主题。
  • 支持调试 .NET Framework、.NET Core 和 Unity 程序集。
  • 支持编辑 .NET Framework、.NET 和 Unity 程序集。
  • 支持多语言(中文、俄语、德语、法语、意大利语、英语等)。

工具源代码

工具下载安装运行

下载完成后,双击dnSpy即可运行无需安装:

创建测试项目并编译成dll程序集

下面我们创建一个名为TestSample的.NET Core控制台应用,然后写上一段简单的对象序列化和反序列化代码示例。

测试项目创建

项目示例代码

using Newtonsoft.Json;
namespace TestSample
{
    public class Program
    {
        static void Main(string[] args)
        {
            var personList = new List<Person>();
            personList.Add(new Person { Name = "张三", Age = 30 });
            string json = JsonConvert.SerializeObject(personList);
            Console.WriteLine("序列化后的 JSON 字符串:");
            Console.WriteLine(json);
            var deserializedPersonList = JsonConvert.DeserializeObject<List<Person>>(json);
            Console.WriteLine("\n反序列化后的对象信息:");
            foreach (var item in deserializedPersonList)
            {
                Console.WriteLine($"Name: {item.Name}, Age: {item.Age}");
            }
        }
    }
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

找到dll程序集

..TestSample\bin\Debug\net8.0

使用工具调试程序集中的代码

使用工具编辑程序集中的代码

使用工具编辑程序集中的IL指令

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。


相关文章
|
6月前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
.NET源码混淆工具对比及下载
原文 http://www.cnblogs.com/PHPIDE/archive/2013/04/17/3026356.html .NET开发人员都知道,.NET的优点是比较多的,如:标准集成,简化应用,对移动设备的支持等,它是一个巨大的跨时代进步。
1177 0
|
.NET C# 开发框架
【技术贴】c# asp.net 无法直接启动带有“类库输出类型”的项目 若要调试此项目,请在此解决方
c# asp.net 无法直接启动带有“类库输出类型”的项目 若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项     解决办法: 右键解决方案-&gt;属性-&gt;通用属性-&gt;启动项目-&gt;单启动项目-&gt;选择Web项目
2370 0
|
安全 搜索推荐 C#
.NET反编译神器ILSpy怎么用?
.NET反编译神器ILSpy怎么用?
371 0
|
6月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
158 4
一起谈.NET技术,Visual Studio对程序集签名时一个很不好用的地方
  由于我们的项目底层使用到一个通过LogicalCallContext实现的上下文数据管理框架,导致所有的Unit Test不能正常运行。具体的现象在《只在UnitTest和WebHost中的出现的关于LogicalCallContext的严重问题》有过详细的介绍。
888 0
|
Web App开发
一起谈.NET技术,反编译Silverlight项目
  在互联网上,每天都会有很多Silverlight项目发布,有的是开源,有的只是为了展示。在Silverlight学习的初期,多数都需要模仿学习,所以,发现一个Silverlight项目,能够查看其中的源代码是最好不过了。
881 0
|
开发工具 git
我的Go+语言初体验——【三、spx案例测试_许式伟先生推荐补充(附-视频)】
我的Go+语言初体验——【三、spx案例测试_许式伟先生推荐补充(附-视频)】
189 0
我的Go+语言初体验——【三、spx案例测试_许式伟先生推荐补充(附-视频)】
|
5月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
245 0