.NET是程序员比较钟爱的一款编程工具,但它有一个致命的缺点:编译好的程序集很容易反编译成源代码。一旦被反编译,软件开发者的辛苦劳动将付诸东流。如果您想知道怎样给自己的软件加上好的保护措施,来看看这篇文章。软件创新的技术固然重要,但软件安全防范意识也不可或缺,开发者们辛勤的汗水可不能打了水漂。
也许有不少人即使有安全意识,也不知道如何选择安全工具,那么我们可以先以.NET程序为例,介绍几种软件代码安全保护措施。
如何保证一项好的.NET程序安全策略,选择一款好的软件加密方案,可以从以下几点着手。
1.代码安全
面临风险:.NET程序为一种解释型语言,非常容易被反编译。如果没采用好的代码加密方案,代码非常容易被窃取。
建议:一定要选择真正的代码加密方案,不要只选择混淆工具(如名称混淆、流程混淆、语法混淆等),也不能只考虑使用强名称等工具,因为这些工具非常根本没办法保护代码不被反编译。
2.通讯加密
面临风险:代码保护之后,破解者为了短期获利,根本不会花数月去反汇编代码,而是去攻击短板:通讯通道。破解者会通过侦听工具模拟通讯达到破解的目的。
建议:如代码加密工具本身不自带通讯加密工具,或通讯加密工具不强大的话,建议软件开发者一定要在专家的指导下自己手动加密通讯通道,绝对是磨刀不误砍柴功!
3.授权安全
面临风险:如果授权复制了,再好的加密方案也不能保证软件安全。
建议:选择不能被硬件复制的硬件加密狗存放授权。
4.生产安全
面临风险:软件保护好了进行发行,也需要保证发行过程的管理安全。如果企业管理不善,可能本身管理发行的人或软件发布的会出现监守自盗的问题。
建议:企业可以软件加密和软件发行由不同的人员管理,或者通过管理物理硬件(母锁)的方式,必免授权文件失控流失出去。
5.运行稳定
面临风险:采用有些加密工具之后,会出现加密后的程序不稳定的现象。
建议:加密后的程序需要进行大量的测试,保证加密后的程序稳定,也即不能出现图形界面不能加载、源程序出错、某些算法解析错误、异常退出等问题。
6.运行效率
面临风险:有些.Net程序在加密之后,运行效率大打折扣,严重影响用户的体验度。
建议:首先对于一些对运行效率有比较高的软件,在选择加密工具时就要排队虚拟机加密、本地加密等方法,其次也需要在调节工具调整,使得最终软件在安全性与高性能之间达到一个合理的平衡点。
7.方便易用
面临风险:如果加密工具不好用,则会浪费软件开发者的时间,并且可能会影响软件发布时间。
建议:建议选择专业成熟的全自动加密工具,不做任何代码开发,并且加密工具最好是能够定期升级。
8.授权体系
面临风险:止如果加密软件没有良好的授权体系,仅仅是加密代码,则不利于软件发行。软件开发者自行开发授权体系,一是有额外的开发成本,二是不一定安全,三是兼容性会问题。
建议:最好是加密软件时就全自动集成授权体系,软件开发者无需额外的开发成本即可实现时间授权、次数授权、网络浮点授权、分模块授权等授权模式。
PS:最后,选择.NET程序保护方案,一定要注意:
1、留意方案提供商的背景,不选择短期临时方案,避免给后期发展带来隐患。
2、选择能持续升级的加密方案,不选择一成不变的方案,加密方案阶段性的升级,是最好的安全保障。
网友评论