{{Aspfm.sysUserName}} 我的消息 设置 退出登录
C# Dll文件加密 文件虚拟化 再使用动态加载 做到DLL文件的完全隐藏。

首先,我是aspfm表单开发工具的作者,我一直在找C#DLL文件的保护办法。因为我的产品是免费的,所以找了很多免费的(或者破解的)加密工具,能用的那几款加密工具还被360报毒。很失落。没办法,只能退而求其次,使用DLL混淆工具。

使用了混淆工具ConfuserEX之后,一度让我非常满意。因为达到了效果,ILSpy更本无法反编译。但之后,我自己不是很放心,毕竟只是混淆,会不会有对混淆的程序进行脱壳的工具呢。百度一下之后,更失落了,脱壳工具到处都是。而且如何脱壳的技术文章一大堆。

那么,到此时,想免费保护DLL文件的想法破灭了。怎么办呢。

没有办法,最后得到一个C++加密C#代码的思路。根据C++源代码。我经过改造之后。完成C#Dll文件的加密。现在我免费提供这种工具及方式。

此项目是使用的.NET 4.0框架。也可以支持.NET 2.0框架

另外还需要安装VS2015 VC++ 可发行组件包,如程序发布为32位则应安装32位的可发行组件包,如果发布为64位则应安装64位可发行组件包。

应用程序免费加密教程开始

1、新建测试项目


2、代码改造

在下载开源代码:https://gitee.com/bing300/aspfm。并到Aspfm.Factory.Main工程添加到测试项目中。

删除Aspfm.Factory.Main工程中 除Start.cs文件外其他全部文件。并引用ClassLibrary1工程。然后修改start.cs里的内容。

然后修改WindowsFormsApplication1工程的入口函数。并引用开源项目中【Aspfm发布版本\Aspfm设计器】文件夹里的Aspfm.Factory.dll。

因为使用了C++加密原理。应用程序不再支持Any CPU。必须编译成X86或者X64。

3、程序发布

(1)在桌面随便新建一个文件夹。并把代码生成的    Aspfm.Factory.Main.dll    WindowsFormsApplication1.exe  放到文件夹里。
(2)然后,再新建子文件夹AspfmPlugin(这个名称不能变)。并把准备加密的动态库ClassLibrary1.dll放到子文件夹AspfmPlugin目录里。
(3)再然后从开源项目中【Aspfm发布版本\Aspfm设计器】文件夹里复制  Aspfm.Factory.dll    NetProtect.CoreClr.dll   两个文件

4、启动Aspfm加密


运行开源项目中【Aspfm发布版本\Aspfm设计器】文件夹里里的Aspfm.Design.exe


5、删除要保密的动态库,并执行正常。
删除ClassLibrary1.dll。要保护的动态库不要发布。生成的保密文件是一个加密压缩的压缩包,已经不在是正常文件。但程序可以正常运行。

6、反编译测试

到此,发布版本更本就没有ClassLibrary1.dll动态库。不存在常规手段的反编译。ILSpy.exe等反编译工具天然对这种加密的程序无效。

那个加密之后的乱码文件,其实是一个加密了的压缩包。

7、实现原理

加密重点是使用C++的Clr动态库,动态解密解压缩并动态加载到exe应用程序的内存中。由于过程全部是程序内存中完成,不会把解密解压缩的动态库回写成文件。所以常规手段无法破解。


8、破解可能

这种加密程序被破解也是有可能的。程序高手先破解C++的动态库。并完全理解C++程序内部的解密算法。然后还原那个被加密的加密之后的乱码文件
对于这种高手。那就没有办法了。

9、结语

这种加密方式。只是我自己觉得比代码混淆工具要好,然后免费公布。至于使不使用这种方式,每个人自己决定。
另外,如果有高手能够破解这种加密,而且愿意配合我写出更好的免费的加密程序。请联系我qq:601298977