1.一种虚拟指令还原方法,其特征在于,包括:虚拟机动态指令追踪;
局部变量表位置确定;
处理函数识别;
处理函数执行前后所有寄存器值确定;
处理函数操作数栈所对应的寄存器确定;
处理函数操作数栈所对应的寄存器确定;
处理函数所对应的虚拟指令还原。
2.根据权利要求1所述的虚拟指令还原方法,其特征在于,所述虚拟机的内存读取轨迹的集合就是虚拟机指令的执行轨迹,记作VMTrace,该VMTrace记录包含了以下信息:完整执行的汇编指令;
被执行汇编指令的静态地址;
每条指令执行后被修改的寄存器及其被修改后的值。
3.根据权利要求1所述的虚拟指令还原方法,其特征在于,采用缓存延迟写入方法将执行期的每条指令的寄存器值和内存读写信息记录为VMTrace文件。
4.根据权利要求1所述的虚拟指令还原方法,其特征在于,所述处理函数识别,包括:所述虚拟机采用了线索式解释执行,其通过设定的方式实现相邻处理函数的跳转;执行如下识别方法:轮询虚拟机动态指令追踪记录,如果匹配到两种处理函数的结束特征,则创建一个新的处理函数实例,之后把轮询的后续指令添加到该实例中,直至一个新的特征出现,则表示该实例的指令序列结束。以此类推,循环结束后,可以得到所有被执行的处理函数的实例集合。
5.根据权利要求1所述的虚拟指令还原方法,其特征在于,所述处理函数执行前后所有寄存器值确定的方法,包括:根据识别的处理函数,确定每个处理函数执行前后寄存器的值。
6.根据权利要求1所述的虚拟指令还原方法,其特征在于,所述处理函数操作数栈所对应的寄存器确定的方法,包括:首先确认在进入虚拟机之前,操作数栈所对应的寄存器。然后跟踪分析操作数栈的变化情况进一步确定每个虚拟机操作数栈所对应的寄存器。
7.根据权利要求1所述的虚拟指令还原方法,其特征在于,述处理函数所对应的虚拟指令还原的方法,包括:得到每个处理函数对操作数栈栈顶的变化值,对操作数栈的读次数和对局部变量区的读次数这3个重要数据;根据这三个数据,推断该处理函数所对应的虚拟指令。
8.一种虚拟指令还原装置,其特征在于,包括:追踪模块,用于虚拟机动态指令追踪;
确定模块,用于局部变量表位置确定;
识别模块,用于处理函数识别;
执行模块,用于处理函数执行前后所有寄存器值确定;
对应模块,用于处理函数操作数栈所对应的寄存器确定;
操作模块,用于处理函数操作数栈所对应的寄存器确定;
还原模块,用于处理函数所对应的虚拟指令还原。
9.一种虚拟指令还原设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~7中任意一项所述虚拟指令还原方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~7中任意一项所述虚拟指令还原方法。