System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及虚拟机,尤其涉及一种函数保护方法及装置。
技术介绍
1、如今软件成为了生活中的重要组成部分,生活的方方面面都与软件相关。但是随着软件行业的高速发展,软件数据安全也越来越受到重视。对于用户而言,软件数据安全关系到个人的信息安全,财产安全;对于软件开发者而言,他们耗费了大量的人力物力去开发软件,如果软件被轻易的窃取并投放到市场上,也会给他们带来巨大的损失。所以软件保护,软件安全是的大家关注的领域。
2、软件保护的方法有很多,其中虚拟化保护是软件保护中保护能力较强的一种保护方法。虚拟化保护就是在保护后的程序中融入了大量虚拟机解释执行逻辑,攻击者需要先逆向分析出虚拟机内部的执行逻辑,然后才能进一步还原出原程序语义。
3、但是,目前虚拟机内部的调度结构比较单一,这将会成为攻击者逆向分析的脆弱点,进而导致虚拟化保护强度的下降。如何进一步提高虚拟机虚拟化保护的强度,有待进一步研究。
技术实现思路
1、本申请提供了一种函数保护方法及装置,实现了丰富虚拟机内部结构(即一个虚拟机内预置有多个分派器),丰富虚拟机内部的跳转流程,分散汇聚点,提升逆向分析和攻击的难度,从而提高虚拟化保护的安全性。
2、第一方面,本申请提供了一种函数保护方法,方法包括:获取到第一待保护函数,基于第一待保护函数获取到第一虚拟指令和第二虚拟指令;通过第一分派器执行第一虚拟指令;通过第二分派器执行第二虚拟指令;其中,第一分派器和第二分派器不同。
3、其中,第一待保护函数为第
4、可以将第一程序代码中的部分函数作为待保护函数,也可以将第一程序代码中的全部函数作为带保护函数,本申请对此不做限定。
5、通过该方法,实现了丰富虚拟机内部结构(即一个虚拟机内预置有多个分派器),丰富虚拟机内部的跳转流程,分散汇聚点,提升逆向分析和攻击的难度,从而提高函数保护的安全性。
6、结合第一方面,在一种可能的实现方式中,第一分派器为第一虚拟机中的分派器,第二分派器也为第一虚拟机中的分派器。这样,同一个函数可以通过相同的虚拟机保护。
7、结合第一方面,在一种可能的实现方式中,第一分派器为第一虚拟机中的分派器,第二分派器为第二虚拟机中的分派器。这样,同一个函数可以通过不同的虚拟机保护。进一步增大了虚拟机内部的复杂结构。
8、结合第一方面,在一种可能的实现方式中,在获取到第一待保护函数之后,方法还包括:基于第一待保护函数获取到第三虚拟指令;在通过第一分派器执行第一虚拟指令之后,方法还包括:通过第一虚拟指令调用第三虚拟指令,执行第三虚拟指令。这样,虚拟指令之间可以直接相互调度,执行虚拟指令,减少分派器调度虚拟指令的开销。进一步增大了虚拟机内部的复杂的执行结构。
9、结合第一方面,在一种可能的实现方式中,第一虚拟指令的数量为多个;通过第一分派器执行第一虚拟指令,具体包括:通过第一分派器执行第一待保护函数中第一次出现的第一虚拟指令;在通过第一分派器执行第一虚拟指令之后,方法还包括:通过第三分派器执行第一待保护函数中第二次出现的第一虚拟指令;其中,第一分派器和第三分派器不同。这样,同一个待保护函数内同一个虚拟指令可能会多次出现。多次出现的同一个虚拟指令也可以通过不同的分派器执行。
10、可选的,第一分派器和第三分派器也可以相同,即多次出现的同一个虚拟指令也可以通过同一个分派器执行。本申请对此不做限定。
11、结合第一方面,在一种可能的实现方式中,获取到第二待保护函数,基于第二待保护函数获取到第四虚拟指令;通过第四分派器执行第四虚拟指令;其中,第四分派器为第一虚拟机中的分派器或者第二虚拟机中的分派器。
12、第二待保护函数为第二程序代码中的函数。第二程序代码可以和第一程序代码相同,第二程序代码可以和第一程序代码也可以不同。
13、这样,不同的待保护函数,可以通过同一个虚拟机保护,也可以通过不同的虚拟机保护。
14、结合第一方面,在一种可能的实现方式中,在获取到第一虚拟指令之后,在通过第一分派器执行第一虚拟指令之前,方法还包括:基于第一虚拟指令生成多个字节码,多个字节码中每一个字节码由第一虚拟指令和分派器的标识组成;从多个字节码中选择第一字节码,第一字节码由第一虚拟指令和第一分派器的标识组成;通过第一分派器执行第一虚拟指令,具体包括:基于第一字节码中第一分派器的标识从多个分派器中选择第一分派器;通过第一分派器执行第一虚拟指令。
15、这里,分派器的标识可以是第一虚拟机内分派器的标识和/或第二虚拟机内分派器的标识。
16、基于第一字节码中第一分派器的标识从多个分派器中选择第一分派器,这里是随机选择的。
17、这样,通过字节码建立了虚拟指令与多个分派器的联系。
18、结合第一方面,在一种可能的实现方式中,第一虚拟指令对应的字节码的数量与第一虚拟机内分派器的数量相同。
19、在分派器的标识仅包括第一虚拟机内分派器的标识的情况下,第一虚拟指令对应的字节码的数量与第一虚拟机内分派器的数量相同。在分派器的标识仅包括第一虚拟机内分派器的标识的情况下,第一虚拟指令对应的字节码的数量也可以比第一虚拟机内分派器的数量少。
20、在分派器的标识包括第一虚拟机内分派器的标识和第二虚拟机内分派器的标识的情况下,第一虚拟指令对应的字节码的数量比第一虚拟机内分派器的数量多。例如,一共有两个虚拟机,每个虚拟机内偶遇3个分派器,那么一个虚拟指令可以有6个字节码。
21、结合第一方面,在一种可能的实现方式中,通过第一分派器执行第一虚拟指令,具体包括:通过第一分派器调用第一虚拟指令执行模块执行第一虚拟指令;通过第二分派器执行第二虚拟指令,具体包括:通过第二分派器调用第二虚拟指令执行模块执行第二虚拟指令。
22、结合第一方面,在一种可能的实现方式中,通过第一分派器执行第一虚拟指令,具体包括:通过第一分派器调用第一虚拟指令执行模块执行第一虚拟指令;通过第二分派器执行第二虚拟指令,具体包括:通过第二分派器调用第二虚拟指令执行模块执行第二虚拟指令。
23、在一种可能的实现方式中,第四虚拟指令和第一虚拟指令为执行逻辑相同的虚拟指令;通过第四分派器执行第四虚拟指令,具体包括:通过第四分派器调用第一虚拟指令执行模块执行第四虚拟指令。这样,对于执行逻辑相同的虚拟指令,可以调度同一个虚拟指令执行模块执行该虚拟指令。一个虚拟机内或者不同虚拟机内的分派器可以共用虚拟指令执行模块。
24、可选的,分派器也可以不共用虚拟指令执行模块。即同一个虚拟机本文档来自技高网...
【技术保护点】
1.一种函数保护方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器也为所述第一虚拟机中的分派器。
3.根据权利要求1所述的方法,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器为第二虚拟机中的分派器。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述获取到第一待保护函数之后,所述方法还包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一虚拟指令的数量为多个;通过第一分派器执行所述第一虚拟指令,具体包括:
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1-6任一项所述的方法,其特征在于,在获取到所述第一虚拟指令之后,在所述通过第一分派器执行所述第一虚拟指令之前,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述第一虚拟指令对应的字节码的数量与所述第一虚拟机内分派器的数量相同。
9.根据权利要求6所述的方法,其特征在于,所述
10.根据权利要求9所述的方法,其特征在于,所述第四虚拟指令和所述第一虚拟指令为执行逻辑相同的虚拟指令;所述通过第四分派器执行所述第四虚拟指令,具体包括:
11.一种函数保护装置,其特征在于,所述装置包括驱动数据调度模块、分派器选择模块、第一分派器和第二分派器;其中,
12.根据权利要求11所述的装置,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器也为所述第一虚拟机中的分派器。
13.根据权利要求11所述的装置,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器为第二虚拟机中的分派器。
14.根据权利要求11-13任一项所述的装置,其特征在于,所述装置还包括虚拟指令调度模块;
15.根据权利要求11-14任一项所述的装置,其特征在于,所述装置还包括第三分派器;所述第一虚拟指令的数量为多个;
16.根据权利要求12或13所述的装置,其特征在于,所述装置还包括第四分派器;
17.根据权利要求11-16任一项所述的装置,其特征在于,所述装置还包括字节码生成模块;
18.根据权利要求17所述的装置,其特征在于,第一虚拟指令对应的字节码的数量与所述第一虚拟机内分派器的数量相同。
19.一种函数保护装置,其特征在于,所述装置包括处理器和存储器;所述存储器与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器调用所述计算机指令以执行上述权利要求1-10任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,用于存储计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行上述权利要求1-10中的任一项所述的方法。
21.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述权利要求1-10中的任一项所述的方法。
...【技术特征摘要】
1.一种函数保护方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器也为所述第一虚拟机中的分派器。
3.根据权利要求1所述的方法,其特征在于,所述第一分派器为第一虚拟机中的分派器,所述第二分派器为第二虚拟机中的分派器。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述获取到第一待保护函数之后,所述方法还包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一虚拟指令的数量为多个;通过第一分派器执行所述第一虚拟指令,具体包括:
6.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1-6任一项所述的方法,其特征在于,在获取到所述第一虚拟指令之后,在所述通过第一分派器执行所述第一虚拟指令之前,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述第一虚拟指令对应的字节码的数量与所述第一虚拟机内分派器的数量相同。
9.根据权利要求6所述的方法,其特征在于,所述通过第一分派器执行所述第一虚拟指令,具体包括:
10.根据权利要求9所述的方法,其特征在于,所述第四虚拟指令和所述第一虚拟指令为执行逻辑相同的虚拟指令;所述通过第四分派器执行所述第四虚拟指令,具体包括:
11.一种函数保护装置,其特征在于,所述装置包括驱动数据调度模块、分派器选择模块、第一分派器和第二分派器;其中,
12.根据权利要求...
【专利技术属性】
技术研发人员:李小伟,汤战勇,王梓旭,陈谋,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。