本教程带你怎么使用调试、逆向.net的神器dnSpy,将给出一个简单的示例程序,并完整地介绍如何逆向,让你快速入门。

需要咱们先下载dnSpy.net软件,见文末。我下载的版本目录结构如下:

玩转dnSpy.net 逆向神器入门教程

dnSpy软件目录结构

示例程序

编写一个winform的登录程序, LoginTest.exe,输入正确的账号密码之后,跳转到主界面,否则提示账号密码错误。

玩转dnSpy.net 逆向神器入门教程

登录主界面

玩转dnSpy.net 逆向神器入门教程

登录错误提示

玩转dnSpy.net 逆向神器入门教程

登录成功后进入主界面

loginFrm源码:

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

namespace LoginTest
{
    public partial class loginFrm : Form
    {
        public loginFrm()
        {
            InitializeComponent();
        }
        public  static  string UserName = "";
        public static string PassWord = "";
        private void login_btn_Click(object sender, EventArgs e)
        {
            if (txtUserName.Text.Trim() == "")
            {
                MessageBox.Show("请输入账号后,再提交!");
                return;
            }
            if (txtPassWord.Text.Trim() == "")
            {
                MessageBox.Show("请输入密码后,再提交!");
                return;
            }
            UserName = txtUserName.Text.Trim();
            PassWord = txtPassWord.Text.Trim();
            if (UserName == "sword" && PassWord == "123456")
            {
                MainForm mainFrm = new MainForm();//创建一个新页面              
                mainFrm.Show();//显示新页面
                this.Hide();//隐藏当前页面
            }
            else {
                MessageBox.Show("账号密码错误!");
                return;
       
            }
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            txtUserName.Text = "";
            txtPassWord.Text = "";

        }
    }
}

mainForm源码:

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

namespace LoginTest
{
    public partial class MainForm : Form
    {
        private string UserName = "";
        private string password = "";
        public MainForm()
        {
            InitializeComponent();          
            UserName = loginFrm.UserName;
            password = loginFrm.PassWord;
            lbl_Username.Text = "用户名:"   UserName;
            lbl_Password.Text = "密  码:"   password;
        }
    }
}

当我们忘记了账号密码,或者这个程序我们本来就不知道密码,那该怎么办呢?

不怕,我们直接来改造它!

启动 dnSpy,[文件]->[打开],找到 LoginTest.exe 打开,dnSpy 会自动反编译,可以直接打开反编译后的源码:

玩转dnSpy.net 逆向神器入门教程

反编译LoginTest.exe

在源码上右键编辑方法(c#),改成如下代码(右键可以看到断点等其他调试功能,可以像VS等IDE一样调试)

玩转dnSpy.net 逆向神器入门教程

修改源代码

重新编译后,[文件]->[全部保存] 保存成新的可执行文件(可以看到重新编译后注释的代码全部被优化掉了)

玩转dnSpy.net 逆向神器入门教程

保存反编译后为ModifyLoginTest.exe

运行逆向修改后的程序 ModifyLoginTest.exe

玩转dnSpy.net 逆向神器入门教程

输入修改后的账号密码

玩转dnSpy.net 逆向神器入门教程

主界面信息变为修改后的账号密码

是不是很简单?不过,可不要拿逆向去干坏事哦^_^

如需本文源码及工具可以直接联系我。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。