8.2.3 防止修改
防止修改是指通过技术手段,防止被保护程序的代码和数据被修改,主要通过在程序中增加对程序自身或相关代码的校验或者对程序代码进行签名验证等工作实现对程序自身的保护。
防止修改技术主要包括文件校验、内存校验等。
软件加密与解密行业经过多年发展,要想保护一个软件程序,已经不能单靠某一种技术了。为了保护一个软件程序,我们往往需要使用其中的多种甚至是全部技术,并将各种技术组合使用,以求达到最好的保护效果。而且,为了达到保护软件的目的,我们往往还需要设计其他相应的功能,如软件试用、授权等一系列软件原始程序目的之外的功能,这将是一个非常费时费力的庞大的工程。软件保护系统的作用就是将这种工作变成自动化的工作,尽可能地将软件保护工作简单化、专业化、普及化。
软件保护系统一般会从两个方面进行设计:一是软件保护系统能够为保护程序带来额外的功能,如注册和使用功能、黑名单功能、打包功能等;二是软件代码的加密。下面着重介绍软件保护系统的附加功能。
正如我们前面所说,软件保护最终是要实现软件作者保护软件的各种目的,如防止盗版、简化软件的授权等,仅做代码加密是没有意义的。如果软件不具备授权和验证系统,任何人只要运行原始的复制品就能够使用软件所有的功能,就没有破解软件的必要。所以,提供软件保护功能是必然的。一般的软件保护系统提供的额外功能如下。
(1)试用控制
试用控制就是为被保护软件程序增加试用能力,将软件变为两种或者多种授权状态。当用户只运行软件的非授权版本时,软件程序可以使用,但是功能会受到限制,如只能使用一段时间、一部分功能甚至一定次数等。当软件注册通过,用户获得授权以后,软件就可以转换到另外一种状态,如可以无期限使用,使用所有功能等。
(2)授权控制
授权控制是指为被保护软件程序而增加授权功能,将软件变成只能由授权用户打开并使用的状态。
通过授权控制,授权者(如软件开发者)可以控制软件执行终端的各种信息,如地域、数量等。例如,现在大多数保护系统都有一机一码功能,通过机器码等形式对软件终端的硬件环境进行记录,可以使授权者拥有精确控制软件运行终端信息的能力。授权控制的主要目的是为了防止软件被未授权的用户(如没有付费的用户)使用。
(3)功能扩展
功能扩展是指软件保护系统可以为被保护的软件程序添加一些在被保护程序的原始设计中并不具备的公用的或者特定的功能。例如,许多软件保护系统都为被保护程序添加了闪屏的功能,这种设计的目的就是为被保护软件程序提供一个功能扩展接口,这对那些不具备源代码或者不方便修改被保护程序原有代码的程序而言非常有用。