当前位置: 首页 > 专利查询>武汉大学专利>正文

一种在软件源代码未知情况下对可执行文件进行加密方法技术

技术编号:6981885 阅读:460 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种在软件源代码未知情况下对可执行文件进行加密方法。在源代码未知的情况下,实现对软件的可执行文件的加密。用户可以通过已注入的自定义的动态链接库获取计算机的网卡MAC地址,将已获取的MAC地址和应用软件的信息相糅合,作为唯一标识用户的申请码,以电话、email、传真等方式向软件版权拥有者申请运行软件所需的许可文件。软件版权拥有者对用户提供的申请码以及对用户的限制条件通过自定义加密组件进行加密,生成一个许可文件,其中记录了申请码、对用户的限制信息以及经加密生成的密钥,将许可文件反馈到用户端。该加密算法不需要对硬件和软件做较大的改动,方法简单,而且有效的降低了软件的侵权。

【技术实现步骤摘要】

本专利技术涉及一种加密方法,尤其是涉及。
技术介绍
HOOK API技术是指截获特定进程或系统对某个API函数的调用,使得API的执行流程转向指定的代码。Windows下的应用程序都有自己的地址空间,它们只能调用自己地址空间中的函数,所以在HOOK API之前,必须将一个可以代替API执行的自定义函数(一般称这个函数为代理函数)的执行代码注入到目标进程,然后再想办法将目标进程对该API的调用改为对注入到目标进程中的自定义调用,这样可以实现API函数的拦截。在Windows 下,截获API是一项相当有用的技术,它使得用户有机会干预其他应用程序的程序流程。本专利技术中采用较简单的一种拦截方法,在这个被注入到目标进程的DLL中写一个与要HOOK的 API函数的签名完全相同的函数(即代理函数),然后让目标进程加载这个DLL。当执行初始化代码的时候,目标进程对这个API的调用全部改为了对代理函数的调用,即可API函数的拦截。RSA加密算法是第一个较为完善的公开密钥算法。到目前为止,RSA仍然是最容易理解和实现的一种公钥算法,并且在世界上许多地方已成为事实上的标准,而且是密码学上十分成熟的算法,广泛用于数据的加密和数字签名。该算法采用一对公钥和私钥,从公钥难以推出私钥,反之从私钥也很难推出公钥。软件加密一词来源已久,是厂商为了保护软件开发商的利润而采取的一种软件保护方式。目前已存在多种软件加密保护技术,如序列号保护、时间限制、Key File保护、加密狗等方式。但是,目前大部分软件加密都在软件的源代码中进行开发的,尚缺少一种在软件源代码未知的情况下进行加密的方法。本专利技术实现对软件的可执行文件进行加密的方法。所以,研究一种能在软件源代码未知的情况下的进行加密的算法也势在必行。
技术实现思路
本专利技术主要是解决现有技术所存在的技术问题;提供了一种实现了 “一机一许可文件”,即一台计算机对应一个许可文件,那么即使某些许可文件被破解传播也不能在其他计算机上使用。而且保护方法实现起来比较简单,不需要对硬件以及软件做出大的改动,不需要增加额外的成本,并且大大的降低了对软件进行加密的难度,也有效的减少了软件侵权的。本专利技术的上述技术问题主要是通过下述技术方案得以解决的,其特征在于该方法包括以下步骤步骤1,启动已注入自定义动态链接库的可执行文件; 步骤2,检查许可文件是否存在;步骤3,若许可文件不存在,向用户提供本地机器的计算机网卡MAC地址以及应用软件信息,并要求用户提供许可文件;步骤4,用户以电话、传真、email等方式向软件版权拥有者递交该计算机的申请码; 步骤5,软件版权拥有者通过加密组件对用户提交的申请码和要授予软件的限制信息进行加密,生成许可文件;步骤6,软件版权拥有者以email、Internet方式将许可文件反馈到用户端; 步骤7,用户启动软件,客户端验证许可文件是否有效; 步骤8,若许可文件有效,则运行软件;本专利技术创造性的提供了一种用于软件加密的方法。在软件源代码未知的情况下,对软件的可执行文件进行加密。在此加密算法中,可以利用计算机的网卡MAC地址、应用软件信息以及授予用户的限制信息生成密钥,实现了“一机一许可文件”,即一台计算机对应一个许可文件,那么即使某些许可文件被破解传播也不能在其他计算机上使用。而且保护方法实现起来比较简单,不需要对硬件以及软件做出大的改动,不需要增加额外的成本,并且大大的降低了对软件进行加密的难度,也有效的减少了软件的侵权。在上述的,该方法还包括以下步骤所述的步骤2中,检查许可文件是否存在,若许可文件存在,则执行步骤7。在上述的,该方法还包括以下步骤所述步骤7中,步骤3. 1,若许可文件无效,向用户提供本地机器的计算机网卡MAC地址,并要求用户提供许可文件;步骤3. 2,执行步骤4。在上述的,所述步骤5 中,生成许可文件的具体方法为根据计算机的硬件信息、应用软件信息以及用户运行软件的限制信息,生成唯一标识用户的标识码。在此过程中,需要软件版权拥有者拥有自定义的加密组件。在此方法中,自定义加密组件对信息进行加密的过程为根据自身需要,可以在自定义加密组件对话框中定义需要的信息选项,要求向自定义加密最组件提供用户的计算机硬件信息、软件信息以及对用户的限制信息后,自定义加密组件可以根据MD5算法对用户信息进行加密,生成产品密钥,并将用户标识码和密钥存储于一文件中,作为用户运行软件的许可文件。在上述的,所述的步骤 1中,向可执行文件中注入自定义动态链接库的具体方法为通过API HOOK技术对选定的目标函数进行拦截,该目标函数具有在程序的运行过程中执行且只被执行一次的特点。在目标函数执行之前注入自定义的动态连接库,该动态链接库中可以完成用户自定义的用户注册、许可文件的验证等操作。在上述的,所述步骤75中,客户端验证许可文件是否有效的具体方法为在用户启动软件时,首先检查许可文件是否存在,若存在则对许可文件的有效性进行验证,首先检查许可文件中存放的计算机硬件信息是否与本机的计算机硬件信息相同;然后,利用哈希函数将用户标识码转换为哈希序列码,同时,密钥经公钥解密之后得到同样格式的明文,对两者进行比较,若相等,则许可文件有效,顺利运行软件;若许可文件不存在或许可文件无效,则运行软件失败,向用户提供本地机器的计算机硬件信息。在上述的,所述步骤5 中,加密过程采用RSA加密算法,首先对用户标识码通过MD5算法转换为Hash序列码,然后通过私钥加密,生成用户运行软件所需的密钥。然后,将用户标识码以及加密所得的密钥信息存储于一文件中,称此文件为许可文件。在上述的,所述的步骤 1中,动态链接库的注入根据可执行文件的类型,选择在该软件执行过程中必定且只执行一次的API函数,利用API HOOK技术对该函数进行拦截,在目标函数执行之前注入自定义动态链接库。在动态链接库注入之后,系统在调用目标函数之前,会完成对自定义动态链接库的调用。因此,本专利技术具有如下优点实现了 “一机一许可文件”,即一台计算机对应一个许可文件,那么即使某些许可文件被破解传播也不能在其他计算机上使用。而且保护方法实现起来比较简单,不需要对硬件以及软件做出大的改动,不需要增加额外的成本,并且大大的降低了对软件进行加密的难度,也有效的减少了软件的侵权。附图说明图1是本专利技术中软件拥有者根据所得信息生成许可文件的过程。图2是本专利技术中用户启动软件的过程。图3是本专利技术中注入动态连接件库前的函数调用过程。图4是本专利技术中注入自定义动态链接库之后的函数调用过程。具体实施例方式下面通过实施例,并结合附图,对本专利技术的技术方案作进一步具体的说明。实施例,包括以下步骤 步骤1,启动已注入自定义动态链接库的可执行文件;向可执行文件中注入自定义动态链接库的具体方法为如图3为注入动态链接库的过程。在该过程中,在未注入动态链接库前,源函数执行过程可以直接调用目标函数(如箭头1所示),在目标函数执行完成后,通过直接返回(如箭头2所示)源函数。通过API HOOK技术对选定的目标函数进行拦截,该目标函数具有在程序的运行过程中执行且只被执行一次的特点。在目标函数执行之前注入自定义的动态连接库,该动态链接库中可以完成用户自定义的用户注册、许可文件的验证等操作。动态链接库的注入根据可执行文件的本文档来自技高网
...

【技术保护点】
1.一种在软件源代码未知情况下对可执行文件进行加密方法,其特征在于,包括以下步骤:步骤1,启动已注入自定义动态链接库的可执行文件;步骤2,检查许可文件是否存在;步骤3,若许可文件不存在,向用户提供本地机器的计算机网卡MAC地址以及应用软件信息,并要求用户提供许可文件;步骤4,用户以电话、传真、email方式向软件版权拥有者递交该计算机的申请码;步骤5,软件版权拥有者通过加密组件对用户提交的申请码和要授予软件的限制信息进行加密,生成许可文件;步骤6,软件版权拥有者以email、Internet方式将许可文件反馈到用户端;步骤7,用户启动软件,客户端验证许可文件是否有效;步骤8,若许可文件有效,则运行软件。

【技术特征摘要】

【专利技术属性】
技术研发人员:苏科华章登义李洁付虹博
申请(专利权)人:武汉大学
类型:发明
国别省市:83

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1