一种基于虚拟化技术的虚拟指令下发方法及系统技术方案

技术编号:21453647 阅读:19 留言:0更新日期:2019-06-26 04:41
本发明专利技术提供了一种基于虚拟化技术的虚拟指令下发方法及系统,通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;所述编译器依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;终端获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。因此实现了在任意时候动态变更被保护函数的实现,即使在程序的同一运行时期内,同一被保护函数的字节码也可以随时更新,大大延长了保护时间,增强了软件保护的效果,提高了安全性。

【技术实现步骤摘要】
一种基于虚拟化技术的虚拟指令下发方法及系统
本专利技术涉及信息安全领域,尤其涉及的是一种基于虚拟化技术的虚拟指令下发方法及系统。
技术介绍
虚拟机保护是信息安全领域的一种新的软件保护技术,程序员针对源文件中的被保护代码编写程序,将被保护代码转换机器和人都无法识别的,在虚拟机上运行的字节码,在程序运行时再由虚拟机对这些字节码进行解释执行,实现对软件的保护。但是目前市场上所使用的虚拟化保护技术,生成的字节码存在动态库中,固定不变,只能等APP下次升级时更新动态库,而APP在未升级时,黑产人员有足够的时间来破解,现有技术的保护效果只能维持一段时间。因此现有技术有待于进一步的改进。
技术实现思路
鉴于上述现有技术中的不足之处,本专利技术的目的在于为用户提供一种基于虚拟化技术的虚拟指令下发方法及系统,以解决现有的虚拟机保护技术生成的字节码固定不变而导致保护时间短,安全性差的缺陷,本专利技术提供的第一实施例为一种基于虚拟化技术的虚拟指令下发方法,其中,所述方法包括:A、通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;B、所述编译器依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;C、终端获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。可选的,所述步骤B与步骤C之间还包括:C01、所述编译器将所述处理信息写入第一记录文件;C02、云端获取所述第一记录文件中的处理信息,将所述处理信息下发到终端。可选的,所述步骤A之前还包括:A0、通过编译器,输出包含虚拟机指令集及本地调用签名表的第二记录文件。可选的,所述步骤B还包括:B1、判断当前处理的源文件中是否含有与所述修改后的被保护函数列表中的被保护函数名称相同的被保护函数,若有,则执行步骤B2;若无,则处理下一个源文件;B2、为当前处理的源文件中与所述修改后的被保护函数列表中的被保护函数名称相同的被保护函数生成新字节码,再处理下一个源文件。可选的,所述步骤B2还包括:B21、读入第二记录文件,获取所述第二记录文件中的虚拟机指令集及本地调用签名表,为当前处理的源文件中与所述修改后的被保护函数列表中的被保护函数相同的被保护函数生成新字节码。可选的,所述步骤B中的处理信息包括:当前源文件名,函数索引,新字节码及新字节码的长度。可选的,所述步骤C包括:C1、终端将所述处理信息更新到内存池;C2、检测到当软件运行调用被保护函数时,控制解释器查看内存池中是否有与被调用的被保护函数对应的新字节码;若有则控制解释器解释执行与被调用的被保护函数对应的新字节码;所述步骤C还包括:若内存池中没有与被调用的被保护函数对应的新字节码,则控制解释器解释执行动态库中与被调用的被保护函数对应的字节码。本专利技术提供的第二实施例为一种基于虚拟化技术的虚拟指令下发系统,其中,所述系统包括:编译器和终端;所述编译器,用于检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;所述终端,用于获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。可选的,所述系统还包括云端;所述编译器,还用于将所述处理信息写入第一记录文件;所述编译器,还用于输出包含虚拟机指令集及本地调用签名表的第二记录文件;所述云端,用于获取所述第一记录文件中的处理信息,将所述处理信息下发到终端。可选的,所述终端还包括解释器;所述解释器,用于当软件运行调用被保护函数时,查看内存池中是否有与被调用的被保护函数对应的新字节码;若是,则解释执行与被调用的被保护函数对应的新字节码;若否,则控制解释器解释执行动态库中与被调用的被保护函数对应的字节码。有益效果,本专利技术提供了一种基于虚拟化技术的虚拟指令下发方法及系统,通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;所述编译器依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;终端获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。因此实现了在任意时候动态变更被保护函数的实现,即使在程序的同一运行时期内,同一被保护函数的字节码也可以随时更新,大大延长了保护时间,增强了软件保护的效果,提高了安全性。附图说明图1是本专利技术第一实施例的一种基于虚拟化技术的虚拟指令下发方法的步骤流程图;图2是本专利技术第一实施例中情况2的步骤流程图;图3是本专利技术第二实施例的一种基于虚拟化技术的虚拟指令下发系统的原理结构框图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本专利技术,并不用于限定本专利技术。如图1所示,本专利技术提供的第一实施例为一种基于虚拟化技术的虚拟指令下发方法,其中包括以下步骤:S1、通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;步骤S1是在现有的虚拟化软件保护技术的基础上进行的,现有的虚拟化软件保护技术是:通过编译器对源文件中指定的被保护函数进行虚拟化处理,所有的源文件经编译后得到一个动态库,对被保护函数进行虚拟化处理时生成的字节码存在动态库中,动态库会放入软件安装包,安装到手机上,对软件进行保护。从一个源文件中指定被保护函数有两种方式,一种是,某一源文件中定义的所有函数均需要保护,则将源文件名添加到配置文件中;另一种是,在某一源文件定义的函数中,只有部分函数需要保护,对于需要保护的部分函数加上自定义的属性,例如,可以选择在其函数定义的参数列表之后,函数体之前添加__attribute((__annotate__((“ivmp”)))),此处添加的自定属性为ivmp,在实际操作的时候可以选择其他合法的属性,并不仅限于ivmp。编译器在编译时读取配置文件,将其记录的源文件中定义的函数均作为被保护函数;对于不存在于配置文件中的源文件,其中定义的函数有属性为__attribute((__annotate__((“ivmp”)))),则认为是被保护函数,通过此方法,可以指定多个源文件中的多个函数为被保护函数,所有指定的被保护函数组成一个集合,记为PS。在PS中修改部分被保护函数的实现,即,本申请专利技术中只修改部分现有技术中的被保护函数的实现,本专利技术申请所用的编译器为LLVM编译器,所述LLVM编译器有一名用于得到修改后的被保护函数列表的编译选项,此编译选项为自定义命名,例如命名为-hot-update-funcs,编译器编译时检查-hot-update-funcs编译选项,获取所有修改了实现的被保护函数名称,同时得到修改后的被保护函数列表,所述修改后的被保护函数列表列出了所有修改了实现的被保护函数的名称,通过-hot-update-funcs列出被保护函数名称时,函数名称之间以逗号分隔,如-hot-update-funcs=func1,func2,func3,func4。在步骤S1之前还包括:S0、通过编译器,输出包含虚拟机指令集及本地调用签名表的第二记录文件。在现有技术编译各源文件后得到一个动态库,生成字本文档来自技高网...

【技术保护点】
1.一种基于虚拟化技术的虚拟指令下发方法,其特征在于,所述方法包括:A、通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;B、通过所述编译器依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;C、终端获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。

【技术特征摘要】
1.一种基于虚拟化技术的虚拟指令下发方法,其特征在于,所述方法包括:A、通过编译器检查编译选项,获取已修改实现的被保护函数名称,得到修改后的被保护函数列表;B、通过所述编译器依次处理所有源文件,为所有源文件中修改后的被保护函数生成新字节码,同时生成含有新字节码的处理信息;C、终端获取所述处理信息,解释执行所述处理信息中含有的所述新字节码。2.根据权利要求1所述的基于虚拟化技术的虚拟指令下发方法,其特征在于,所述步骤B与步骤C之间还包括:C01、所述编译器将所述处理信息写入第一记录文件;C02、云端获取所述第一记录文件中的处理信息,将所述处理信息下发到终端。3.根据权利要求1所述的基于虚拟化技术的虚拟指令下发方法,其特征在于,所述步骤A之前还包括:A0、通过编译器,输出包含虚拟机指令集及本地调用签名表的第二记录文件。4.根据权利要求1所述的基于虚拟化技术的虚拟指令下发方法,其特征在于,所述步骤B还包括:B1、判断当前处理的源文件中是否含有与所述修改后的被保护函数列表中的被保护函数名称相同的被保护函数,若有,则执行步骤B2;若无,则处理下一个源文件;B2、为当前处理的源文件中与所述修改后的被保护函数列表中的被保护函数名称相同的被保护函数生成新字节码,再处理下一个源文件。5.根据权利要求4所述的基于虚拟化技术的虚拟指令下发方法,其特征在于,所述步骤B2还包括:B21、读入第二记录文件,获取所述第二记录文件中的虚拟机指令集及本地调用签名表,为当前处理的源文件中与所述修改后的被保护函数列表中的被保护函数名称相同的被保护函数生成新字节码。6.根据权利要求1所述的基于虚拟化技术的虚拟指令下发方法,其特征在于,所述步骤B中...

【专利技术属性】
技术研发人员:方令廖兴龙肖巍
申请(专利权)人:北京智游网安科技有限公司
类型:发明
国别省市:北京,11

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

1