首页 > 其他分享 >.NET应用如何防止被反编译

.NET应用如何防止被反编译

时间:2023-10-05 22:11:22浏览次数:34  
标签:反编译 ConfuserEx 混淆 代码 防止 NET 工具

思维导航

前言

前段时间分享了两篇关于.NET反编译相关的文章,然后文章留言区就有小伙伴提问:如何防止被反编译?因此本篇文章我们就来讲讲.NET应用如何防止被反编译。.NET反编译相关的文章可以看如下文章:

.NET应用如何防止被反编译

注意虽然我们无法完全防止我们的.NET应用被反编译,但是我们可以采取以下一些措施来增加反编译的难度。

  1. 混淆代码: 混淆代码是一种通过修改、变换、重组和隐藏源代码的技术,使得代码在保持功能不变的同时,增加了阅读和理解的难度,从而增强了代码的安全性。混淆代码可以使反编译者难以理解代码逻辑和结构,从而降低他们进行逆向工程的效率(常用一些代码混淆工具对应用程序代码进行混淆,本文会重点介绍)。

  2. 加密敏感数据: 对于应用程序中的敏感数据(如数据库链接、阿里云链接密钥等),可以使用加密算法进行加密,确保即使被反编译,也无法直接获取到明文数据。

  3. 动态代码生成: 将关键代码在运行时动态生成,而不是在静态的可执行文件中存储。这样可以降低被静态分析和反编译的风险,但是动态代码生成还可能导致一些间接影响,例如频繁的动态生成代码可能会增加内存压力,影响垃圾回收的效率。

  4. 使用代码混合技术: 可以通过使用Native代码和P/Invoke调用等方式来增加代码的安全性,隐藏关键代码和算法部分,提高反编译的难度。

  5. 使用代码签名: 通过为应用程序提供数字证书签名,验证应用程序的完整性和真实性,防止恶意篡改。

三款免费的.NET混淆工具推荐

https://mp.weixin.qq.com/s/hXGRdQjC7NXiGwq84KbEnA

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)。

工具下载

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开发者带来更多的价值。

欢迎加入DotNetGuide技术交流群

标签:反编译,ConfuserEx,混淆,代码,防止,NET,工具
From: https://www.cnblogs.com/chinasoft/p/17744010.html

相关文章

  • AutoCAD VBNET 曲线求交点
    曲线求取点,利用几何库<CommandMethod(NameOf(TT_PolyLineCrossCheck))>PublicSubTT_PolyLineCrossCheck()DimdocAsDocument=Application.DocumentManager.MdiActiveDocumentDimdbAsDatabase=doc.DatabaseDimedAsEditor=doc.Editor'......
  • 离线安装Kubernetes(K8s)方法
    1简述1.1搭建方法介绍 K8s有两种搭建方式:1.使用K8s官方发布的二进制包搭建环境2.使用Kubeadm搭建(推荐该种方式) 本文的K8s搭建流程均基于Kubeadm方式1.2Kubeadm简介 Kubeadm是一款旨在为创建Kubernetes集群提供最佳实践“快速路径”的工具。它执行必要的操作,以用户......
  • asp.net mvc Core 网页错误提示:An unhandled exception occurred while processing th
    网页错误提示:Anunhandledexceptionoccurredwhileprocessingtherequest.InvalidOperationException:Theentitytype'IdentityUserLogin<string>'requiresaprimarykeytobedefined.Ifyouintendedtouseakeylessentitytype,call'Has......
  • cmd powershell 命令行窗口保存更多的历史记录输出行数,防止上面的输出被自动删除
    布局-屏幕缓冲区大小-高度调大或者是用https://stackoverflow.com/questions/71099275/can-view-the-history-of-powershell-outputs这个办法自动保存到一个txt文件中参考https://stackoverflow.com/questions/1740876/more-lines-in-command-window ......
  • AutoCAD VBNET 获取曲线在3个基本平面的投影
    求取空间任意曲线在xoy/yoz/xoz平面的投影  <CommandMethod(NameOf(TT_CurveProjected))>PublicSubTT_CurveProjected()DimdocAsDocument=Application.DocumentManager.MdiActiveDocumentDimdbAsDatabase=doc.DatabaseDimedAsEditor=......
  • AutoCAD VBNET 当前文档保存
    当前文档保存总出问题现在借助com的方法实现了保存文件<CommandMethod(NameOf(TT_SaveDrawing))>PublicSubTT_SaveDrawing()DimdocAsDocument=Application.DocumentManager.MdiActiveDocumentDimdbAsDatabase=doc.DatabaseDim......
  • Netty 4.1.98.Final 发布
    Netty4.1.98稳定版已发布。Netty是一个异步事件驱动的网络应用框架,主要用于可维护的高性能协议服务器和客户端的快速开发。此版本还原了上一版本中所做的更改,这些更改导致HTTPheader验证比所需的更严格(#13615)。除此之外,当使用nativeSSL实现时,该版本最终还默认......
  • 【ASP.NET Core】在 Mini-API 中注入服务
    经过版本更新,MiniAPI的功能逐步完善,早期支持得不太好的miniAPI现在许多特性都可以用了,比如灰常重要的依赖注入。咱们先来个相当简单的注入测试。来,定义一个服务类,为了偷懒,老周这里就不使用接口+实现类的方式了。publicclassMyService:IDisposable{publicMy......
  • 如何防止买到假乳胶漆
     雅静说建议乳胶漆还是尽量自己去买  在专卖店或官网买  1,关于用量,你只需要告诉店家你的建筑面积,就会给你计算了  如果担心卖家为了挣钱让你多买,  2,关于真假,首先大家问店家怎么查防伪码,问到之后看查询次数  如果是5次以内都没有问题,如果......
  • Netty 黏包半包分析
    Netty黏包半包分析1具体现象粘包现象,发送abcdef,接收abcdef原因应用层:接收方ByteBuf设置太大(Netty默认1024)滑动窗口:假设发送方256bytes表示一个完整报文,但由于接收方处理不及时且窗口大小足够大,这256bytes字节就会缓冲在接收方的滑动窗口中,当滑动窗口中缓冲......