软件本身开发很重要,但在保证软件质量的基础上,适当合理地提高软件保护强度也不是坏事。本次专题仅讨论如何从技术上来保护软件,其他一些与法律相关的措施不在本次讨论之列。
要开发一款不能被破解的软件是困难的,如果一种保护技术的强度强到足以让破解者在软件的生命周期内无法将其完全破解,这种保护技术就可以说是非常成功的。因此,保护目的是推迟软件被破解的时间,提高破解者的成本。
下面给出几个思路供参考,同时,欢迎大家一起来讨论。
1.序列号保护的软件,最好是一机一码,这样一台机器上的注册码就无法在另外一台机器上使用,可以防止有人散播注册码,并且机器号的算法不要太迷信硬盘序列号,因为用相关工具可以修改其值。自己设计的检查注册信息的算法不能过于简单,最好采用比较成熟的密码学算法。
2.如果试用版与正式版是分开的两个版本,且试用版的软件没有某项功能,则不要仅仅使相关的菜单变灰,而是彻底删除相关的事件代码,使得编译后的程序中根本没有相关的功能代码。
3.尽可能少地给用户提示信息,因为这些蛛丝马迹都可能导致解密者直接深入到保护的核心。
4.可以选用一些加密壳保护,但从目前看来,好像没有哪款壳不能被破解的,因此不能太依赖这些壳。
5.强烈推荐使用虚拟机加密保护的产品,如VMProtect。虚拟机保护是近年来一个热门保护技术,其优点是对核心代码虚拟机化处理,使得算法不容易被逆向和分析,很适合序列号保护的共享软件使用。VMProtect很好地满足了“提高破解的成本”这个加密的条件,至少目前看来,VMProtect还是比较安全的。使用方法:官方站点:http://www.vmprotect.ru
作 者:PolyTech (俄国)
VMProtect是目前最强大的虚拟机保护软件之一,适合Visual Basic(native),Visual C,Delphi,ASM等本地编译的目标程序,支持EXE,DLL,SYS。支持Windows各系统,具有很好的兼容性和稳定性。
VMProtect是当前一款很强的虚拟机保护软件,经过VMProtect处理的软件,能大大提高破解者的分析成本,是目前一种比较理想的保护方式。VMProtect关键是用好,一定要将程序关键代码进行处理,必要时用OllyDBG检查一下被处理的代码。
另外,经虚拟机处理代码效率会降低,因此一些对效率要求比较高的代码就不适合用VMProtect进行处理。
作者:kanxue 来源:看雪学院
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>