使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试

d14c52f6e73af743368b8d3db3f72180.png

前言

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

a47558923ca456e8af4f58abf25b5058.gif

dnSpyEx

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

主要功能

  • 支持浅色、蓝色和深色主题。

  • 支持调试 .NET Framework、.NET Core 和 Unity 程序集。

  • 支持编辑 .NET Framework、.NET 和 Unity 程序集。

  • 支持多语言(中文、俄语、德语、法语、意大利语、英语等)。

工具源代码

e9cfe5d81247462bc0fb932a07359d58.png

工具下载安装运行

  • https://github.com/dnSpyEx/dnSpy/releases

27aa31890da36916f395324c5e1b002d.png b45326e72de5cd92cad8004dc161bdeb.png

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

88b129c500d0d54389027f260b58ea09.png 5f9c7d69d6d9fec963f9f2edd8a4e3e5.png 6f7eaefa5be536d63b92ea34432e22fd.png dcc4ac522ba9a4538989866361b384f2.png

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

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

测试项目创建

2e48a53d4c209b7bcd92dd20ffef930b.png f0aad755ac29422a0f1b0f0a583df647.png

项目示例代码

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

0124d8f0606239d7af16cdb7cc4173dd.png

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

12970b5e66a988ca8dd8bdcd78c1b3b6.png d3e9cf159647ab22bc9d61ad3fa38a50.png 2597733ed6e046b53231c32510ca13ea.png 9403af7db70851c816e69d1d755803ce.gif

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

5e57b0674b14627d0214ca7f83b56756.png b90d6c945f96406286ce6bb62e3191f7.gif

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

a00a42f9d49cf7c590d616d3a743f1c7.png e650c0d9c5ca6ba797f7ce273c0f1d83.png

项目源码地址

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

  • dnSpyEx:https://github.com/dnSpyEx/dnSpy

  • dnSpy:https://github.com/dnSpy/dnSpy

优秀项目和框架精选

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

  • https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

de29a78884c8aaa209d89e285107403c.gif

58a6e48a73f8a3918756c46e636d522a.gif

学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江海!

100edeb6ac64c7e536f7aee264c700a2.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值