上次分享一个C#混淆开源项目《一个对C#程序混淆加密,小巧但够用的小工具》,发现大家都非常感兴趣,但也发现很多人,不了解为什么没有混淆,就会很容易被破解。

所以今天给大家做一个教程:如何通过工具来反编译代码、修改代码来实现软件的篡改,并实现通过.NETReactor进行加密混淆

一、演示项目

先创建一个演示项目,方便后续破解和加密使用。

1.1、创建控制台项目:ConsoleAppRemo

1.2、选择框架版本,演示用的是.Net6.0

1.3、实现一个功能:2个数字相加

// See https://aka.ms/new-console-template for more information
int num1 = 3;
int num2 = 4;
Console.Write("num1 + num 2 = ");
Console.WriteLine(num1 + num2);
Console.Read();

1.4、运行效果

二、采用dnSpy破解

下面一起来看看,通过工具对演示项目,进行反编译和修改代码。

2.1、安装dnSpy

dnSpy是Github开源项目,我们到Github下载就行

工具界面:

2.2 、打开dll文件

通过菜单:文件,打开ConsoleAppRemo.dll文件。

2.3、查看代码

通过反编译的结果看,代码完全暴露出来了。

2.4、修改代码

在窗口鼠标右键=》编辑IL指令,打开指令编辑窗口

编辑窗口

2.5、修改变量把数字改为5,并保存

保存效果如下:

2.6、导出dll

选择菜单上的保存按钮,模块类型选择dll,并点击确定,覆盖更新dll。

通过修改时间,我们就可以看到dll已经被更新了

2.7、运行效果

点击exe运行,运行结果已经改变。

到这里,可以说是,我们完完全全地破解了程序了。相信大家看到这,就会发现程序发布时,为什么要进行加密和混淆了。

下面我们一起看看,通过.NETReactor加密情况,以及能否破解。

三、.NET Reactor加密

3.1、下载安装

安装过程比较简单,这里就不展示了。

下载地址:https://www.eziriz.com/reactor_download.htm

3.2、选择待加密的dll文件

选择需要加密的dll文件

3.3、执行加密

点击Protect按钮,进行加密。

3.4、加密成功

工具会自动运行,打印加密的情况(工具是收费的,可免费试用14天)。

执行成功后,工具会创建文件夹,并把加密的文件放入

3.5、检验加密后,我们系统执行情况

拷贝exe文件到Secure文件夹里,并运行,我们的系统可以正常运行

3.6、dnSpy查看反编译情况

通过反编译工具打开加密后的dll,我们会发现文件名、代码都已经被混淆、加密。

总结

通过加密后,还是能比较好地起到保护的效果。通过工具进行加密混淆,主要的目的是增加阅读难度、增加陷阱让破译需要更多的时间与成本。

另外市面上加密工具很多,下面梳理几个比较常用的:

  • ConfuserEx:免费开源的,比较好,只支持.NET Framework,较久未更新。

  • .NET Reactor:收费,比较好,一直有更新。

  • Dotfuscator:收费,比较难用,中间还会出错。

  • Smart Assembly:收费,只有代码混淆,效果不好。

今天就跟大家,分享到这边了,希望对您有帮助**,欢迎点赞关注转发。**

- End -

推荐阅读

  • 一个界面美观、支持团购、拼团、直播、秒杀等营销功能商城系统

  • 盘点5个C#实用的Word、PPT、Excel、Mail第三方库

  • 盘点5个.Net开发的服务器进程监控、性能监控、任务调度的开源项目

  • 盘点10个.NetCore实用的开源框架项目

  • .Net Core导入千万级数据至Mysql

C#程序发布时,一定要好好地保护,不然你会后悔的相关推荐

  1. QML程序发布时无法正常运行的解决办法

    1.运行依赖 以我的一个项目为例,此程序使用QQuickWidget将QWidget和QML结合.程序debug版发布时依赖的库如下: 大部分dll可以在Visual Studio中调试时的控制台中看 ...

  2. 微信小程序发布时需要校验违法违规内容、图片,Java后端接口

    直接上代码 package com.ink.manager.controller.weixin; import java.io.BufferedReader; import java.io.DataO ...

  3. Windows下程序打包发布时的小技巧

    一.背景 Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作 ...

  4. 怎样将应用程序发布到Apple store上去 (一)

    <script type="text/javascript"> </script> <script src="http://pagead2. ...

  5. 基于OpenCasCade的程序发布问题

    基于OpenCasCade二次开发了一个程序,想采用简单的copy的发布(部署)方式. 但在发布时遇到了很多问题.总结一下. 首先将所有所需的dll拷贝到了执行目录下,然后将程序copy到一台未安装O ...

  6. 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么

    原标题:"Linux"小程序发布一个月后,我们发现了什么 这一个月来,这个小程序得到了八千多人的使用,一百多位贡献者实际参与了翻译贡献,其中贡献最高的"Datura st ...

  7. Android 应用程序发布流程注意事项(整理)

    一点关于Android应用程序发布过程的东西,用来告诉那些想发布自己的应用程序的朋友们,在发布过程中会遇到哪些的事情. (1)       发布应用程序之前,首先要做的事是为你的应用做数字化签名认证. ...

  8. 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )

    如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于MatlabR2015b版) 关键字:MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 ...

  9. Android应用程序打包时,出现错误:XXX is not translated in af (Afrikaans), am (Amharic), ar (Arabic).....(...

    转自:http://blog.163.com/shexinyang@126/blog/static/136739312201492144928812/ 问题:当我们开发完成一个Android应用程序后 ...

最新文章

  1. 【Qt】Qt再学习(十四):QGraphicsView
  2. python多项式运算_python – 用于计算“多项式系数”的numpy / scipy函数
  3. iOS中引用计数内存管理机制分析
  4. 【Java】多线程相关复习—— 线程的创建、名字、运行情况以及顺序控制(join方法) 【一】...
  5. wxWidgets:wxRegKey 类演示
  6. HDU4669_Mutiples on a circle
  7. 2分钟 Docker 部署 SprinBoot 集成 Flowable 工作流引擎
  8. 帕累托最优生活例子_创业者:用博弈解决生活的难题
  9. Android 不能勾选 Project Build Target
  10. 【Python实例第26讲】一个主成分的例子
  11. InDesign 教程,如何创建沉浸式文档?
  12. Google Colab使用笔记
  13. 阿里云视频点播配置步骤
  14. USB数据采集卡,通过树莓派微型电脑,实现高速以太网数据采集
  15. php cpu飙高,PHP-FPM进程CPU 飙高的原因及解决方案
  16. Python numpy.column_stack函数方法的使用
  17. 屏幕缩放和注释工具(ZoomIt)
  18. TDB中多个model情况下使用fuseki查询
  19. 宝宝成长季4天-我出生啦!
  20. LintCode 两个数组的交集

热门文章

  1. audio接线图解_HD audio 接头的接法
  2. 某中大型游戏公司面试题
  3. 互联网公司的分布排行
  4. CSS设置超链接样式
  5. matlab 罗德里格 公式,旋转矩阵,四元素,欧拉角
  6. 单片机 C51 编程要点总结
  7. 江山易改本性难移之ZYNQ SDK API函数笔记(UART)
  8. iphone刷linux教程视频,「干货」 iPhone 刷 Android10 详细教程来了
  9. 深度学习caffe(4)——caffe配置(GPU)
  10. 领导和管理的区别,你分清楚了吗?不要让疑惑影响我们的工作