前言
說到.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推薦或自薦(讓優秀的項目和框架不被埋沒🤞)。
DotNetGuide技術社區交流羣
- DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在爲開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和諮詢、項目框架推薦、求職和招聘資訊、以及解決問題的平臺。
- 在DotNetGuide技術社區中,開發者們可以分享自己的技術文章、項目經驗、學習心得、遇到的疑難技術問題以及解決方案,並且還有機會結識志同道合的開發者。
- 我們致力於構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能爲您提供更多的價值和成長機會。