[发明专利]软件保护方法和装置在审
申请号: | 201710473369.8 | 申请日: | 2017-06-21 |
公开(公告)号: | CN107292131A | 公开(公告)日: | 2017-10-24 |
发明(设计)人: | 孙吉平;周建辉 | 申请(专利权)人: | 北京深思数盾科技股份有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14 |
代理公司: | 北京德琦知识产权代理有限公司11018 | 代理人: | 孙清然,王琦 |
地址: | 100193 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 保护 方法 装置 | ||
1.一种软件保护方法,其特征在于,包括:
a、根据.NET代码,生成相应的.NET数据结构,从所述.NET数据结构中抽取待保护方法代码;
b、将所述待保护的方法代码转换为虚拟化代码;
c、在抽取所述待保护方法代码的位置处添加用于调用x86/x64虚拟机的指令代码,所述x86/x64虚拟机用于执行所述虚拟化代码。
2.根据权利要求1所述的方法,其特征在于,所述调用x86/x64虚拟机的指令代码包括虚拟化代码参数、装箱代码、用于调用虚拟机方法的第一call代码和拆箱代码。
3.根据权利要求1所述的方法,其特征在于,所述生成相应的.NET数据结构之后还包括:
将所述x86/x64虚拟机添加至所述.NET数据结构的全局数组中;
将内存加载方法增加到所述.NET数据结构中,所述内存加载方法用于获取虚拟机入口地址并加载所述x86/x64虚拟机;
如果所述.NET数据结构中不存在.cctor方法,则将.cctor方法添加至所述.NET数据结构中,其中,所述.cctor方法中包括第二call代码和Marshal库;
所述第二call代码用于调用所述内存加载方法;
所述Marshal库用于将虚拟机入口地址作为参数生成调用虚拟机的方法,并将虚拟机方法保存到全局变量中。
4.根据权利要求1所述的方法,其特征在于,所述根据.NET代码,生成相应的.NET数据结构包括:
获取所述.NET代码的.NET元数据;
解析所述.NET元数据,根据所包含的方法函数体,生成相应的.NET数据结构。
5.根据权利要求1所述的方法,其特征在于,所述步骤b具体包括:
根据分块标准,将所述待保护的方法代码分成若干子代码块;
将每个所述子代码块转换为虚拟化代码。
6.根据权利要求5所述的方法,其特征在于,所述分块标准包括:
跳转指令的目标地址作为块首,或者,Call指令的下一条指令作为块首。
7.根据权利要求5所述的方法,其特征在于,所述将每个所述子代码块转换为虚拟化代码包括:
将所述子代码块转换成IR指令;
将所述IR指令转换为虚拟化代码,其中,所述虚拟化代码被封装成数组并且保存在全局变量中。
8.根据权利要求1中所述的方法,其特征在于,步骤c之后还包括,重新编译所述.NET数据结构,利用编译后的.NET数据结构生成.NET元数据,作为所述.NET代码新的.NET元数据。
9.一种软件保护装置,其特征在于,包括:
抽取单元,用于根据.NET代码,生成相应的.NET数据结构,从所述.NET数据结构中抽取待保护方法代码;
转换单元,用于将所述待保护的方法代码转换为虚拟化代码;
替换单元,用于在抽取所述待保护方法代码的位置处添加用于调用x86/x64虚拟机的指令代码,所述x86/x64虚拟机用于执行所述虚拟化代码。
10.根据权利要求9所述的装置,其特征在于,所述调用x86/x64虚拟机的指令代码包括虚拟化代码参数、装箱代码、用于调用虚拟机方法的第一call代码和拆箱代码。
11.根据权利要求9所述的装置,其特征在于,所述抽取单元,进一步用于在所述生成相应的.NET数据结构之后,将所述x86/x64虚拟机添加至所述.NET数据结构的全局数组中;将内存加载方法增加到所述.NET数据结构中,所述内存加载方法用于获取虚拟机入口地址并加载所述x86/x64虚拟机;如果所述.NET数据结构中不存在.cctor方法,则将.cctor方法添加至所述.NET数据结构中,其中,所述.cctor方法中包括第二call代码和Marshal库;所述call代码用于调用所述内存加载方法;所述Marshal库用于将虚拟机入口地址作为参数生成调用虚拟机的方法,并将虚拟机方法保存到全局变量中。
12.根据权利要求9所述的装置,其特征在于,所述抽取单元,用于获取所述.NET代码的.NET元数据;解析所述.NET元数据,根据所包含的方法函数体,生成相应的.NET数据结构。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京深思数盾科技股份有限公司,未经北京深思数盾科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710473369.8/1.html,转载请声明来源钻瓜专利网。