许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。

什么是可移植的可执行文件?

当源代码被执行时,它会生成一个可移植的可执行文件。可移植的可执行文件(PE)不是DLL就是EXE。PE文件包含MSIL (Microsoft中间语言)和元数据。MSIL最终由CLR转换为处理器能够理解的本机代码。元数据包含装配信息,如程序集名称、版本、文化和公钥。

如何从DLL或EXE获取源代码?

是的,我们可以从DLL或EXE获取源代码。为了演示这一点,让我们先创建一个简单的应用程序。

打开Visual Studio,创建一个新的项目并选择基于控制台的应用程序。

添加一些简单的代码:

using System;
namespace MyConsoleApp
{  internal class Program{    private static void Main(string[] args){Console.WriteLine(PublicMethod());Console.WriteLine(PrivateMethod());} public static string PublicMethod(){      // Your source code herereturn "Public Method";} private static string PrivateMethod(){      // Your source code herereturn "Private Method";}}
}

现在编译这个工程,会在bin/debug目录下生成一个exe文件

现在我们试着从EXE文件获取源代码。

首先,打开Visual Studio命令提示符窗口:

键入ildasm 然后点击回车键。 IL DASM is MSIL 是个反编译程序,可以用来查看中间语言。

会打开IL DASM 窗口,现在我们打开刚刚编译生成的Exe文件:

如上图所示,IL DASM会犯编译EXE文件,很多有用的信息可以被查看,尽管它并没有完全提供原始的源代码。我们可以使用市场上免费的反编译器,比如Telerik JustDecompile和Jet brain dotPeek,通过这些工具我们可以将中间语言转换成原始的源代码。

如我们在上面的截图中看到的,当我们打开EXE和Telerik JustDecompile,我们能够看到原始的源代码,这可能致使软件被盗版,最终会对你造成损失。

如何防止EXE和DLL被反编译?

保护EXE和DLL不被反编译到原始源代码的方法称为混淆。有很多付费和免费的软件可以提供混淆代码的功能,让.Net程序集代码变得模糊,不易理解。Dotfucator是一个流行的混淆工具,这工具的社区版是免费的,并且包含在Visual Studio中。如果您有兴趣购买其他版本,请查看此比较。Dofuscator社区版的功能有限,专业版非常昂贵。因此,一般我们不会通过使用他们而获得利润,相反,我们会在混淆问题上花很多钱。

混淆的最好的替代工具之一是ConfuserEx——它是一个完全免费的开源软件。你可以去网上下载。

下载后,将zip解压到一个文件夹中,然后运行ConfuserEx.exe。

将您想要保护的EXE拖放到ConfuserEx中,或者您可以手动选择基础目录、输出目录并添加DDL或EXE。

一旦您完成了设置目录并添加DLL或EXE,请到ConfuserEx的Settings选项卡。您可以向Gobal设置添加规则,也可以为每个DLL或EXE设置单独的规则。

点击“+”按钮,你会看到规则下的“True”。现在点编辑规则(下面的按钮“-”)。

单击编辑规则,将出现一个新窗口,如下所示。点击“+”按钮。

您可以选择不同的方法来增加保护级别。

只选择“Anti - IL Dasm”和“Anti - Tamper”,这足以使它足够强大,阻止反编译。

点击Done后,点击“Protect ”Tab页,然后点击“保护”按钮。

您可以在选择的输出目录中找到受保护的DLL或EXE。

测试运行一下ConfusedEx生成的EXE或DLL,并检查它是否工作正常。现在尝试用反编工具反编译。

正如我们所看到的,由ConfuserEx生成的混乱的DLL或EXE不能再被反编译。

原文地址:

https://www.codeproject.com/Articles/1245244/Protect-your-Source-Code-from-Decompiling-or-Rev

.net程序源代码如何避免被反编译相关推荐

  1. 获取微信小程序源码并进行反编译

    获取微信小程序源码并进行反编译 只需如下几部就可以爬取到你所想要的微信小程序源码: 第一: node.js运行环境 如果没有安装nodejs,请先安装一下 下载地址:https://nodejs.or ...

  2. 如何查看apk安装包源代码??Android反编译apk,解包,打包,签名一体化实测 ,修改图片音频软件名称版本号等入门

    首先下载反编译工具包 下载地址 链接:  https://zly520.lanzoui.com/ibtuxhf7rab 一.反编译工具介绍 首先 如果你想改动图片音频之类的,见末尾! 1.apktoo ...

  3. 微信小程序源码获取和反编译

    使用的工具,filddler,node,wuWxapkg来截取小程序安装包和反编译 1.获取.wxapkg文件 我是使用fiddler4来获取wxapkg文件的 这里 res.servicewecha ...

  4. 微信小程序源码提取与反编译爬坑

    前言 没必要说太多,基本上操作是没有什么难度的,这里说一些我遇到的问题与解决方式.首先测试小程序,由于他不像是web,是不能通过查看源代码的方式来查看js代码的,所以需要手动的将小程序源码拿出来,然后 ...

  5. Java源代码加密,防止反编译

    使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...

  6. 微信小程序源码获取与反编译方式

    1.登录微信,从微信访问小程序之后会在微信文件目录生成微信小程序的加密包(C:\Users\Administrator\Documents\WeChat Files\Applet),路径可右键微信中的 ...

  7. 如何保护Java程序 防止Java反编译

    常用的保护技术 由于Java字节码的抽象级别较高,因此它们较容易被反编译.本节介绍了几种常用的方法,用于保护Java字节码不被反编译.通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已 ...

  8. java反编译工具_如何保护Java程序 才能防止Java反编译

    简介:Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如 ...

  9. Android APK反编译得到Java源代码或资源文件

    一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...

最新文章

  1. c语言链表创建递归,递归创建二叉树c语言实现+详细解释
  2. DNS通道检测 国外学术界研究情况——研究方法:基于流量,使用机器学习分类算法居多,也有使用聚类算法的;此外使用域名zif low也有...
  3. formZ Pro 9(3D绘图软件)中文版
  4. iShow UI for React 最佳实践
  5. WGAN-div:默默无闻的WGAN填坑者 | 附开源代码
  6. 使用Gradle构建Monorepo项目
  7. 50個AJAX Tools and Frameworks
  8. 六步实现Spring.NET 与 NHibernate 的整合
  9. chromedriver放在哪个目录下_Windows下ThinkPHP与Linux互通
  10. MariaDB:在Linux下修改编码
  11. sql server 性能_如何在SQL Server中收集性能和系统信息
  12. CentOS 6.3下NFS安装配置
  13. [转] 怎么减少编程中的 bug?
  14. SSR端口冲突的解决法法
  15. wifi6路由器使用tcpdump抓包
  16. 斐讯K2 E1 刷老毛子Padavan中继图文教程(与主路由同网段)
  17. windows 10专业版关闭自动更新
  18. qq音乐网页版下载歌曲
  19. php处理证件照_ps怎么精修证件照
  20. CSDN联合安恒信息 共同发布安全开发工程师能力标准

热门文章

  1. 【R语言】对图片进行裁剪 图片批量裁剪
  2. [解决]BCD注册表错误
  3. 把Firfox的缓冲设置到内存盘
  4. 谷歌插件离线安装方法
  5. PowerBI的中国地图制作流程
  6. Dijkstra算法为什么权值不能是负值
  7. encodeURI VS encodeURIComponent
  8. 直播平台源码实现状态栏滑动隐藏和tabbar的教程
  9. 3D游戏从入门到精通-31 32 33
  10. win10下基于wsl-Ubuntu 的LAMMPS超便捷安装