[C#] 使用 dnSpy 反编译

介绍

dnSpy是一款针对.NET程序的逆向工程工具 , 可以使用它反编译.NET代码。

git 链接:https://github.com/dnspy/dnspy


效果

为了测试简单写了一个窗体程序,代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test_winform
{
    public partial class Form1 : Form
    {
        int a = 1;
        string b = "asd";
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("123");

        }
    }
}

打开 dnSpy ,将程序拖入,反编译完成后如下:
在这里插入图片描述

关键代码的反编译效果:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace test_winform
{
	// Token: 0x02000002 RID: 2
	public class Form1 : Form
	{
		// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
		public Form1()
		{
			this.InitializeComponent();
		}

		// Token: 0x06000002 RID: 2 RVA: 0x0000207A File Offset: 0x0000027A
		private void button1_Click(object sender, EventArgs e)
		{
			MessageBox.Show("123");
		}

		// Token: 0x06000003 RID: 3 RVA: 0x00002088 File Offset: 0x00000288
		protected override void Dispose(bool disposing)
		{
			bool flag = disposing && this.components != null;
			if (flag)
			{
				this.components.Dispose();
			}
			base.Dispose(disposing);
		}

		// Token: 0x06000004 RID: 4 RVA: 0x000020C0 File Offset: 0x000002C0
		private void InitializeComponent()
		{
			this.button1 = new Button();
			base.SuspendLayout();
			this.button1.Location = new Point(394, 156);
			this.button1.Name = "button1";
			this.button1.Size = new Size(75, 23);
			this.button1.TabIndex = 0;
			this.button1.Text = "button1";
			this.button1.UseVisualStyleBackColor = true;
			this.button1.Click += this.button1_Click;
			base.AutoScaleDimensions = new SizeF(6f, 12f);
			base.AutoScaleMode = AutoScaleMode.Font;
			base.ClientSize = new Size(800, 450);
			base.Controls.Add(this.button1);
			base.Name = "Form1";
			this.Text = "Form1";
			base.ResumeLayout(false);
		}

		// Token: 0x04000001 RID: 1
		private int a = 1;

		// Token: 0x04000002 RID: 2
		private string b = "asd";

		// Token: 0x04000003 RID: 3
		private IContainer components = null;

		// Token: 0x04000004 RID: 4
		private Button button1;
	}
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘录自dnspy官网 如果您以软件开发人员身份工作,您可能会明白,有时您可能需要反编译某些程序集以更有效地了解其功能。 但是,如果没有适当的工具,这样做通常是不可能的。幸运的是,有各种各样的软件解决方案,如dnSpy,可以帮助您实现快速,令人满意的结果。 无需安装 由于它是一个便携式工具,因此它不要求您将其安装在目标计算机上,只需将其归档文件解压缩并启动可执行文件即可授予您完全访问其功能的权限。 您也可以从可移动存储介质(如USB闪存驱动器或外部硬盘驱动器)运行它。此外,它不会修改系统中的注册表项,也不会在未经您明确许可的情况下在您的PC上生成其他文件或文件夹。 全面的界面 dnSpy提供了一个时尚,全面的用户界面,它包含了广泛的有用功能,它们在主窗口的标准菜单中整齐排列。 此外,它还具有一个标准配置窗口,您可以在其中调整各种组件的设置,例如反编译器,调试器或十六进制编辑器,但也可以修改显示或其他参数。 .NET拆装器 如果你需要一个高效的工具来帮助你反编译.NET程序集,你可以转向dnSpy,它提供了各种有用的工具。它带有一个反编译器,一个调试器,一个十六进制编辑器以及一个汇编编辑器,让您可以高效地处理程序集。 主窗口附带一个Assembly Explorer窗格,您可以在其中访问所需程序集的树视图。您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供了全局程序集缓存中可用条目的列表。 .NET程序集的可靠逆向工程工具 所有事情都考虑到了,dnSpy是一个方便的应用程序,它使您能够以有效的方式反向设计.NET程序集,为您提供各种有用的工具,包括反编译器,程序集编辑器和调试器。它不需要安装,具有全面,流畅的用户界面,并为您提供了一个标准配置窗口,您可以在其中调整各种组件的设置。
dnSpy中文版是一款net程序反编译工具,可以对net程序进行反编译,还有替代库文档的功能,如果遇到了代码丢失或者损坏的情况,可以直接恢复,有需要的赶快下载吧! 1、无需设置 由于它是一个便携式工具,它不需要您将其安装在目标计算机上,因为只需拆包其存档并启动可执行文件即可完全访问其功能。 您还可以从可移动存储介质(如USB闪存驱动器或外部HDD)运行它。此外,它不会修改系统中的注册表项,也不会在您的PC上生成其他文件或文件夹,但未经您的明确许可。 2、综合界面 dnSpy配备了一个时尚,全面的用户界面,包含广泛的有用功能,它们整齐地组织在主窗口的标准菜单中。 更重要的是,它具有标准配置窗口,您可以在其中调整各种组件的设置,如其反编译器,调试器或十六进制编辑器,但也可以修改显示或其他参数。 3、.NET反汇编程序 如果您需要一个高效的工具,可以通过为您提供各种有用的工具来帮助您反编译.NET程序集,您可以转到dnSpy。它配有一个反编译器,一个调试器,一个十六进制编辑器和一个程序集编辑器,让你以有效的方式处理程序集。 主窗口附带了一个Assembly Explorer窗格,您可以在其中访问所需程序集的树视图。您可以通过从计算机指定适当的文件或使用“从GAC打开”选项打开程序集,该选项为您提供全局程序集缓存中可用的条目列表。 4、.NET程序集的可靠反向工程工具 所有考虑的事情,dnSpy是一个方便的应用程序,使您能够以有效的方式逆向工程.NET程序集,为您提供广泛的有用工具,包括反编译器,程序集编辑器和调试器。它不需要安装,具有全面,平滑的用户界面,并为您提供了一个标准配置窗口,您可以在其中调整各种组件的设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值