专利名称:软件保护方法及其系统的制作方法
技术领域:
本发明涉及软件的一种保护方法,尤其是应用智能卡代码分离法 实现的软件保护方法以及应用这种方法的系统。
背景技术:
随着电子技术的发展,计算机软件已经广泛地应用在各个领域。 随着计算机软件的广泛应用,软件盗版现象也随之出现。如何有效保 护软件著作权人的利益,对软件进行有效地保护,是软件行业需要迫 切解决的问题。
现有的软件保护方法主要有软件注册、密码保护、"加密狗"保 护等几种。应用软件注册方法,是用户在使用软件前进行注册,通常
是输入序列号等形式;使用密码保护的方法,则在每次使用软件前输 入密码以运行软件;使用"加密狗,,保护的方法,则是在计算机接上 一个数字电路,该数字电路中存储有多个数据,软件运行前通过计算 机接口对数字电路进行操作,并判断存储的数据是否正确,只有当存 储的数据是正确的,软件才能正常运行。
上述方法均需在软件上设置一软合法性检查模块,用于检查软件 注册序列号、密码等是否正确。这使部分非法用户通过反汇编、软件 跟踪等方法直接篡改软件,并将软合法性检查模块屏蔽,使得软合法 性检查模块失效,进而无偿使用该软件。也有部分非法用户根据软合 法性检查模块的特性,通过其它软件生成一个可模拟软合法性检查模 块工作的模块,从而将软件破解。因此,使用上述方法很难有效地对 软件进行保护。
发明内容
针对上述问题,本发明主要目的是提供一种有效防止非法用户对 软件进行破解的软件保护方法;
本发明的另一目的是提供一种应用上述软件保护方法的软件保护 系统。
为了实现上述的主要目的,本发明提供的软件保护方法中,软件 的程序文件安装在计算机中,该计算机通过连接设备与智能卡连接,
该方法包括以下步骤
步骤一确定软件程序文件中的特定代码,该特定代码应该为软 件程序文件中的核心代码,即软件运行时不可缺少的代码,同时将特 定代码提取并封装。
步骤二在程序文件中被提取的特定代码处设置程序接口模块, 该程序接口模块用于与调用特定代码。
步骤三封装程序接口模块,即将程序接口模块封装成智能卡能 够识别的APDU命令,并将封装后的特定代码传送至智能卡内。
步骤四在计算机中设置命令接口模块,该命令接口模块用于与 连接设备通信,接收程序接口模块发送的调用命令,并根据该调用命 令通过连接设备在智能卡中调用特定代码,并将特定代码发送至程序 接口模块中。
由上述方法可见,软件程序文件的部分核心代码是存储在智能卡 中,用户使用软件时,需要将智能卡与到计算机连接,计算机才能读 取存储在智能卡中的核心代码,软件才能正常运行。若用户不将存储 有正确核心代码的智能卡与计算机连接,计算机无法找到对应的核心 代码,软件即无法正确运行。这样,在软件中不需要设置软合法性检 查模块,用户无法通过屏蔽软合法性检查模块的方法破解软件。
同时,由于智能卡是一种安全性能很高的芯片,存储在智能卡中 的数据不能被复制到计算机中,因而不能存储在计算机内,用户也很 难通过光电学的手段获取存储在智能卡内的数据,因此,使用智能卡 存储软件程序文件中的部分核心代码,可有效防止用户获取核心代码 而将软件破解,从而有效对软件进行保护。
为了实现上述的另 一 目的,本发明提供的软件保护系统包括计算 机,该计算机中安装有软件,并且通过连接设备与智能卡连接。在智 能卡中存储有从软件的程序文件中提取并封装的特定代码。并且,软 件的程序文件包括一程序接口模块,设置在特定代码在程序文件中所 存储的位置,用于调用特定代码。并在计算机中设置命令接口模块,该命令接口模块可在计算机内与程序接口模块进行通信,同时,命令 接口模块还与连接设备进行通信。
一个具体的方案是,该连接设备是读卡器,智能卡通过该读卡器 与计算机连接。并且,存储在智能卡内的应该是软件程序文件的核心 代码,即软件运行时不可缺少的一部分代码。
由于软件程序文件的部分核心代码被存储到智能卡中,因此用户 运行软件时需要将存储有核心代码的智能卡连接到计算机上,这样即 可确保软件只能合法用户使用,有效对软件进行保护。
图l是本发明软件保护系统实施例的连接示意框图; 图2是本发明软件保护方法实施例的流程图。 以下结合附图及实施例对本发明作进一步说明。
具体实施例方式
参见图1,图1是本发明软件保护系统实施例的连接示意框图。 本实施例的系统由计算机1、读卡器2和智能卡3组成,其中,在计 算机1内安装有需要保护的软件,该软件的程序文件11存储在计算 机1内。读卡器3是本实施例的连接设备,存储有从程序文件11中 提取并封装的特定代码。本实施例中,该特定代码为程序文件11的 核心代码31,如程序文件11的核心算法、软件的核心功能模块等, 软件一旦脱离这些核心代码即无法正常运行。当然,核心代码31可 以是程序文件中 一段连续的代码,也可以是二段或二段以上不连续的 代码,这些并不影响本发明的实现。
在软件的程序文件11中还设有一程序接口模块12,程序接口模 块12设置在程序文件11中被提取代码处,也就是程序接口模块12 替代了被提取的代码。当然,若被提取的核心代码为二段或二段以 上,则应该在相应的位置上设置相应个数的程序接口模块,即被提取 代码段数与程序接口模块的数量是一致的。程序接口模块12用于调 用被提取了的核心代码31,并将使得软件可正运行。当软件执行至 程序文件11中被提取代码的位置时,程序接口模块12便发出调用存
储在智能卡3内核心代码31的调用命令,并将核心代码31调用到软 件中,软件即可执行这些核心代码31,使得软件能够正常运行。
在计算机1中还设置有命令接口模块13,可与程序接口模块12 进行通信。命令接口模块12将程序接口模块12发出的调用命令转换 成智能卡能够识别的APDU命令格式,并通过读卡器2发送至智能卡 3中。智能卡3接收到该调用命令后,通过读卡器2将核心代码31 传送送到命令接口模块13。
由于存储在智能卡3中的核心代码31是被封装成智能卡3能够 识别的APDU命令格式的代码,因此,当程序接口模块12接收到核心 代码31后,需要将其转换成原始的代码格式,然后再由软件执行核 心代码31,以确保软件的正常运行。
将软件的程序文件中部分核心代码存储到智能卡中,则用户使用 软件时需要将存储有核心代码的智能卡连接到计算机上。这样,可以 确保只有合法用户才能使用该软件。同时,由于存储在智能卡中的数 据不能够复制到计算机中,也就不能存储在计算机内,这样即有效防 止非法用户将核心代码存储在计算机而非法使用软件。另外,由于智 能卡是安全芯片,非法用户也不能通过光电学的手段获得存储在智能 卡中的数据,无法获取核心代码,有效防止软件被非法盗用。
同时,由于本实施例中,软件的程序文件中并没有软合法性检查 模块,非法用户也就不能通过屏蔽软合法性检查模块的方法破解软 件,增强了软件的防破解性能。
以下介绍该系统是如何生成的。参见图2,图2是本发明软件保 护方法实施例的流程图。
生产本发明的软件保护系统时,首先需要确定程序文件中的核心 代码(步骤Sl),如核心的算法、核心的功能模块等。然后,提取 核心代码,并将其封装成智能卡能够识别的APDU命令格式(步骤 S2)。
接着,在程序文件中被提取核心代码处设置相应的程序接口模块 (步骤S3),用于调用核心代码。然后,测试程序接口模块是否正
确调用相应的核心代码(步骤S4),若程序接口模块能够正确使 用,则可执行下一步,若不能正确使用,则需要再次设置。
在正确设置了程序接口模块后,则将程序接口模块封装成智能卡 能够识别的APDU命令格式(步骤S5)。然后,将封装好的核心代码 传送到智能卡上(步骤S6)。由于核心代码已经封装成智能卡能够 识别的APDU命令格式,因此智能卡能够识别并存储核心代码。
最后,在计算机中设置命令接口模块(步骤S7)。命令接口模 块用于将程序接口模块发出的调用命令传送至读卡器,并将读卡器返 回的核心代码传送到程序接口模块中。
应用本发明的软件保护方法对软件进行保护,即将软件的部分核 心代码存储在智能卡内,可大大增强软件的安全性。用户需要使用软 件时,将存储有核心代码的智能卡与计算机连接,然后运行软件。当 软件执行程序文件遇到被提取代码位置时即遇到程序接口模块,程序 接口模块即向命令接口模块发出调用命令,命令接口模块接收该调用 命令后,转换成APDU命令格式,并发送至读卡器。
读卡器接收讽用命令后,将核心代码取出,并传送至命令接口模 块。命令接口模块将核心代码传送至程序接口模块,软件即可执行核
心代码,软件即可正常运行。
使用本发明的软件保护方法对软件进行保护,不需要在软件内设 置软合法性检查模块,避免用户使用屏蔽软合法性检查模块的方法盗 用软件。
同时,由于智能卡是安全性能很高的芯片,在智能卡内存储核心 代码的算法、程序逻辑以及输入、输出等内容都是保密的,用户不能 通过反汇编、断点调试等方法获取核心代码,也不能通过光电学的手 段获取核心代码。另外,由于存储在智能卡内的核心代码是不能复制 的,用户也无法通过复制等方法获取核心代码,这样即可有效的防止 用户非法使用软件。
当然,上述实施例中智能卡是通过读卡器与计算机连接的,实际 应该过程中,也可以机将智能卡安装在USB盘内,使用USB接口作为 连接识别与计算机连接,这并不影响本发明的实现。
同样,上述实施例中,存储在智能卡中的特定代码为核心代码, 实际应用中也可以将其它的代码存储到智能卡中。
最后,需要强调的是,本发明不限于上述实施方式,诸如特定代 码的改变、连接设备的改变等微小变化也应该包括在本发明的保护范 围内。
权利要求
1、软件保护方法,所述软件安装在计算机中,该计算机通过连接设备与智能卡连接,该方法包括以下步骤步骤一确定软件程序文件中的特定代码,提取并封装所述特定代码;步骤二在被提取的特定代码处设置程序接口模块;步骤三封装所述程序接口模块,并将封装后的特定代码传送至所述智能卡内;步骤四在计算机中设置命令接口模块,应用所述命令接口模块与连接设备连接。
2、 根据权利要求1所述的软件保护方法,其特征在于 所述步骤二还包括测试所述程序接口模块能否正确调用所述特定代码。
3、 根据权利要求1或2所述的软件保护方法,其特征在于 所述特定代码为软件程序文件的核心代码。
4、 根据权利要求3所述的软件保护方法,其特征在于 所述核心代码为程序文件中 一段连续的核心代码。
5、 根据权利要求3所述的软件保护方法,其特征在于所述核心代码为程序文件中二段或二段以上的不连续的核心代码。
6、 根据权利要求1或2所述的软件保护方法,其特征在于 所述连接设备为读卡器,所述智能卡通过所述读卡器与计算机连接。
7、 根据权利要求1或2所述的软件保护方法,其特征在于 所述连接设备为USB接口 ,所述智能卡安装在一 USB盘内,并通过所述USB接口与计算机连接。
8、 软件保护系统,包括计算机,所述计算机中安装有所述软件; 通过连接设备与所述计算机连接的智能卡;其特征在于所述软件的程序文件包括一程序接口模块;所述计算机中设有一命令接口模块,所述命令接口模块可在计算 机内与所述程序接口模块进行通信;所述智能卡中存储有从所述程序文件中提取并封装的特定代码。
9、根据权利要求8所述的软件保护系统,其特征在于 所述特定代码为一段或一段以上程序文件的核心代码。
全文摘要
本发明提供一种软件保护方法及其系统,该软件安装在计算机中,该计算机通过连接设备与智能卡连接,该方法包括步骤一确定软件程序文件中的特定代码,提取并封装特定代码;步骤二在被提前特定代码处设置程序接口模块;步骤三封装程序接口模块,将特定代码传送至智能卡内;步骤四在计算机中设置命令接口模块,应用命令接口模块与连接设备连接。该系统包括安装有软件的计算机,通过连接设备与计算机连接的智能卡,其中,软件的程序文件包括程序接口模块,计算机中设有命令接口模块,该命令接口模块可与程序接口模块进行通信,智能卡中存储有从程序文件中提取并封装的特定代码。本发明将软件的部分代码存储在智能卡中,有效对软件进行保护。
文档编号G06F21/00GK101183416SQ20071003246
公开日2008年5月21日 申请日期2007年12月10日 优先权日2007年12月10日
发明者施伟周 申请人:东信和平智能卡股份有限公司