本教程带你怎么使用调试、逆向.net的神器dnSpy,将给出一个简单的示例程序,并完整地介绍如何逆向,让你快速入门。
需要咱们先下载dnSpy.net软件,见文末。我下载的版本目录结构如下:
示例程序
编写一个winform的登录程序, LoginTest.exe,输入正确的账号密码之后,跳转到主界面,否则提示账号密码错误。
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 会自动反编译,可以直接打开反编译后的源码:
在源码上右键编辑方法(c#),改成如下代码(右键可以看到断点等其他调试功能,可以像VS等IDE一样调试)
重新编译后,[文件]->[全部保存] 保存成新的可执行文件(可以看到重新编译后注释的代码全部被优化掉了)
运行逆向修改后的程序 ModifyLoginTest.exe
是不是很简单?不过,可不要拿逆向去干坏事哦^_^
如需本文源码及工具可以直接联系我。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。