利索能及
我要发布
收藏
专利号: 2020111118572
申请人: 常熟理工学院
专利类型:发明专利
专利状态:已下证
更新日期:2025-12-30
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种操作数栈寄存器识别方法,其特征在于,包括:

确定每个解释例程执行前后所有寄存器的值,使用寄存器作为健值的两个容器来记录这两组状态;

先确认在进入虚拟机之前,操作数栈所对应的寄存器;

然后跟踪分析操作数栈的变化情况进一步确定每个解释例程操作数栈所对应的寄存器;

所述确定每个解释例程操作数栈所对应的寄存器的方法,包括如下步骤:

遍历解释例程中的指令序列,使用正则表达式来匹配特征,如果匹配到设定的xchg指令特征一,则置标志变量的值为True;

待后续匹配到设定的mov指令特征二,认定操作数栈所对应的寄存器发生变化,记录指令特征二的另一个寄存器为寄存器,并在遍历结束后并设置解释例程的值为寄存器一的值;

如果在匹配到mov指令特征二之前没有匹配到xchg指令特征一,则判定其疑似发生变化并设置op_stack_reg_candidate,即候选的操作数栈寄存器;

在解释例程指令序列一次遍历结束后,解释例程的exit_status,即解释例程出口的寄存器状态和enter_status,即解释例程入口的寄存器状态,判断操作数栈顶的变化值,如果按照操作数栈对应寄存器没变化的情况计算其变化值超出了正常的变化范围[‑8,8],则认定疑似变化的op_stack_reg_candidate是真实变化的情况,修改该解释例程的op_stack_exit_reg,即操作数栈的出口寄存器值为op_stack_reg_candidate。

2.根据权利要求1所述的操作数栈寄存器识别方法,其特征在于,在每个解释例程的记录中,第1行会显示每个寄存器的值,之后每条记录的最后1列会记录每条指令执行后被修改的寄存器及其被修改后的值。

3.根据权利要求1所述的操作数栈寄存器识别方法,其特征在于,所述虚拟机会通过设定的方式切换操作数栈所对应的寄存器。

4.一种操作数栈寄存器识别装置,其特征在于,包括:

记录模块,用于确定每个解释例程执行前后所有寄存器的值,使用寄存器作为健值的两个容器来记录这两组状态;

确认模块,用于先确认在进入虚拟机之前,操作数栈所对应的寄存器;

跟踪模块,用于跟踪分析操作数栈的变化情况进一步确定每个解释例程操作数栈所对应的寄存器;

所述确定每个解释例程操作数栈所对应的寄存器的方法,包括如下步骤:

遍历解释例程中的指令序列,使用正则表达式来匹配特征,如果匹配到设定的xchg指令特征一,则置标志变量的值为True;

待后续匹配到设定的mov指令特征二,认定操作数栈所对应的寄存器发生变化,记录指令特征二的另一个寄存器为寄存器,并在遍历结束后并设置解释例程的值为寄存器一的值;

如果在匹配到mov指令特征二之前没有匹配到xchg指令特征一,则判定其疑似发生变化并设置op_stack_reg_candidate,即候选的操作数栈寄存器;

在解释例程指令序列一次遍历结束后,解释例程的exit_status,即解释例程出口的寄存器状态和enter_status,即解释例程入口的寄存器状态,判断操作数栈顶的变化值,如果按照操作数栈对应寄存器没变化的情况计算其变化值超出了正常的变化范围[‑8,8],则认定疑似变化的op_stack_reg_candidate是真实变化的情况,修改该解释例程的op_stack_exit_reg,即操作数栈的出口寄存器值为op_stack_reg_candidate。

5.一种操作数栈寄存器识别设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~3中任意一项所述操作数栈寄存器识别方法。

6.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~3中任意一项所述操作数栈寄存器识别方法。