.NET应用如何防止被反编译
前言
前段时间分享了两篇关于.NET反编译相关的文章,然后文章留言区就有小伙伴提问:如何防止被反编译?因此本篇文章我们就来讲讲.NET应用如何防止被反编译。.NET反编译相关的文章可以看如下文章:
.NET应用如何防止被反编译
注意虽然我们无法完全防止我们的.NET应用被反编译,但是我们可以采取以下一些措施来增加反编译的难度。
混淆代码: 混淆代码是一种通过修改、变换、重组和隐藏源代码的技术,使得代码在保持功能不变的同时,增加了阅读和理解的难度,从而增强了代码的安全性。混淆代码可以使反编译者难以理解代码逻辑和结构,从而降低他们进行逆向工程的效率(常用一些代码混淆工具对应用程序代码进行混淆,本文会重点介绍)。
加密敏感数据: 对于应用程序中的敏感数据(如数据库链接、阿里云链接密钥等),可以使用加密算法进行加密,确保即使被反编译,也无法直接获取到明文数据。
动态代码生成: 将关键代码在运行时动态生成,而不是在静态的可执行文件中存储。这样可以降低被静态分析和反编译的风险,但是动态代码生成还可能导致一些间接影响,例如频繁的动态生成代码可能会增加内存压力,影响垃圾回收的效率。
使用代码混合技术: 可以通过使用Native代码和P/Invoke调用等方式来增加代码的安全性,隐藏关键代码和算法部分,提高反编译的难度。
使用代码签名: 通过为应用程序提供数字证书签名,验证应用程序的完整性和真实性,防止恶意篡改。
三款免费的.NET混淆工具推荐
ConfuserEx .NET混淆工具安装
工具介绍
ConfuserEx是一个功能强大且广泛使用的.NET代码混淆工具。它支持多种混淆技术,包括控制流混淆、字符串加密、资源加密等。它具有灵活的配置选项,可以根据不同的需求进行定制(注意:不足的是目前只支持.NET Framework 2.0/3.0/3.5/4.0/4.5/4.6/4.7/4.8,不支持.NET Core代码混淆,本章.NET版本代码示例使用的是.NET Fx4.7.2)。
- GitHub开源地址:https://github.com/mkaring/ConfuserEx
- 下载地址:https://github.com/mkaring/ConfuserEx/releases
工具下载

ConfuserEx-GUI.zip包解压即可使用:


使用ConfuserEx工具混淆.NET Fx .dll文件
添加需要混淆的.dll文件
将待混淆的.dll文件拖拽进中间方框区域(Drag input modules here),如下图所示:

设置混淆规则
选择Settings项,添加混淆规则,如下图所示:

设置混淆规则:Protections选择anti ildasm,应该是防止IL反编译。因为Ildasm.exe是微软提供的.NET的IL反编译器。

选择Proect!选项开始混淆
点击【Protect!】,就开始混淆了,Finished代表混淆完成并成功。

混淆成功保存的文件目录:

混淆前后代码对比
混淆之前

混淆之后
用ILSpy无法打开:

用.NET Reflector反编译结果:

使用ConfuserEx工具混淆.NET Fx 混淆.exe文件
添加需要混淆的.exe文件

选择Settings选项卡,添加混淆规则
注意:这里与.dll文件设置混淆规则不一样,需要要设置Packer,压缩打包,且不需要编辑规则。

选择Proect!选项开始混淆
点击【Protect!】,就开始混淆了,Finished代表混淆完成并成功。

ILSpy查看混淆前后的.exe文件对比
混淆前:

混淆后:

运行混淆后的.exe文件


加入DotNetGuide技术交流群
1、提供.NET开发者分享自己优质文章的群组和获取更多全面的C#/.NET/.NET Core学习资料、视频、文章、书籍,社区组织,工具和常见面试题资源,帮助大家更好地了解和使用 .NET技术。
2、在这个群里,开发者们可以分享自己的项目经验、遇到的问题以及解决方案,倾听他人的意见和建议,共同成长与进步。
3、可以结识更多志同道合的开发者,甚至可能与其他开发者合作完成有趣的项目。通过这个群组,我们希望能够搭建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值。
.NET应用如何防止被反编译的更多相关文章
- class-dump 反编译私有的库和应用
一.下载并安装class-dump 下载class-dump-3.5.dmg 点击下载 下载完成以后双击.dmg的文件,将里面的class-dump拷贝到/usr/local/bin 设置权限chm ...
- 反编译.NET工程
工具: 1. .Net Reflector 2. 远程桌面 步骤: 1. 远程桌面连接到服务器 IP,port,user,pwd 2. 打开 IIS 这里面就是所部属的网 ...
- 将JAR包反编译,修改后重新打包(转)
将JAR包反编译,修改后重新打包(转) 在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...
- 反编译apk
一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源 ...
- Android安全攻防战,反编译与混淆技术完全解析(下)
在上一篇文章当中,我们学习了Android程序反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.通过这些内容我们也能看出来,其实我们的程序并没有那么的安全.可能资源被反编译影响还不是很 ...
- Android安全攻防战,反编译与混淆技术完全解析(上)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值 ...
- apk反编译工具
反编译工具: apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看 dex2jar:将apk反编译成Java源码(classes.dex转化成jar文件) jd-gui:查看APK中 ...
- 反编译apk时遇到的问题
第一次尝试反编译的时候遇到如下问题:Input file (ganzhou) was not found or was not readable 百度之后说是apktool版本2.0以上,编译命令变了 ...
- Java反编译代码对齐
使用反编译的代码作为jar包源码进行调试时,经常会遇到的情况是反编译后的源码之在注释里包含行号,但是与代码所在行经常对应不上.这个时候,就有必要对代码进行对齐了. public class Reo ...
- apk 反编译
http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 标签: android ...
随机推荐
- 前后端是怎么交互的呢?(Jvav版)
一.什么是前端 在网上,我也去找了一些观点,其实都是应用层面的,什么使用一个地址,回车以后就能拿到 .html文件等等 说的也没问题,前端简单点说呢,就是负责展示和美化的页面,大部分在网上我们所看到的 ...
- maven项目中Tomcat启动失败:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run
maven项目中Tomcat启动失败:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run (defa ...
- DevOps|中式土味OKR与绩效考核落地与实践
昨天一个小伙伴和我讨论了一下OKR和绩效管理,所以这次想简单明了地说下在中国怎么做比较合适,很多高大上的理论无法落地也是空中楼阁. 首先说一些,我个人的理解 道德品质和能力素质决定了一个人的职位行为 ...
- [ARM 汇编]高级部分—性能优化与调试—3.4.3 使用模拟器进行调试与测试
在ARM汇编程序开发过程中,使用模拟器(emulator)进行调试和测试是一种非常有效的方法.模拟器可以在不同的处理器上测试代码,帮助我们发现潜在的问题,并提供丰富的调试功能.本节将介绍如何使用QEM ...
- Java 写一个线程安全的单例模式(饱汉/饿汉)
饿汉单例 public class Singleton { private static Singleton singleton = new Singleton(); private Singleto ...
- PHP file_put_contents()写入配置文件
php把提交的数据写入到配置文件中 在后台可以设置网站的基本信息,例如:title,keywords,copyright.等信息,这些信息只是一条数据,存入数据库耗费资源,直接写入到php文件中. 创 ...
- CompletableFuture之批量上传
前言 最近接到一个需求,批量上传图片到服务器及实时更新上传进度.当处理大量文件上传任务时,效率是一个关键因素.传统的串行方式会导致任务耗时较长,而使用并发处理可以极大地提高上传效率.想到很久之前用Co ...
- 【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!
摘要:在Web3时代,基础设施不仅仅是传统意义上的服务器.网络等,还包括了区块链节点.智能合约等,这些基础设施的稳定性和可信度直接影响着Web3的发展. 本文分享自华为云社区<[HDC.Clou ...
- MD文本编辑工具推荐-matktext
最开始是用vscode编辑markdown文档,左边写右边看效果的实时渲染模式,对于markdown编辑来说是多余的,多是文字类的内容,配以插图,复杂表格和脑图则更少.之后接触到Typora,所打即所 ...
- python开发之远程开发工具对比
前言 除了本地开发外,还有一种常见的开发方式就是远程开发,一般情况是一台Windows或mac笔记本作为日常使用的电脑,另有一台linux服务器作为开发服务器.开发服务器的性能往往较强,这样远程开发的 ...