大小
95.04 MB
发货方式
自动发货
下载方式
远程下载
源码参数
源码类别:【开发辅助】
源码类型:C/S
适合人群:
进阶
授权类型:商业版
开发语言:C#
数据库:SQLite
框架版本:.00
源码大小:95.04MB
相关网址:
【免费浏览】
源码指数:
完整度:
上架时间:2016-11-04 15:54:02
一、源码特点
1、对于.net商业软件来说,如何保护核心功能如授权验证或核心功能不被别有用者破解是开发者头疼的问题。
本源码对采用了新的思路来DLL的保护。
2、首先,我来介绍一下发布出去的DLL所面临的风险:直接引用;反编译;反射等
3、如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。
4、其次,网上通用的解决方案都是通过混淆工具来完成的,但这样也有弊端,一是价格,大多都卖得很贵;也是存在被破解的风险,每款相应的混淆工具都能找到相应的脱壳工具。
说了那么多,难道没有相对靠谱的方式了吗?
最后,我们进入正题:
通过混淆工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。
1、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。
2、不能调:首先加入防调试的功能,使其破解者不能调试我们的程序获取关键信息,然后加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的HASH值(发布时需要提前生成相关引用者的HASH值存于非托管代码,最后生成非托管代码的DLL放于安装包中)一致,如一致则通过执行返回结果,不一致则返回空。这样就解决了非合法来源不能调的问题。
PS:当然此种方案理论上也能破解,不过能去反编译C++的人肯定比会下载几个工具就能破解混淆工具的少多了吧,从一定程序上提升了技术的门槛。
二、注意事项
1、开发环境为Visual Studio 2015,数据库为SQLite,使用.net 4.0开发。