首页 文章详情

C#程序发布时,一定要好好的保护,不然你会后悔的【带破解教程】!

DotNet NB | 246 2022-11-25 00:03 0 0 0
UniSMS (合一短信)
上次分享一个C#混淆开源项目《一个对C#程序混淆加密,小巧但够用的小工具》,发现大家都非常感兴趣,但也发现很多人,不了解为什么没有混淆,就会很容易被破解。
所以今天给大家做一个教程:如何通过工具来反编译代码、修改代码来实现软件的篡改,并实现通过.NETReactor进行加密混淆

一、演示项目
先创建一个演示项目,方便后续破解和加密使用。
1.1、创建控制台项目:ConsoleAppRemo
1.2、选择框架版本,演示用的是.Net6.0
1.3、实现一个功能:2个数字相加
// See https://aka.ms/new-console-template for more informationint 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下载就行
下载地址:https://github.com/icsharpcode/ILSpy/releases/tag/v8.0-preview2


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、ILSpy查看反编译情况
通过反编译工具打开加密后的dll,我们会发现文件名、代码都已经被混淆、加密。

总结
通过加密后,还是能比较好起到保护的效果。通过工具进行加密混淆,主要的目的是增加阅读难度、增加陷阱让破译需要更多的时间与成本。
另外市面上加密工具很多,下面梳理几个比较常用的:
  • ConfuserEx:免费开源的,比较好,只支持.NET Framework,较久未更新。

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

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

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


推荐阅读:
ASP.NET Core 中的微服务架构
.NET Core 搭建 Ocelot及使用
C# 多线程之高级篇
定制 ASP.NET Core 的身份认证
C# 11:接口中的静态抽象成员
.NET Conf China 2022 第一批讲师阵容大揭秘!整个期待了!

点击下方卡片关注DotNet NB

一起交流学习

▲ 点击上方卡片关注DotNet NB,一起交流学习

请在公众号后台

回复 【路线图】获取.NET 2021开发者路线图
回复 【原创内容】获取公众号原创内容
回复 【峰会视频】获取.NET Conf开发者大会视频
回复 【个人简介】获取作者个人简介
回复 【年终总结】获取作者年终总结
回复 加群加入DotNet NB 交流学习群

长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。



good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter