[發(fā)明專利]操作數(shù)棧寄存器識別方法、裝置、設(shè)備及存儲介質(zhì)有效
| 申請?zhí)枺?/td> | 202011111857.2 | 申請日: | 2020-10-16 |
| 公開(公告)號: | CN112199116B | 公開(公告)日: | 2023-08-11 |
| 發(fā)明(設(shè)計)人: | 樂德廣 | 申請(專利權(quán))人: | 常熟理工學(xué)院 |
| 主分類號: | G06F8/74 | 分類號: | G06F8/74;G06F9/455 |
| 代理公司: | 常州佰業(yè)騰飛專利代理事務(wù)所(普通合伙) 32231 | 代理人: | 滕詣迪 |
| 地址: | 215500 江*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 作數(shù) 寄存器 識別 方法 裝置 設(shè)備 存儲 介質(zhì) | ||
1.一種操作數(shù)棧寄存器識別方法,其特征在于,包括:
確定每個解釋例程執(zhí)行前后所有寄存器的值,使用寄存器作為健值的兩個容器來記錄這兩組狀態(tài);
先確認(rèn)在進(jìn)入虛擬機之前,操作數(shù)棧所對應(yīng)的寄存器;
然后跟蹤分析操作數(shù)棧的變化情況進(jìn)一步確定每個解釋例程操作數(shù)棧所對應(yīng)的寄存器;
所述確定每個解釋例程操作數(shù)棧所對應(yīng)的寄存器的方法,包括如下步驟:
遍歷解釋例程中的指令序列,使用正則表達(dá)式來匹配特征,如果匹配到設(shè)定的xchg指令特征一,則置標(biāo)志變量的值為True;
待后續(xù)匹配到設(shè)定的mov指令特征二,認(rèn)定操作數(shù)棧所對應(yīng)的寄存器發(fā)生變化,記錄指令特征二的另一個寄存器為寄存器,并在遍歷結(jié)束后并設(shè)置解釋例程的值為寄存器一的值;
如果在匹配到mov指令特征二之前沒有匹配到xchg指令特征一,則判定其疑似發(fā)生變化并設(shè)置op_stack_reg_candidate,即候選的操作數(shù)棧寄存器;
在解釋例程指令序列一次遍歷結(jié)束后,解釋例程的exit_status,即解釋例程出口的寄存器狀態(tài)和enter_status,即解釋例程入口的寄存器狀態(tài),判斷操作數(shù)棧頂?shù)淖兓?,如果按照操作?shù)棧對應(yīng)寄存器沒變化的情況計算其變化值超出了正常的變化范圍[-8,8],則認(rèn)定疑似變化的op_stack_reg_candidate是真實變化的情況,修改該解釋例程的op_stack_exit_reg,即操作數(shù)棧的出口寄存器值為op_stack_reg_candidate。
2.根據(jù)權(quán)利要求1所述的操作數(shù)棧寄存器識別方法,其特征在于,在每個解釋例程的記錄中,第1行會顯示每個寄存器的值,之后每條記錄的最后1列會記錄每條指令執(zhí)行后被修改的寄存器及其被修改后的值。
3.根據(jù)權(quán)利要求1所述的操作數(shù)棧寄存器識別方法,其特征在于,所述虛擬機會通過設(shè)定的方式切換操作數(shù)棧所對應(yīng)的寄存器。
4.一種操作數(shù)棧寄存器識別裝置,其特征在于,包括:
記錄模塊,用于確定每個解釋例程執(zhí)行前后所有寄存器的值,使用寄存器作為健值的兩個容器來記錄這兩組狀態(tài);
確認(rèn)模塊,用于先確認(rèn)在進(jìn)入虛擬機之前,操作數(shù)棧所對應(yīng)的寄存器;
跟蹤模塊,用于跟蹤分析操作數(shù)棧的變化情況進(jìn)一步確定每個解釋例程操作數(shù)棧所對應(yīng)的寄存器;
所述確定每個解釋例程操作數(shù)棧所對應(yīng)的寄存器的方法,包括如下步驟:
遍歷解釋例程中的指令序列,使用正則表達(dá)式來匹配特征,如果匹配到設(shè)定的xchg指令特征一,則置標(biāo)志變量的值為True;
待后續(xù)匹配到設(shè)定的mov指令特征二,認(rèn)定操作數(shù)棧所對應(yīng)的寄存器發(fā)生變化,記錄指令特征二的另一個寄存器為寄存器,并在遍歷結(jié)束后并設(shè)置解釋例程的值為寄存器一的值;
如果在匹配到mov指令特征二之前沒有匹配到xchg指令特征一,則判定其疑似發(fā)生變化并設(shè)置op_stack_reg_candidate,即候選的操作數(shù)棧寄存器;
在解釋例程指令序列一次遍歷結(jié)束后,解釋例程的exit_status,即解釋例程出口的寄存器狀態(tài)和enter_status,即解釋例程入口的寄存器狀態(tài),判斷操作數(shù)棧頂?shù)淖兓?,如果按照操作?shù)棧對應(yīng)寄存器沒變化的情況計算其變化值超出了正常的變化范圍[-8,8],則認(rèn)定疑似變化的op_stack_reg_candidate是真實變化的情況,修改該解釋例程的op_stack_exit_reg,即操作數(shù)棧的出口寄存器值為op_stack_reg_candidate。
5.一種操作數(shù)棧寄存器識別設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述程序時實現(xiàn)權(quán)利要求1~3中任意一項所述操作數(shù)棧寄存器識別方法。
6.一種計算機可讀存儲介質(zhì),其特征在于,存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令用于執(zhí)行權(quán)利要求1~3中任意一項所述操作數(shù)棧寄存器識別方法。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于常熟理工學(xué)院,未經(jīng)常熟理工學(xué)院許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011111857.2/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





