一种函数保护方法及装置与流程

文档序号:37942709发布日期:2024-05-11 00:22阅读:18来源:国知局
一种函数保护方法及装置与流程

本技术涉及虚拟机,尤其涉及一种函数保护方法及装置。


背景技术:

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、可选的,分派器也可以不共用虚拟指令执行模块。即同一个虚拟机内每一个分派器有归属于自己的虚拟指令执行模块。

25、可选的,分派器也可以共用虚拟指令执行模块。即同一个虚拟机内每一个分派器共用同一套虚拟指令执行模块。

26、可选的,不同的虚拟机内的分派器也可以共用虚拟指令执行模块。

27、第二方面,本技术提供了一种函数保护装置,装置包括驱动数据调度模块、分派器选择模块、第一分派器和第二分派器;其中,驱动数据调度模块,用于获取到第一待保护函数,基于第一待保护函数获取到第一虚拟指令和第二虚拟指令;分派器选择模块,用于通过第一分派器执行第一虚拟指令;分派器选择模块,还用于通过第二分派器执行第二虚拟指令;其中,第一分派器和第二分派器不同。

28、结合第二方面,在一种可能的实现方式中,第一分派器为第一虚拟机中的分派器,第二分派器也为第一虚拟机中的分派器。

29、结合第二方面,在一种可能的实现方式中,第一分派器为第一虚拟机中的分派器,第二分派器为第二虚拟机中的分派器。

30、结合第二方面,在一种可能的实现方式中,装置还包括虚拟指令调度模块;驱动数据调度模块,还用于基于第一待保护函数获取到第三虚拟指令;虚拟指令调度模块,用于通过第一虚拟指令调用第三虚拟指令,执行第三虚拟指令。

31、结合第二方面,在一种可能的实现方式中,装置还包括第三分派器;第一虚拟指令的数量为多个;分派器选择模块,具体用于:通过第一分派器执行第一待保护函数中第一次出现的第一虚拟指令;分派器选择模块,还用于通过第三分派器执行第一待保护函数中第二次出现的第一虚拟指令;其中,第一分派器和第三分派器不同。

32、结合第二方面,在一种可能的实现方式中,装置还包括第四分派器;驱动数据调度模块,还用于获取到第二待保护函数,基于第二待保护函数获取到第四虚拟指令;分派器选择模块,还用于通过第四分派器执行第四虚拟指令;其中,第四分派器为第一虚拟机中的分派器或者第二虚拟机中的分派器。

33、结合第二方面,在一种可能的实现方式中,装置还包括字节码生成模块;字节码生成模块,用于基于第一虚拟指令生成多个字节码,多个字节码中每一个字节码由第一虚拟指令和分派器的标识组成;字节码生成模块,还用于从多个字节码中选择第一字节码,第一字节码由第一虚拟指令和第一分派器的标识组成;分派器选择模块,具体用于基于第一字节码中第一分派器的标识从多个分派器中选择第一分派器;通过第一分派器执行第一虚拟指令。

34、结合第二方面,在一种可能的实现方式中,第一虚拟指令对应的字节码的数量与第一虚拟机内分派器的数量相同。

35、结合第二方面,在一种可能的实现方式中,分派器选择模块,具体用于通过第一分派器调用第一虚拟指令执行模块执行第一虚拟指令;分派器选择模块,具体用于通过第二分派器调用第二虚拟指令执行模块执行第二虚拟指令。

36、结合第二方面,在一种可能的实现方式中,第四虚拟指令和第一虚拟指令为执行逻辑相同的虚拟指令;分派器选择模块,具体用于通过第四分派器调用第一虚拟指令执行模块执行第四虚拟指令。

37、第三方面,本技术提供了一种函数保护装置,装置包括处理器和存储器;存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,处理器调用计算机指令以执行上述任一方面任一可能的实现方式中提供的一种函数保护方法。

38、第四方面,本技术提供了一种计算机可读存储介质,用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述任一方面任一可能的实现方式中提供的一种函数保护方法。

39、第五方面,本技术提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任一方面任一可能的实现方式中提供的一种函数保护方法。

40、对于第二方面至第五方面的有益效果,请参考第一方面中有益效果的描述,本技术在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1