一种基于Windows平台软件的保护方法及装置制造方法及图纸

技术编号:26598104 阅读:21 留言:0更新日期:2020-12-04 21:20
本发明专利技术的实施例提供了一种基于Windows平台软件的保护方法及装置。所述方法包括对目标程序进行加壳处理,生成加壳后的程序文件;响应于密码输入指令,对所述加壳后的程序文件进行反调试判断,如果当前程序正在被调试,则退出程序;否则,通过执行所述加壳后的程序文件对目标程序进行执行。以此方式,可以有效地对抗破解者对软件目标程序代码的破解,有利于保护软件核心原代码不被破解和外泄。

【技术实现步骤摘要】
一种基于Windows平台软件的保护方法及装置
本专利技术的实施例一般涉及软件加密领域,并且更具体地,涉及一种基于Windows平台软件的保护方法及装置。
技术介绍
软件产品的复制相当容易,非法用户在未经许可下对软件进行复制和使用,严重损害了软件开发部门的经济利益和软件版权,对计算机软件的发展造成不利的影响。因而从技术上采取一定的防范措施就尤显重要。目前,软件保护技术主要包括软件加密和硬件加密两种方法,例如基于软件的加密壳保护和基于硬件的加密锁保护。用硬件保护是一种较为安全的技术,但由于成本过高,目前主流的还是使用软件壳的形式来保护软件。软件壳主要分为两种:加密壳,主要用加密算法对程序代码进行加密保护,常见的加密壳有:VMP壳、ASProtecct壳以及Themida壳等。压缩壳,主要用压缩算法对程序进行压缩,减少程序大小,常见的压缩壳有:UPX壳、NPack壳以及ASPack壳等。市面上虽有大量现成的软件壳,但是这些已经被透彻研究,很容易被破解,甚至出现一些一键脱壳工具,例如:unaspack、unpecompact以及caspr等。同时,在软件保护领域中,目前尚未有国密在其中的利用,本方法正是将国密SM4算法和国密SM3算法结合使用,使得软件更加安全可靠,促进国密算法在软件保护领域中的运用。
技术实现思路
根据本专利技术的实施例,提供了一种基于Windows平台软件的保护方案。在本专利技术的第一方面,提供了一种基于Windows平台软件的保护方法。该方法包括:对目标程序进行加壳处理,生成加壳后的程序文件;响应于密码输入指令,对所述加壳后的程序文件进行反调试判断,如果当前程序正在被调试,则退出程序;否则,通过执行所述加壳后的程序文件对目标程序进行执行。进一步地,所述通过加壳器对目标程序进行加壳处理,包括:判断目标程序文件是否为PE文件,如果是,则对目标程序代码段进行压缩;否则结束;将压缩后的目标程序代码段进行加密处理,得到加密后的目标程序代码段;将壳程序的代码段复制到所述目标程序代码段的尾部,得到加入壳程序的目标程序;将所述加入壳程序的目标程序的程序入口点设置到壳程序,并保存目标程序的入口点;通过配置目标程序中的数据目录表,对导入表进行处理;将壳程序的重定位表中,每一项数据均修改为基于EXE程序默认加载基址的数据。进一步地,所述加密处理,包括:使用国密SM4算法对压缩后的目标程序代码段进行加密,其中,通过国密SM3算法计算密钥的哈希值,并保存在程序中。进一步地,所述通过配置目标程序中的数据目录表,对导入表进行处理,包括:将目标程序的数据目录表中的导入表虚拟地址偏移项和导入表虚拟地址大小项设置为0,得到修改后的导入表;设置一内存空间,将修改后的导入表导入所述内存空间,并删除原导入表。进一步地,所述对所述加壳后的程序文件进行反调试判断,包括:检测当前进程环境块偏移为0x2的值是否为零值,如果是,则当前进程处于未被调试;否则,当前进程正被调试。进一步地,所述通过执行所述加壳后的程序文件对目标程序进行执行,包括:通过国密SM3算法计算出输入的密码对应的哈希值,与程序中保存的哈希值进行匹配,如果匹配一致,则将所述密码作为密钥;否则退出程序;通过国密SM4算法,根据所述密钥对所述加壳后的程序文件中的代码段进行解密,得到解密后的代码段;将解密后的代码段进行解压,得到解压后的代码段;获取解压后的代码段中目标程序的重定位表中的地址,对所述重定位表进行修复;从内存空间中读取目标程序的导入表,对导入表进行修复;跳转到目标程序的入口点,对目标程序进行执行。进一步地,对所述壳程序的代码段进行反静态分析处理。在本专利技术的第二方面,提供了一种基于Windows平台软件的保护装置。该装置包括:加壳处理模块,用于对目标程序进行加壳处理,生成加壳后的程序;反调试模块,用于响应密码输入指令,对所述加壳后的程序进行反调试判断,如果当前程序正在被调试,则退出程序;否则,调用执行模块;执行模块,用于通过执行所述加壳后的程序对目标程序进行执行。在本专利技术的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。在本专利技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本专利技术的第一方面的方法。应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本专利技术的实施例的关键或重要特征,亦非用于限制本专利技术的范围。本专利技术的其它特征将通过以下的描述变得容易理解。本专利技术能够基于国密算法为原代码进行加壳,并且通过反调试过程,有效地对抗破解者对软件原代码的破解,有利于保护软件核心原代码不被破解和外泄。附图说明结合附图并参考以下详细说明,本专利技术各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本专利技术的实施例的基于Windows平台软件的保护方法的流程图;图2示出了根据本专利技术的实施例的加壳处理过程流程图;图3示出了根据本专利技术的实施例的执行加壳后的程序流程图;图4示出了根据本专利技术的实施例的基于Windows平台软件的保护装置的方框图;图5示出了根据本专利技术的实施例的加壳处理模块的方框图;图6示出了根据本专利技术的实施例的执行模块的方框图;图7示出了能够实施本专利技术的实施例的示例性电子设备的方框图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的全部其他实施例,都属于本专利技术保护的范围。另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本专利技术中,能够基于国密算法为原代码进行加壳,并且通过反调试过程,有效地对抗破解者对软件原代码的破解,有利于保护软件核心原代码不被破解和外泄。图1示出了本专利技术实施例的基于Windows平台软件的保护方法的流程图。该方法包括:S101、对目标程序进行加壳处理,生成加壳后的程序文件。所述目标程序即为拟保护的程序文件。所述S101通过加壳器实现。所述对目标程序进行加壳处理,如图2所示,包括:S201、判断目标程序文件是否为PE文件,如果是,则对目标程序代码段进行压缩;本文档来自技高网
...

【技术保护点】
1.一种基于Windows平台软件的保护方法,其特征在于,包括:/n对目标程序进行加壳处理,生成加壳后的程序文件;/n响应于密码输入指令,对所述加壳后的程序文件进行反调试判断,如果当前程序正在被调试,则退出程序;否则,通过执行所述加壳后的程序文件对目标程序进行执行。/n

【技术特征摘要】
1.一种基于Windows平台软件的保护方法,其特征在于,包括:
对目标程序进行加壳处理,生成加壳后的程序文件;
响应于密码输入指令,对所述加壳后的程序文件进行反调试判断,如果当前程序正在被调试,则退出程序;否则,通过执行所述加壳后的程序文件对目标程序进行执行。


2.根据权利要求1所述的方法,其特征在于,所述通过加壳器对目标程序进行加壳处理,包括:
判断目标程序文件是否为PE文件,如果是,则对目标程序代码段进行压缩;否则结束;
将压缩后的目标程序代码段进行加密处理,得到加密后的目标程序代码段;
将壳程序的代码段复制到所述目标程序代码段的尾部,得到加入壳程序的目标程序;
将所述加入壳程序的目标程序的程序入口点设置到壳程序,并保存目标程序的入口点;
通过配置目标程序中的数据目录表,对导入表进行处理;
将壳程序的重定位表中,每一项数据均修改为基于EXE程序默认加载基址的数据。


3.根据权利要求2所述的方法,其特征在于,所述加密处理,包括:
使用国密SM4算法对压缩后的目标程序代码段进行加密,其中,通过国密SM3算法计算密钥的哈希值,并保存在程序中。


4.根据权利要求2所述的方法,其特征在于,所述通过配置目标程序中的数据目录表,对导入表进行处理,包括:
将目标程序的数据目录表中的导入表虚拟地址偏移项和导入表虚拟地址大小项设置为0,得到修改后的导入表;
设置一内存空间,将修改后的导入表导入所述内存空间,并删除原导入表。


5.根据权利要求1所述的方法,其特征在于,所述对所述加壳后的程序文件进行反调试判断,包括:
检...

【专利技术属性】
技术研发人员:刘加勇刘仟丰
申请(专利权)人:北京华云安信息技术有限公司
类型:发明
国别省市:北京;11

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

1