?一款開(kāi)源的 .NET 程序集反編譯、編輯和調(diào)試神器
前言
說(shuō)到.NET相關(guān)的反編譯工具大家腦海里第一個(gè)想到的工具是什么?ILSpy、dnSpy、還是dotPeek?咱們今天的主要內(nèi)容是講講dnSpyEx(dnSpyEx是dnSpy項(xiàng)目的非官方Fork維護(hù)版本)這個(gè)開(kāi)源的.NET程序集反編譯、編輯和調(diào)試工具該如何使用。
dnSpyEx
dnSpyEx是dnSpy(該代碼庫(kù)已于2020年12月21日被所有者歸檔為只讀狀態(tài))項(xiàng)目的非官方Fork維護(hù)版本,一款開(kāi)源、功能強(qiáng)大的.NET反編譯工具和調(diào)試器,可用于在沒(méi)有源代碼的情況下編輯和調(diào)試程序集。
主要功能
- 支持淺色、藍(lán)色和深色主題。
- 支持調(diào)試 .NET Framework、.NET Core 和 Unity 程序集。
- 支持編輯 .NET Framework、.NET 和 Unity 程序集。
- 支持多語(yǔ)言(中文、俄語(yǔ)、德語(yǔ)、法語(yǔ)、意大利語(yǔ)、英語(yǔ)等)。
工具源代碼
工具下載安裝運(yùn)行
https://github.com/dnSpyEx/dnSpy/releases
下載完成后,雙擊dnSpy即可運(yùn)行無(wú)需安裝:
創(chuàng)建測(cè)試項(xiàng)目并編譯成dll程序集
下面我們創(chuàng)建一個(gè)名為T(mén)estSample的.NET Core控制臺(tái)應(yīng)用,然后寫(xiě)上一段簡(jiǎn)單的對(duì)象序列化和反序列化代碼示例。
(1) 測(cè)試項(xiàng)目創(chuàng)建
(2) 項(xiàng)目示例代碼
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反序列化后的對(duì)象信息:");
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; }
}
}
(3) 找到dll程序集
..TestSample\bin\Debug\net8.0
使用工具調(diào)試程序集中的代碼
使用工具編輯程序集中的代碼
使用工具編輯程序集中的IL指令
項(xiàng)目源碼地址
更多項(xiàng)目實(shí)用功能和特性歡迎前往項(xiàng)目開(kāi)源地址查看,別忘了給項(xiàng)目一個(gè)Star支持。
- dnSpyEx:https://github.com/dnSpyEx/dnSpy
- dnSpy:https://github.com/dnSpy/dnSpy