ILSpy可以反编译c语言,如何使用ILSpy反编译.NET Framework程序集(读取其源代码)
本文概述
如果你认为WinForms .NET应用程序从一开始就是安全的并且无法读取源代码, 那么让我告诉你你错了。任何人都可以使用将可执行文件作为输入的反编译器, 并尝试创建高级源文件(应用程序的源代码)。建议在发布应用程序之前, 使用一些反编译工具对生成的可执行文件进行反编译, 以检查代码上的安全漏洞。除了检查可能的安全漏洞外, 如果你继承了没有文档或注释的应用程序, 那么查看带有反编译器的编译代码的行为可能非常有用。
如果你出于任何原因愿意反编译.NET程序集, 我们建议你使用ILSpy项目。 ILSpy是反编译器, 与Jadx(APK反编译器)的工作方式相同, 但是它不反编译Java, 而是反编译C#。 ILSpy是开源.NET程序集浏览器和反编译器。该反编译器最知名的功能是:
装配浏览
IL拆卸
支持C#5.0″异步”
反编译为C#
支持lambda和”收益率回报”
显示XML文档
反编译成VB
节省资源
将反编译的程序集另存为.csproj
搜索类型/方法/属性(子字符串)
基于超链接的类型/方法/属性导航
基本/派生类型导航
导航历史
BAML到XAML反编译器
将程序集另存为C#项目
查找字段/方法的用法
可通过插件(MEF)扩展
装配清单
在本文中, 你将了解在计算机上下载ILSpy以及反编译Visual Studio生成的可执行文件以最终查看其源代码的难易程度。
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可以反编译c语言,如何使用ILSpy反编译.NET Framework程序集(读取其源代码)相关推荐
- ios上编译c语言的app,iOS App编译流程
三大编译器详解GCC / Clang / LLVM 传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd).在编译过程中,前端主要负责词法和语法分 ...
- 红帽子怎么vi编译c语言,在RedHat5.3上编译和配置Vim
今天忽然发现我的虚拟机红帽子5.3上居然没有Vim,晕~~ 唉,要用的时候一点都不方便,没办法,重新下个源代码来编译一个吧~~ 下载的地址很容易找到啦,最新的是7.3: ftp://ftp.vim.o ...
- 编译性语言和解释性语言的区别
编译性语言和解释性语言的区别 1.编译性语言 (1)只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以:因此其执行的效率比较高: (2)编译性语言代表:C. ...
- ILSpy可以反编译c语言,ILSpy反编译工具的使用
本文导读:ILSpy反编译工具的使用.不过,ILspy需要在电脑上安装.NET Framework 4.0.ILspy可以将一个dll文件转换为C#或VB语言.ILspy对于单个文件可以保存为.cs文 ...
- android 反编译替换资源文件,[求助]想替换微信5.0的一个语言包,但是反编译资源文件出现错误。...
想为微信5.0中替换进去一个少数民族语言包,但是反编译时出现大量以下类似的错误,而且无法正确回编译,试过了基本所有apktool的版本都无法解决,无奈只能求助各位前辈,请告知解决此问题的方法或思路.谢 ...
- 什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
文章目录 1 什么是pyc文件 1.1 什么是pyc文件 1.2 pyc文件是怎么生成的,有什么好处 2 把python的py文件编译成pyc文件 2.1 使用python内置库py_compile把 ...
- Python语言是解释性语言还是编译性语言?
1.Python语言是解释性语言还是编译性语言? Python语言是先编译再解释的语言.Python 在解释源程序时分为两步: 1:将源码转为字节码 2:将字节码转换为机器码 pyc 文件是由 Pyt ...
- vs配置编译c语言,为 VSCode 配置 C 语言编译环境
1. 前提条件 安装 VSCode 以及 MinGW 安装好 VSCode 中的 C/C++ 扩展 [图片上传失败...(image-e93c7c-1606314000230)] PS: 我建议使用 ...
- ubuntu java反编译,[原创]Ubuntu下简单配置反编译工具以及其开发环境
0x0:前言 个人电脑重新换了下系统,Ubuntu14.04,刚好需要配置下android的反编译环境,这里简单记录一下,以供有需要的朋友参考. 其实最简单的,只需要apktool就可以了,不过有编码 ...
- 解释性的语言vs编译性语言
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种,一个是编译,一个是解释.两种方式只是翻译的时间不同.编译型语 ...
最新文章
- Java 事件适配器 Adapter
- python框架flask系列(2),Python的Web框架之Flask(2)
- Java工具类--雪花算法生成全局唯一ID
- qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
- centos7 DNS服务器搭建
- ipv6正则表达式 java,用正则表达式解析IPv4跟IPv6地址字符串
- java中找不到javax包_logstash 找不到 java 环境
- 句柄泄漏与应用程序体验查找服务(AELookupSvc)
- ASP.NET中的TextBox下划线
- springboot前台页面写Java代码,接收后台数据,SpringBoot整合Thymeleaf的使用,实现非ajax请求后台的数据实现和遍历效果,以及数据的页面展示
- 开源纯C#工控网关+组态软件
- ERP的模块流程/组织架构和其他基础知识
- 高颜值:Redis官方可视化工具,功能强大!
- python-matplotlib绘图 -应用subplots_adjust()方法解决图表与画布的间距问题
- html 网页公式编辑软件,LaTeX 公式编辑器网页版
- 元搜索推荐:比比猫!(马丁编辑)
- 2022年全球市场柠檬酸酯总体规模、主要生产商、主要地区、产品和应用细分研究报告
- autojs教程:贝壳赚app脚本代码
- 领域泛化(Domain Generalization)
- R329开发板根目录 ls 命令文件和文件名乱码其他目录不乱码问题解决