软件采用.net C#开发,不想让人轻松破解核心逻辑及授权验证代码,DLL也不想被人随意调用,有什么办法吗?

 我来答
西瓜什么也不说
2016-08-17 · TA获得超过3565个赞
知道小有建树答主
回答量:205
采纳率:80%
帮助的人:54.8万
展开全部
首先,我来介绍一下发布出去的DLL所面临的风险:
一、直接引用
二、反编译
三、反射
如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。

然后,通常网上能搜到如下的保护方式,但真心的来说,用处不大,当然对小白破解者增加了难度。
一、混淆类的工具(如Dotfuscator,但是可以通过ILSpy、Reflector等反编译哦,直接COPY代码也能运行)
二、加密类的工具(如MaxToCode,网上有相应的破解教程)
三、加壳类的工具(如Sixxpack,网上有相应的破解教程)
四、强签名(签名只是防止项目中的某一个DLL被篡改了,不能防止反编译或反射的哦)

说了那么多,难道没有相对靠谱的方式了吗?
最后,我们进入正题
上面那些工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。
一、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。
二、不能调:我们在非托管代码中加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的HASH值(发布时需要提前生成相关引用者的HASH值存于非托管代码,最后生成非托管代码的DLL放于安装包中)一致,如一致则通过执行返回结果,不一致则返回空。这样就解决了非合法来源不能调的问题。

更多参考:http://www.cnblogs.com/dengxi/p/5750170.html
heart阿飞55
2018-05-17 · TA获得超过1086个赞
知道大有可为答主
回答量:3030
采纳率:82%
帮助的人:556万
展开全部
[寻找突破口]
从演示项目中找到可能使用证书的页面或者事件,逐渐排除一些无关的业务逻辑。首先我们登陆系统。可以发现,当前系统没有注册。

其次找到验证的入口,点击“未授权网站”铵钮。打开如下页面:

可以看到,底部有一个上传证书的文本框。根据WEB程序的特点。这些处理全部集中在下面“确认提交”这个事件中完成的。单击右键-》属性,可以看到该页面的名称,然后在VS项目下找到该页面。但我们从原页面程序中并没有看到该事件的处理函数。Asp.net的机制是后台与页面相分离,通过页面指令来关联后台文件,所以,使用VS环境寻找并打开这一页面源码,可以看到后台地址的映射:

可以看到,后台程序放在了ShopWe 空间下的Admin_ShopWeCert类。
这个名为ShopWe的DLL在Bin目录下。

[顺藤摸瓜 寻找相应的工作模块]
既然锁定了入口的DLL,我们便可以使用VS提供的IL DASM工具反射原程序集,我不想在此说反射是多么强大的一种工具,这全归功于元数据集。
在 程序-》SDK-》工具,打开DASM,然后选择“文件”=-》选择SHOPWE ,即可打开该DLL,如下图所示。

上面清楚的列举了当前模块中的类,方法,字段和属性,还有版本等信息。

对于右侧的三角符号,正方形的含义不清楚的,可以查下IL DASM的用法中有介绍。
蓝色的“集成快”表示类,“集成块”中间有I标识的是接口,向右红三角表示版本,元数据信息,平行四边形表示字段,向上红三角表示属性,正方形是方法。带S的是静态方法。
如果不清楚,请单击IL DSAM 帮助菜单。或者查找 该工具用法。

在页面的提交事件中,我们已经看到,该事件的处理函数为Submit_Click
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang399401
2016-08-17 · TA获得超过702个赞
知道小有建树答主
回答量:1347
采纳率:0%
帮助的人:939万
展开全部
代码加密,混淆,有的加密软件可以把dll文件和程序文件加密成一个文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式