[发明专利]一种使用软件保护装置存储程序代码实现软件保护的方法有效
申请号: | 200810103665.X | 申请日: | 2008-04-10 |
公开(公告)号: | CN101261664A | 公开(公告)日: | 2008-09-10 |
发明(设计)人: | 孙吉平;韩勇 | 申请(专利权)人: | 北京深思洛克数据保护中心 |
主分类号: | G06F21/00 | 分类号: | G06F21/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100086北京市海淀区中*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 使用 软件 保护装置 存储 程序代码 实现 保护 方法 | ||
技术领域
本发明涉及软件保护技术,特别涉及一种使用软件保护装置存储程序代码实现软件保护的方法。
背景技术
软件保护装置是实现软件安全保护和版权保护的主要手段。软件保护装置特指一种附加在计算机接口(比如,USB接口、串口、并口等接口)上的硬件设备,对运行在计算机上的特定的软件进行软件安全保护和版权保护。现代的软件保护装置,例如USB加密锁,采用高强度智能卡芯片和先进的密码学技术,具有一定的运算和存储能力,同时难以被破解和复制,在高强度软件版权保护中具有广泛的应用。
采用软件保护装置进行软件保护的通常的方法是将其视作一个与受保护软件并行的运算平台,将软件中的一部分功能移植到软件保护装置中实现,在软件运行时调用这些功能。软件破解者的目的是使得被保护软件在没有连接软件保护装置时也能正常工作,或者制造可以克隆软件保护装置功能的硬件装置。理想情况下,受保护软件的运行依赖于软件保护装置提供的预算功能,而破解者又无法复制软件保护装置,因此可以很好的保护软件。
为了达到一定的保护强度,被移植的功能应该是一定复杂性、且非常见的算法,而且输入输出的数据空间必须足够大,同时又适合在软件保护装置中有限的存储和计算条件下运行。在实际情况中要找到软件中满足上述要求的功能模块并非易事,通常要在安全强度和运行效率之间权衡。另外,由于软件保护装置和PC主机是完全不同的硬件运算平台,软件开发商需要将原先在PC上的功能在软件保护装置的开发平台上重新编程实现,具有一定的技术难度,因此提高了软件开发和维护成本。
发明内容
有鉴于此,本发明提出了一种使用软件保护装置存储应用程序代码进行软件保护的方法。本发明将可执行程序中的部分机器指令或脚本语言存储在软件保护装置中,在程序运行时动态的从软件保护装置中取出并在PC上执行,在保护程序的代码同时无需进行代码移植,易于实现。同时由于受保护代码是在PC上执行,因此不影响程序的运行效率,可以对程序中多段代码进行存储保护,提高了软件的保护强度。
参见图1,利用软件保护装置存储程序代码进行软件保护的方法,具体包括:
步骤101,从受保护软件的可执行程序文件中选取若干代码段,将代码段数据和起始地址存储到软件保护装置中,擦除代码段内容,并在代码段起始处写入调用软件保护装置的指令。
步骤102,软件运行到被保护代码部分时执行预先写入的调用软件保护装置的指令,计算被保护代码段的起始地址,将其发送到软件保护装置中。软件保护装置根据被保护代码段的起始地址找到已存储的代码段数据,返回给软件。
步骤103,软件分配一块内存,将软件保护装置返回的代码段数据存储到该内存中,调用其中的入口函数实现受保护功能,完成后擦除并释放该块内存。
在上述过程中,为了进一步提高软件保护强度,可以采用以下措施:
1.被存储的代码以密文形式从软件保护装置发送到软件,须解密后才可被执行,因此防止了破解者通过监控和记录通信数据获得被存储代码的方法。
2.进一步,解密密钥是软件与软件保护装置协商建立的动态会话密钥,保证了每次取回的代码数据密文都不相同。
3.被存储的代码中可以包含对软件保护装置的再次调用,因此软件要正常运行,首先要从软件保护装置中读取被存储代码,而在执行该段代码时仍需要调用软件保护装置的功能,这种二次调用方式可以有效的防止破解者复制被存储代码。
4.进一步,在上述二次调用软件保护装置功能时传入的参数是由软件保护装置在返回该段代码时动态生成的,软件保护装置在处理二次调用时检查传入参数的合法性,这样保证了软件每次执行的被移植代码是不同的,并且与软件保护装置结合紧密。
根据本发明的一个方面,提供一种使用软件保护装置实现软件保护的方法,其特征在于,该方法包括步骤:
A、将受保护软件的可执行程序的若干段代码段数据和起始地址存储到软件保护装置中;
B、在受保护软件中擦除上述代码段数据;
C、在代码段起始位置处写入调用软件保护装置的指令;
D、当软件运行到某个已转移存储到软件保护装置中的被保护代码段时,将所述代码段的起始地址发送给软件保护装置;
E、软件保护装置返回相应的代码段数据;
F、软件将代码段数据存储到内存中,并执行该代码段数据。
根据本发明的一个方面,其特征还在于,在步骤F之后还包括步骤:
G、执行完成后擦除该段内存数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京深思洛克数据保护中心,未经北京深思洛克数据保护中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810103665.X/2.html,转载请声明来源钻瓜专利网。