本文概述
- 1.下载ILSpy二进制文件
- 2.从WinForms应用程序反编译可执行文件
如果你出于任何原因愿意反编译.NET程序集, 我们建议你使用ILSpy项目。 ILSpy是反编译器, 与Jadx(APK反编译器)的工作方式相同, 但是它不反编译Java, 而是反编译C#。 ILSpy是开源.NET程序集浏览器和反编译器。该反编译器最知名的功能是:
- 装配浏览
- IL拆卸
- 支持C#5.0″ 异步”
- 反编译为C#
- 支持lambda和” 收益率回报”
- 显示XML文档
- 反编译成VB
- 节省资源
- 将反编译的程序集另存为.csproj
- 搜索类型/方法/属性(子字符串)
- 基于超链接的类型/方法/属性导航
- 基本/派生类型导航
- 导航历史
- BAML到XAML反编译器
- 将程序集另存为C#项目
- 查找字段/方法的用法
- 可通过插件(MEF)扩展
- 装配清单
1.下载ILSpy二进制文件 没有官方的安装程序, ILSpy是便携式的。 ILSpy的二进制文件可以通过Github的” 发行版” 区域中的项目发行版获得, 也可以通过单击官方网站上的” 下载二进制文件” 来获得。压缩包包含截止日期的11个文件(1个可执行文件, 9个动态链接库和一个配置文件):
文章图片
下载后, 你可以通过可执行文件使用ILSpy, 它不是命令行工具, 因为它包含GUI。
2.从WinForms应用程序反编译可执行文件 不要混为一谈, 我们将使用C#中的Visual Studio来反编译我们自己制作的应用程序之一。在我们的示例项目中, 我们将以最不安全的方式为唯一用户公开一个简单的登录表单:
文章图片
凭证模型存储在源代码中的变量中, 这显然是安全缺陷。通过if语句, 我们将检查用户单击登录按钮时用户是否知道凭据。我们的应用程序的源代码如下:
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 Sandbox{public partial class Form1 : Form{public string globalUsername = "Batman";
public string globalPassword = "batmobil";
public Form1(){InitializeComponent();
}private void Form1_Load(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e){string username = textBox1.Text;
string password = textBox2.Text;
if(username == globalUsername &
&
password == globalPassword){MessageBox.Show("Login granted, awesome !");
}else{MessageBox.Show("Login denied, check your credentials !");
}}}}
现在, 我们将编译(构建解决方案)我们的项目, 以便在项目的bin / Debug文件夹中生成其二进制文件:
文章图片
构建解决方案项目将更新调试二进制文件, 你可以在bin / Debug文件夹中找到应用程序的可执行文件, 例如C:\ Users \ me \ Documents \ visual studio 2017 \ Projects \ < 项目名称> \ bin \ Debug。打开ILSpy, 在菜单栏中单击” 文件” , 然后选择” 打开” 。文件浏览器将启动, 并允许你选择一个程序集, 在此示例中, 该程序集位于我们项目的Debug文件夹中:
文章图片
选择可执行文件后, ILSpy将开始反编译过程, 并将所选文件作为项目添加到树形视图中。在那里, 你将能够探索文件和源代码的结构和资源。在我们的示例中, 我们有一个单一的表单, 即Form1, 可以通过ILSpy轻松查看:
文章图片
你看对吗? ILSpy能够获取我们初始应用程序的源代码, 并且我们可以看到WinForms项目的” 很棒的登录” 算法。反编译显然也适用于非调试版本。
【如何使用ILSpy反编译.NET Framework程序集(读取其源代码)】反编译愉快!
推荐阅读
- Swiftmailer(轻松轻松地从php发送邮件)
- 如何在WinForms中使用带有C#的SSH.NET(同步和异步)访问SFTP服务器
- 如何在PHP中使用Imagick区分(比较)2个图像
- 如何在WinForms中的CefSharp控件上向本机上下文菜单添加新项
- 如何在线执行TWIG代码
- COMP5911先进工程
- Android,PopupMenu.show()时添加窗口失败
- 当我通过gmail或shareIt共享apk并且没有启动时,Android应用程序崩溃了
- FacebookLoginSKK 4 Apple Mach-O链接器错误