首页 > 编程语言 >​一款开源的.NET程序集反编译、编辑和调试神器----dnSpyEx

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

时间:2024-05-22 09:08:00浏览次数:25  
标签:反编译 项目 ---- dnSpy dnSpyEx NET 工具

思维导航

前言

说到.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指令

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看

标签:反编译,项目,----,dnSpy,dnSpyEx,NET,工具
From: https://www.cnblogs.com/mq0036/p/18205413

相关文章

  • openpyxl utils 模块
    utils模块说明openpyxl.utils模块提供了一些有用的工具来处理Excel表格中的行号和列号的转换。column_index_from_string()column_index_from_string():用于将Excel列字母转换为列索引。column_index_from_string(col_str):col_str(str):列字母字符串,例如'A','......
  • 全球厂商之最,华为17篇论文入选国际数据库顶会ICDE
    本文分享自华为云社区《全球厂商之最,华为GaussDB&GeminiDB,17篇论文入选国际数据库顶会ICDE》 ,作者:GaussDB数据库。5月13-17日,国际数据库顶级学术会议ICDE2024于荷兰乌得勒支举行。华为GaussDB和GeminiDB17篇论文入选,成为全球论文入选数量最多的数据库厂商。华为爱丁堡研究......
  • layui laydate日期时间范围,时间默认设定为23:59:59
    在Layui中,如果你想设置日期时间选择器(datetime)的默认结束时间为当天的23:59:59,你可以使用如下代码(红色部分):laydate.render({elem:'#test10',type:'datetime',range:true,max:'{:date("Y-......
  • 自定义可移动点二维坐标轴控件
    自定义可移动点二维坐标轴控件目录路由参数坐标轴控件定义Demo路由参数X_YResultCollection为当前X轴对应Y轴值存储字典publicclassResultCollectionChangedEventArgs(RoutedEventroutedEvent,objectsource,IDictionary<double,double>resultCollection):Route......
  • python0005
    所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。defLRU(pages,maxNum,n):temp=[]times=0f......
  • python0008
    用户输入整数n和m(1<n<m<1000),应用筛法求[n,m]范围内的所有素数。defsieve(n,m):"""输入两个正整数n和m,返回[n,m]范围内的所有素数的列表"""#初始化一个长度为m-n+1的列表,用于标记数值是否为素数is_prime=[True]*(m-n+1)#如果n为1,则将1......
  • python0010
    编写程序,输出一个给定正整数x(x>1)的质因子展开式。num=int(input())newnum=numtext=""counter=2whilecounter*counter<=newnum:ifnewnum%counter==0:#判断是否能够整除2text=text+str(counter)#将质因子组合起来newnum=......
  • python0009
    对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行、列坐标,坐标从1开始)。提示:鞍点的特点:列上最小,行上最大。matrix=[]matrix2=[]matrix3=[]foriinrange(5):a=input()a1=a.split("")#a1中的元素都是字符串,需要转换fori......
  • python实现客户价值分析
    本章使用的客户价值分析主要使用的是聚类分析方法,那么在对客户进行聚类前,首先使用RFM模型分析客户价值,下面进行RFM模型讲解:1.RFM模型RFM模型是衡量客户价值和潜在价值,它是衡量客户价值和潜在价值的主要工具手段。大部分人员都会接触到该模型,RFM模型是国际上最成熟、最为容易的......
  • python0012
    针对Python中的列表、元组、字典、集合、字符串,请以条目形式从各方面对比它们之间的异同。字符串是一系列字符的有序集合,用单引号或双引号括起来。字符串是不可变的,即不能修改其中的字符。元组是一系列不可变的、有序的元素的集合,用小括号括起来。元组是不可变的,即不能修改其中......