[发明专利]虚拟机保护的解释例程识别方法、装置、设备及存储介质有效
申请号: | 202011110312.X | 申请日: | 2020-10-16 |
公开(公告)号: | CN112199158B | 公开(公告)日: | 2021-11-23 |
发明(设计)人: | 乐德广 | 申请(专利权)人: | 常熟理工学院 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F21/71 |
代理公司: | 常州佰业腾飞专利代理事务所(普通合伙) 32231 | 代理人: | 滕诣迪 |
地址: | 215500 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 虚拟机 保护 解释 例程 识别 方法 装置 设备 存储 介质 | ||
本发明实施例公开了一种虚拟机保护的解释例程识别方法、装置、设备及存储介质,其中,所述虚拟机保护的解释例程识别方法,包括:根据程序线索式解释执行的跳转特征,将虚拟机解释器分为若干个不同的字节码来解释例程,即:将取指、译码和分派代码嵌入到每个解释例程的最后;通过在虚拟机保护的动态执行轨迹记录中指令特征匹配进行解释例程的划分和识别;从而由一个解释例程转移至另一个解释例程执行。针对虚拟机软件保护的逆向工程分析,通过聚类分析和特征匹配,以达到准确识别虚拟机解释器中的解释例程目的。
技术领域
本发明涉及虚拟机包括技术领域,也涉及一种信息安全、软件分析和逆向工程技术领域,尤指一种虚拟机保护的解释例程识别方法、装置、设备及存储介质。
背景技术
例程是一种计算机程序,是与一项计算任务相对应的处理对象和处理规则的描述,是一种专用程序或作为主程序的一部分;解释例程是虚拟机软件保护架构中设计的一套私有虚拟字节码的解释执行处理函数集。该集合中每一个处理例程完成特定的原子操作,是虚拟机解释器中的功能性指令。在虚拟机解释器执行过程中,集合中的解释例程按照一定的顺序执行将实现被保护关键代码段的功能。
在虚拟机保护过程中,解释例程将作为虚拟机解释器的关键模块被嵌入到受保护软件中,由于其在虚拟机软件保护架构中的重要性,是虚拟机保护目标软件逆向工程分析的重点,因此虚拟机保护软件也对解释例程自身做了相应的保护。
目前的解释例程提取是基于程序例程内部每一条指令在程序整个执行过程中的执行次数相同的原理,通过收集虚拟机解释器执行过程中的每一条指令,然后计算指令的执行次数,并将具有相同执行次数的指令集合归属于一个解释例程。但是该方法的执行效率低,随着虚拟机代码量的增加其耗时越长。
发明内容
本发明实施例提供了一种虚拟机保护的解释例程识别方法、装置、设备及存储介质,针对虚拟机软件保护的逆向工程分析,通过聚类分析和特征匹配,以达到准确识别虚拟机解释器中的解释例程目的。
本发明实施例提供了一种虚拟机保护的解释例程识别方法,包括:
根据程序线索式解释执行的跳转特征,将虚拟机解释器分为若干个不同的字节码来解释例程,即:
将取指、译码和分派代码嵌入到每个解释例程的最后;
通过在虚拟机保护的动态执行轨迹记录中指令特征匹配进行解释例程的划分和识别;
从而由一个解释例程转移至另一个解释例程执行。
进一步的,每个待执行解释例程根据其执行的先后顺序被串联起来,开始执行后,会依次执行每个解释例程,在上一条虚拟字节码的解释例程执行完后,控制流通过匹配的跳转方式跳到至下一个解释例程。
进一步的,在大量的虚拟机指令序列中,其虚拟机在完成一次解释执行前,都会执行同一动作,包括跳转到取指令的位置。
进一步的,利用虚拟机动态指令追踪记录中的push reg和ret指令特征匹配进行解释例程的划分和识别。
进一步的,利用虚拟机动态指令追踪记录中的jmp reg指令特征匹配进行解释例程的划分和识别。
进一步的,通过在虚拟机保护的动态执行轨迹记录中匹配线索式解释执行情况进行解释例程的划分和识别。
进一步的,轮询动态执行轨迹记录,如果匹配到解释例程的结束特征,则创建一个新的解释例程实例,之后把轮询的后续指令添加到该实例中,直至一个新的特征出现,则表示该实例的指令序列结束;以此类推,循环结束后,得到所有被执行的解释例程的实例集合。
进一步的,每一个解释例程执行结束之前,esp寄存器都会指向局部变量表的位置,以该约束作为解释例程识别的加强条件。
本发明实施例还提供一种虚拟机保护的解释例程识别装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于常熟理工学院,未经常熟理工学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011110312.X/2.html,转载请声明来源钻瓜专利网。