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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: C#程序发布时,一定要好好地保护,不然你会后悔的

上次分享一个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

相关文章
|
2月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
164 2
|
19天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
67 13
|
6月前
|
存储 安全 Java
程序与技术分享:C#值类型和引用类型的区别
程序与技术分享:C#值类型和引用类型的区别
50 0
|
2月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
220 0
|
2月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
115 0
|
3月前
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
136 4
|
2月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
79 0
|
2月前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
133 0
|
3月前
|
Linux C# 开发者
Uno Platform 驱动的跨平台应用开发:从零开始的全方位资源指南与定制化学习路径规划,助您轻松上手并精通 C# 与 XAML 编程技巧,打造高效多端一致用户体验的移动与桌面应用程序
【9月更文挑战第8天】Uno Platform 的社区资源与学习路径推荐旨在为初学者和开发者提供全面指南,涵盖官方文档、GitHub 仓库及社区支持,助您掌握使用 C# 和 XAML 创建跨平台原生 UI 的技能。从官网入门教程到进阶技巧,再到活跃社区如 Discord,本指南带领您逐步深入了解 Uno Platform,并提供实用示例代码,帮助您在 Windows、iOS、Android、macOS、Linux 和 WebAssembly 等平台上高效开发。建议先熟悉 C# 和 XAML 基础,然后实践官方教程,研究 GitHub 示例项目,并积极参与社区讨论,不断提升技能。
113 2