C#程序采用AOT发布,真的可以避免被反编译?

上次跟大家分享过,C#程序反编译与篡改代码的教程《C#程序发布时,一定要好好的保护,不然你会后悔的【带破解教程】!》,根据这个教程,我们都知道C#程序发布后必须进行加密混淆,不然就是相当于源码直接暴露
随着.Net 7的发布,Native AOT也成为亮点之一,大家都非常关注AOT能否解决被反编译的问题,今天我们就一起来看看。
一、演示项目
先创建一个演示项目,方便后续验证能否反编译。.
1.1、创建控制台项目:ConsoleAppAot
C#程序采用AOT发布,真的可以避免被反编译?
项目名:ConsoleAppAot
C#程序采用AOT发布,真的可以避免被反编译?
1.2 选择框架.Net 7
C#程序采用AOT发布,真的可以避免被反编译?
1.3 实现功能:2个数字相加
// See https://aka.ms/new-console-template for more informationint num1 = 1;int num2 = 2;Console.WriteLine(num1 + num2);Console.Read();
C#程序采用AOT发布,真的可以避免被反编译?
1.4 项目修改为Aot发布方式
右键项目=》编辑项目文件,添加Aot发布方式。
<PublishAot>true</PublishAot>
 
C#程序采用AOT发布,真的可以避免被反编译?
1.5 运行效果
C#程序采用AOT发布,真的可以避免被反编译?
二、采用ILSpy、dnSpy进行反编译
2.1 采用win-x64发布
C#程序采用AOT发布,真的可以避免被反编译?
2.2 发布的文件
从发布后的文件,我们可以看到exe有接近3M,这是因为AOT是通过ilc.exe来加载托管的DLL,然后把这个DLL编译成.Obj文件,所以导致exe文件超大。
C#程序采用AOT发布,真的可以避免被反编译?
2.3 反编译结果
ILSpy反编译:
C#程序采用AOT发布,真的可以避免被反编译?
dnSpy反编译:
C#程序采用AOT发布,真的可以避免被反编译?
通过以上反编译工具查看,采用Aot发布确实能有效解决反编译的问题。