基于KeilC51的软件保护开发的方法和系统的制作方法

文档序号:6573465阅读:752来源:国知局
专利名称:基于Keil C51的软件保护开发的方法和系统的制作方法
技术领域
本发明涉及信息安全领域,特别涉及一种基于Keil C51的软件保护开发的方法和系统。
背景技术
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。KeiluVision2是一个标准的Windows应用程序,集成了C51编译器、A51汇编器、L51连接器、实时操作系统、项目管理器及调试器等,可以完成编辑、编译、链接、调试及仿真等整个开发流程,开发人员可以用IDE(Integrated Development Environment,集成开发环境)或其它编辑器编辑C或汇编源文件,然后分别由C51及A51编译器编译生成目标文件(.OBJ文件)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS文件)。绝对目标文件由OH51转换成标准的Hex文件,Hex文件可由仿真器使用,直接对目标板进行调试,也可以直接将Hex文件写入程序存贮器,如EPROM(ErasableProgrammable Read-Only Memory,可擦可编程只读存储器)中。
Keil定义了一个AGDI(Advanced Generic Debugger Interface,高级通用调试器接口)接口,用户通过该接口编写DLL来连接仿真机和Keil的IDE,即Keil C51集成开发环境uVision2,uVision2调试器利用高级的AGDI接口,把uVision2调试器绑定到目标系统。Keil还提供了一组编程接口AGSI(Advanced Generic Simulator Interface,高级通用模拟器接口),使用该接口可以开发和硬件功能一致的DLL,嵌入该DLL到Keil C环境,就能直接在纯粹的软件环境下开发C51程序,用户即可在PC机上完全模拟目标程序、指令集和片内外围功能。
软件模拟仿真器是一种单片机开发方法,同样适用于软件保护的开发。这种方法是在PC机上,用软件来实现仿真,并配置一系列相关的服务程序,使用时只要在PC机上运行该软件包,就可以对目标码程序进行调试。
所谓虚拟机,可以把它想象成一台用软件来模拟的机器,在这台机器里有处理器、内存、寄存器等各种硬件,模拟执行各种指令,在这台机器上运行的软件对运行环境没有特殊要求,所以虚拟机对在它上运行的程序是透明的。例如,X86虚拟机模拟的是X86指令程序的运行环境,C51虚拟机模拟的是C51指令程序的运行环境。
目前,信息安全设备生产商会在较高端的硬件设备中实现某种虚拟机功能,因此可以在信息安全设备中直接运行与实现的虚拟机相对应格式的代码,例如,硬件生产商在信息安全设备中实现了C51虚拟机,目前的应用方式就是将C程序通过Keil C51编译器编译成含有C51指令的二进制文件,该格式的文件就是可以在信息安全设备上执行的可执行文件。
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法,也指用于存储文件的磁盘或分区,或文件系统种类。
虚拟文件系统是指通过软件来组织文件的结构和/或模拟一个文件系统的行为,它实现文件系统的全部或一部分功能。
多年来软件被盗版一直是困扰众多开发商的重大难题,所以许多开发商不得不在软件产品的开发过程中就投入精力去编制软件保护功能模块,尤其是那些售价相对较高,面向特定行业的专业软件产品。但是在一个产品的开发过程中投入精力去实现软件保护功能并非总能收到奇效,最终所能达到的保护效果并非总是与投入的精力成正比。毕竟与软件保护及加密相关的功能的开发需要以一定的实践经验为基础,根据软件产品的具体特点,制定软件保护方案,并在软件开发的初期就着手保护方案的量身设计。正是由于软件保护功能实现的复杂性,所以大多开发商还是会选择一套现成的软件保护类产品,并在软件开发的后期结合到自己的产品中去。
在众多的软件保护方面的产品中,多年来软件加密锁产品仍然是为大家所熟悉且被普遍使用的软件保护产品。加密锁也称加密狗,是一种带有独立CPU、RAM及非易失存储器的一种小型硬件装置,它可通过计算机的数据通讯接口与计算机连接,能够存储、管理数据,并可预置加密算法功能,同时也可后期自行定制部分算法功能。当一个软件产品结合了加密锁进行保护后,软件就无法离开加密锁而正常运行,这个软件产品就与加密锁硬件无形地绑定在了一起,软件就好象被这个装置锁住了似的,故称加密锁。
加密锁的文件系统与Windows的文件系统类似,是目录/文件结构,文件包括可执行文件,数据文件和密钥文件。可执行文件是在加密锁内部运行的文件。在应用软件运行时,由外部的API接口调用,向该文件传入输入数据,可执行文件在加密锁内部运行后,将结果返回给外部的应用程序。数据文件是存放数据信息的文件。密钥文件是存储RSA密钥对(公钥和私钥)的文件。
现有技术中基于加密锁进行软件保护的一种加密方法原理如下软件开发商将程序的一部分写入到加密锁中而不必在主机上保留这一部分的副本,程序运行时也不会在计算机的内存中出现;在软件中被写入加密锁的那部分程序的位置,加入对加密锁的调用;软件运行时,这些被移植的程序将在加密锁中内部运行,并将结果返回给软件。由于软件的一部分程序被移植到加密锁中,很明显,安装在计算机上的软件离开了加密锁就不可能正常工作,从而实现对软件的保护。
上述软件保护开发流程一般包括以下几个步骤1.开发软件开发商选择关键代码通过加密锁兼容的编译器,将这些代码编译成本地代码,即可执行文件;2.调试对于被移植的代码进行调试,可以将其下载到加密锁中进行调试,也可以通过软件仿真器在PC内仿真真实的加密锁设备来对其进行调试;3.下载调试成功后,将可执行文件及可执行文件在运行时需要访问的可执行文件、数据文件、密钥文件等相关文件下载到加密锁内部;4.测试软件开发商对整套软件进行测试,包括对下载到加密锁内部的可执行文件和PC端的软件进行调用测试;5.生产软件开发商多次重复下载的步骤进行批量烧制。
上述现有技术存在如下缺点1.若下载到加密锁进行调试,则效率低、成本高;若利用软件仿真器仿真来进行调试,则不能完全模拟真实硬件的功能,比如软件仿真器不能执行与硬件相关的功能;2.在烧制和生产的过程中,用户必须得手动配置调试过程中可执行程序运行时所访问的可执行文件、数据文件、密钥文件等相关资源环境,而这些文件在调试过程中可能被改写,即预先配置的文件与调试过程中的文件内容可能不相同,会导致烧制环境与虚拟环境不一致,从而不能保证准确性;如果用户反复重新配置资源,则使得操作复杂化。

发明内容
为了解决上述问题,本发明提供了一种基于Keil C51的软件保护开发的方法和系统。
本发明提供的基于Keil C51的软件保护开发的方法包括将软件的核心程序转换成C51语言的源代码;在虚拟文件系统中配置调试所述源代码时所访问的文件和软件保护装置的硬件设备信息;编译所述源代码生成C51本地代码,Keil调试器模拟所述软件保护装置的运行状态,调试所述源代码;调试成功后,将调试后的C51本地代码下载到所述虚拟文件系统中,并生成虚拟文件系统镜像;将所述虚拟文件系统镜像写入所述软件保护装置中。
通过计算机的文件或内存模拟所述虚拟文件系统。
所述虚拟文件系统为单独的软件、库或模块。
所述虚拟文件系统能够实现虚拟的目录和/或文件结构。
在所述Keil调试器调试所述源代码之前还包括通过AGDI或AGSI接口编写所述Keil调试器。
所述方法还包括所述Keil调试器在调试过程中修改所述虚拟文件系统的内容。
所述方法还包括所述Keil调试器在调试过程中读取所述虚拟文件系统中的文件和获取所述虚拟文件系统中的信息。
所述运行状态包括输入数据和/或输出数据。
所述虚拟文件系统镜像包括所述虚拟文件系统的目录结构信息。
所述虚拟文件系统镜像包括所述虚拟文件系统的文件结构信息。
所述虚拟文件系统镜像包括所述虚拟文件系统中的文件内容信息。
所述虚拟文件系统镜像包括所述虚拟文件系统中的所述软件保护装置的硬件设备信息。
所述软件保护装置的硬件设备信息包括口令信息和/或ATR。
本发明提供的基于Keil C51的软件保护开发的系统包括接口模块,用于连接所述系统与Keil的集成环境;虚拟文件系统配置模块,用于在虚拟文件系统中配置调试C51语言的源代码时所访问的文件和软件保护装置的硬件设备信息;系统调用模块,用于调用实现所述软件保护装置功能的函数;C51虚拟机模块,用于解释并执行C51指令,并通过调用所述系统调用模块和所述虚拟文件系统来调试所述源代码;Keil的集成环境通过所述接口模块加载和/或调用所述C51虚拟机模块;下载模块,用于当调试成功后,将调试后的C51本地代码下载到所述虚拟文件系统中,并生成虚拟文件系统镜像;将所述虚拟文件系统镜像写入所述软件保护装置中;Keil的集成环境通过所述接口模块加载和/或调用所述下载模块;硬件访问模块,用于在所述下载模块将所述虚拟文件系统镜像写入所述软件保护装置的过程中,与所述软件保护装置进行通信。
所述接口模块实现AGDI接口或AGSI接口。
所述系统调用模块还用于在所述调试过程中被调用来修改所述虚拟文件系统的内容。
所述系统调用模块还用于在所述调试过程中被调用来读取所述虚拟文件系统中的文件和获取所述虚拟文件系统中的信息。
本发明既能保证软件开发商简化自己的软件保护开发过程,又能保证开发过程的准确性。调试器在调试过程中可以调用虚拟文件系统,集中管理可执行文件在运行时所访问的资源环境,在软件保护开发的各个环节无需再重新配置这些资源环境,从而降低了出错几率,保证了准确性,也简化了软件开发商进行软件保护开发过程。结合虚拟文件系统的Keil调试器相当于一个真实卡的模拟环境,可以完成全部加密锁内部系统函数的功能,克服了软件仿真器不能完全模拟真实硬件设备功能的问题。


图1是本发明实施例基于Keil C51的软件保护开发的方法流程图;图2是本发明实施例基于Keil C51的软件保护开发的系统结构图。
具体实施例方式
下面结合附图和具体实施例对本发明作进一步说明,但本发明不局限于下面的实施例。
参见图1,本发明实施例提供了一种基于Keil C51的软件保护开发的方法,具体包括以下步骤步骤101软件开发商使用高级语言开发软件;步骤102选择核心程序,将其转换成C51语言的源代码;步骤103在虚拟文件系统中配置调试源代码时所访问的文件和所访问的软件保护装置的硬件设备信息;虚拟文件系统可以通过计算机的文件或内存模拟,它可以为单独的软件、库或模块,能够实现虚拟的目录和/或文件结构;步骤104编译C51语言的源代码生成C51本地代码;步骤105Keil调试器模拟软件保护装置的运行状态,调试C51语言的源代码;Keil调试器为通过AGDI接口或AGSI接口编写,在调试过程中它可以修改虚拟文件系统的内容,还可以读取虚拟文件系统中的文件和获取虚拟文件系统中的信息,其中修改包括在虚拟文件系统中创建目录和/或文件,删除目录和/或文件,写入文件内容信息;运行状态包括输入数据和/或输出数据;步骤106调试成功后,下载C51本地代码到虚拟文件系统中,并生成虚拟文件系统镜像;虚拟文件系统镜像可以包括虚拟文件系统的目录结构信息、文件结构信息、文件内容信息和虚拟文件系统中软件保护装置的硬件设备信息中的一种或几种,其中软件保护装置的硬件设备信息包括口令信息和/或ATR(Answer To Reset,自动复位响应);步骤107将虚拟文件系统镜像写入软件保护装置中。
参见图2,本发明实施例还提供了一种基于Keil C51的软件保护开发的系统,具体包括(1)接口模块201,用于连接系统与Keil的集成环境;(2)虚拟文件系统配置模块202,用于在虚拟文件系统中配置调试C51语言的源代码时所访问的文件和软件保护装置的硬件设备信息;(3)系统调用模块203,用于调用实现软件保护装置功能的函数;(4)C51虚拟机模块204,用于解释并执行C51指令,并通过调用系统调用模块和虚拟文件系统来调试源代码;Keil的集成环境通过接口模块加载和/或调用C51虚拟机模块;(5)下载模块205,用于当调试成功后,将调试后的C51本地代码下载到虚拟文件系统中,并生成虚拟文件系统镜像;将虚拟文件系统镜像写入软件保护装置中;Keil的集成环境通过接口模块加载和/或调用下载模块;(6)硬件访问模块206,用于在下载模块将虚拟文件系统镜像写入软件保护装置的过程中,与软件保护装置进行通信。
接口模块201可以实现AGDI接口或AGSI接口。
系统调用模块203还用于在调试过程中被调用来修改虚拟文件系统的内容,其中修改包括在虚拟文件系统中创建目录和/或文件,删除目录和/或文件,写入文件内容信息。
系统调用模块203还用于在调试过程中被调用来读取虚拟文件系统中的文件和获取虚拟文件系统中的信息。
以上所述的实施例,只是本发明较优选的具体实施方式
,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
权利要求
1.一种基于Keil C51的软件保护开发的方法,其特征在于,所述方法包括将软件的核心程序转换成C51语言的源代码;在虚拟文件系统中配置调试所述源代码时所访问的文件和软件保护装置的硬件设备信息;编译所述源代码生成C51本地代码,Keil调试器模拟所述软件保护装置的运行状态,调试所述源代码;调试成功后,将调试后的C51本地代码下载到所述虚拟文件系统中,并生成虚拟文件系统镜像;将所述虚拟文件系统镜像写入所述软件保护装置中。
2.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,通过计算机的文件或内存模拟所述虚拟文件系统。
3.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统为单独的软件、库或模块。
4.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统能够实现虚拟的目录和/或文件结构。
5.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,在所述Keil调试器调试所述源代码之前还包括通过AGDI或AGSI接口编写所述Keil调试器。
6.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述方法还包括所述Keil调试器在调试过程中修改所述虚拟文件系统的内容。
7.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述方法还包括所述Keil调试器在调试过程中读取所述虚拟文件系统中的文件和获取所述虚拟文件系统中的信息。
8.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述运行状态包括输入数据和/或输出数据。
9.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统镜像包括所述虚拟文件系统的目录结构信息。
10.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统镜像包括所述虚拟文件系统的文件结构信息。
11.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统镜像包括所述虚拟文件系统中的文件内容信息。
12.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述虚拟文件系统镜像包括所述虚拟文件系统中的所述软件保护装置的硬件设备信息。
13.根据权利要求1所述的基于Keil C51的软件保护开发的方法,其特征在于,所述软件保护装置的硬件设备信息包括口令信息和/或ATR。
14.一种基于Keil C51的软件保护开发的系统,其特征在于,所述系统包括接口模块,用于连接所述系统与Keil的集成环境;虚拟文件系统配置模块,用于在虚拟文件系统中配置调试C51语言的源代码时所访问的文件和软件保护装置的硬件设备信息;系统调用模块,用于调用实现所述软件保护装置功能的函数;C51虚拟机模块,用于解释并执行C51指令,并通过调用所述系统调用模块和所述虚拟文件系统来调试所述源代码;Keil的集成环境通过所述接口模块加载和/或调用所述C51虚拟机模块;下载模块,用于当调试成功后,将调试后的C51本地代码下载到所述虚拟文件系统中,并生成虚拟文件系统镜像;将所述虚拟文件系统镜像写入所述软件保护装置中;Keil的集成环境通过所述接口模块加载和/或调用所述下载模块;硬件访问模块,用于在所述下载模块将所述虚拟文件系统镜像写入所述软件保护装置的过程中,与所述软件保护装置进行通信。
15.根据权利要求14所述的基于Keil C51的软件保护开发的系统,其特征在于,所述接口模块实现AGDI接口或AGSI接口。
16.根据权利要求14所述的基于Keil C51的软件保护开发的系统,其特征在于,所述系统调用模块还用于在所述调试过程中被调用来修改所述虚拟文件系统的内容。
17.根据权利要求14所述的基于Keil C51的软件保护开发的系统,其特征在于,所述系统调用模块还用于在所述调试过程中被调用来读取所述虚拟文件系统中的文件和获取所述虚拟文件系统中的信息。
全文摘要
本发明提供了一种基于Keil C51的软件保护开发的方法和系统,属于信息安全领域。为了解决现有技术中或效率低、成本高,或不能完全模拟真实硬件的功能,以及用户必须反复配置带来操作复杂化等问题,本发明提供了所述方法和系统。方法包括将软件的核心程序转换成C51语言的源代码;在虚拟文件系统中配置调试源代码时所访问的文件和软件保护装置的硬件设备信息;编译源代码生成C51本地代码,调试源代码;成功后下载C51本地代码并将生成的虚拟文件系统镜像写入该装置中。系统包括接口模块、虚拟文件系统配置模块、系统调用模块、C51虚拟机模块、下载模块和硬件访问模块。本发明简化了软件保护开发的过程,保证了开发的准确性。
文档编号G06F21/22GK101030241SQ20071006528
公开日2007年9月5日 申请日期2007年4月10日 优先权日2007年4月10日
发明者陆舟, 于华章 申请人:北京飞天诚信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1