前言
说到.NET相关的反编译工具大家脑海里第一个想到的工具是什么?ILSpy、dnSpy、还是dotPeek?咱们今天的主要内容是讲讲dnSpyEx(dnSpyEx是dnSpy项目的非官方Fork维护版本
)这个开源的.NET程序集反编译、编辑和调试工具该如何使用。
- 4款免费且实用的.NET反编译工具
- .NET反编译神器ILSpy怎么用?
dnSpyEx
dnSpyEx是dnSpy(该代码库已于2020年12月21日被所有者归档为只读状态)项目的非官方Fork维护版本,一款开源、功能强大的.NET反编译工具和调试器,可用于在没有源代码的情况下编辑和调试程序集。
主要功能
- 支持浅色、蓝色和深色主题。
- 支持调试 .NET Framework、.NET Core 和 Unity 程序集。
- 支持编辑 .NET Framework、.NET 和 Unity 程序集。
- 支持多语言(中文、俄语、德语、法语、意大利语、英语等)。
工具源代码
工具下载安装运行
- https://github.com/dnSpyEx/dnSpy/releases
下载完成后,双击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支持????。
- 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
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
欢迎加入DotNetGuide技术社区微信交流群????????????