[發明專利]用于符號執行的復雜類型輸入變量懶符號化方法及系統在審
| 申請號: | 202210453325.X | 申請日: | 2022-04-27 |
| 公開(公告)號: | CN114896145A | 公開(公告)日: | 2022-08-12 |
| 發明(設計)人: | 陳睿;楊帆;江云松;劉亞威;賈春鵬;施蘭蘭;車小鵬 | 申請(專利權)人: | 北京軒宇信息技術有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 中國航天科技專利中心 11009 | 代理人: | 馬全亮 |
| 地址: | 100190 北京市海淀區科學院*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 符號 執行 復雜 類型 輸入 變量 符號化 方法 系統 | ||
1.一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于包括:
生成輸入驅動文件,通過入口函數指定輸入變量和驅動被測函數;
分配符號內存:通過解釋執行驅動符號執行的方式從入口函數開始執行,先進行內存分配,記錄如下3個映射關系:變量分配地址映射表var_addr_map、實際值映射表value_map和符號值映射表sym_map;
當執行到一條語句時,解釋執行和符號執行分別對同一地址上的實際值和符號值進行操作;一個變量或表達式在實際值映射表value_map和符號值映射表sym_map中的地址完全一致;
在執行過程中對內存地址訪問時,解釋執行直接讀寫實際值映射表value_map中的內容;符號執行需先檢查符號值映射表sym_map中該地址上是否存在符號值,若存在則直接讀寫;若不存在則創建一個新符號值,符號值映射表sym_map中新增一條地址與符號值的映射,然后進行正常讀寫操作;當執行到分支節點時由解釋執行決定下一個待執行語句,符號執行把該分支節點判定語句的符號值添加到約束中;
一次符號執行結束后對收集的約束取反以及求解,得到符號值對應的值,進一步得到內存地址與值的對應關系,然后轉換為輸入表達式與值的映射關系,生成用例數據文件;
執行過程結束。
2.根據權利要求1所述的一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于:生成輸入驅動文件時,直接把變量整體指定為輸入,復雜類型變量不展開為子表達式。
3.根據權利要求1所述的一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于:變量分配地址映射表var_addr_map中包括代表變量或函數名的Var和表示地址的整型Addr;實際值映射表value_map中包括表示地址的整型Addr和實際值模型Value;符號值映射表sym_map中包括表示地址的整型Addr和符號值模型Sym。
4.根據權利要求3所述的一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于:變量分配地址映射表var_addr_map和實際值映射表value_map在內存分配時完成初始化,所有變量的地址和值記錄在其中;符號值映射表sym_map初始化為空,在執行過程中動態添加符號值記錄。
5.根據權利要求3所述的一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于:所述轉換為輸入表達式與值的映射關系,具體包括:
根據所述變量分配地址映射表var_addr_map確定該地址處于哪個變量的內存范圍,如果是標量類型則直接確定地址對應的變量;如果是復雜類型則遞歸展開和二分查找,找到該地址對應的輸入表達式;
把所有求解的結果轉換為表達式與值的映射關系,生成用例數據文件。
6.根據權利要求5所述的一種用于符號執行的復雜類型輸入變量懶符號化方法,其特征在于:所述標量類型是指:基本類型或不含成員的類型,基本類型包括int型,不含成員的類型包括枚舉、指針;
所述復雜類型是指:包含成員的類型;所述包含成員的類型包括結構體、聯合體、數組。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京軒宇信息技術有限公司,未經北京軒宇信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210453325.X/1.html,轉載請聲明來源鉆瓜專利網。





