[發(fā)明專利]一種內(nèi)存訪問溢出的檢測方法及裝置有效
| 申請?zhí)枺?/td> | 201510072058.1 | 申請日: | 2015-02-11 |
| 公開(公告)號: | CN104573503B | 公開(公告)日: | 2018-04-27 |
| 發(fā)明(設(shè)計)人: | 朱浩 | 申請(專利權(quán))人: | 中國農(nóng)業(yè)銀行股份有限公司 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52 |
| 代理公司: | 北京集佳知識產(chǎn)權(quán)代理有限公司11227 | 代理人: | 王寶筠 |
| 地址: | 100005 北*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 內(nèi)存 訪問 溢出 檢測 方法 裝置 | ||
1.一種內(nèi)存訪問溢出的檢測方法,其特征在于,包括:
對源代碼進行預(yù)處理和詞法分析、語法分析以及語義分析,生成控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹;
針對不同的檢測場景建立多種檢測模型,并根據(jù)多種檢測模型分析所述控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹,進行表達式迭代以及狀態(tài)機分析,輸出檢測結(jié)果;
根據(jù)所述檢測結(jié)果判斷所述源代碼中是否存在內(nèi)存訪問溢出,并對檢測出的內(nèi)存訪問溢出進行反饋輸出;
所述針對不同的檢測場景建立多種檢測模型,并根據(jù)多種檢測模型分析所述控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹,進行表達式迭代以及狀態(tài)機分析,包括:
針對不同的檢測場景定義多種檢測模型,所述檢測模型包括:指針操作模型、數(shù)組訪問模型、標(biāo)準(zhǔn)庫函數(shù)模型和循環(huán)體與抽象迭代模型;
對所述控制流圖和所述數(shù)據(jù)依賴圖進行剪裁,沿所述控制流圖和所述數(shù)據(jù)依賴圖中的路徑將常量節(jié)點依次向后繼節(jié)點傳遞,并計算常量表達式,通過操作符連接并迭代內(nèi)存訪問操作的輸入條件,進行表達式迭代并得到所述輸入條件的迭代結(jié)果;
掃描所述抽象語義樹的結(jié)構(gòu),對所述抽象語義樹中的指針和數(shù)組變量的聲明、賦值、訪問以及標(biāo)準(zhǔn)庫函數(shù)的節(jié)點進行關(guān)鍵詞標(biāo)記,并查找所述抽象語義樹中與所述多種檢測模型中相匹配的節(jié)點以及分支;
建立狀態(tài)機,并分析內(nèi)存訪問操作和所述輸入條件的迭代結(jié)果,判斷當(dāng)前的內(nèi)存訪問操作是否在全量環(huán)境下有效。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對源代碼進行預(yù)處理和詞法分析、語法分析以及語義分析,生成控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹,包括:
對所述源代碼進行詞法分析和語法分析,并基于詞法分析和語法分析的結(jié)果進行語義分析以及上下文分析,生成抽象語義樹;
根據(jù)所述源代碼的分支跳轉(zhuǎn)和函數(shù)調(diào)用關(guān)系,將所述源代碼切分為多個基本塊,并分析每個基本塊之間的跳轉(zhuǎn)關(guān)系,根據(jù)所述跳轉(zhuǎn)關(guān)系生成控制流圖;
分析所述源代碼的變量之間的數(shù)據(jù)依賴關(guān)系,生成數(shù)據(jù)依賴圖。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對所述控制流圖和所述數(shù)據(jù)依賴圖進行剪裁,包括:
分析所述抽象語義樹中被標(biāo)記節(jié)點所在基本塊對應(yīng)于所述控制流圖上的節(jié)點,刪除其余節(jié)點,重新建立節(jié)點之間的連接關(guān)系;
保留所述控制流圖中被保留下的節(jié)點以及內(nèi)存訪問操作的變量在所述數(shù)據(jù)依賴圖中的依賴關(guān)系,刪除所述數(shù)據(jù)依賴圖中的其余依賴關(guān)系。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述檢測結(jié)果判斷所述源代碼中是否存在內(nèi)存訪問溢出,包括:
如果當(dāng)前的內(nèi)存訪問操作在全量環(huán)境下有效,則判斷不存在內(nèi)存訪問溢出,如果當(dāng)前的內(nèi)存訪問操作不是在全量環(huán)境下有效,則判斷存在內(nèi)存訪問溢出。
5.一種內(nèi)存訪問溢出的檢測裝置,其特征在于,包括:
分析模塊,用于對源代碼進行預(yù)處理和詞法分析、語法分析以及語義分析,生成控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹;
檢測模塊,用于針對不同的檢測場景建立多種檢測模型,并根據(jù)多種檢測模型分析所述控制流圖、數(shù)據(jù)依賴圖以及抽象語義樹,進行表達式迭代以及狀態(tài)機分析,輸出檢測結(jié)果;
輸出模塊,用于根據(jù)所述檢測結(jié)果判斷所述源代碼中是否存在內(nèi)存訪問溢出,并對檢測出的內(nèi)存訪問溢出進行反饋輸出;
所述檢測模塊,包括:
定義單元,用于針對不同的檢測場景定義多種檢測模型,所述檢測模型包括:指針操作模型、數(shù)組訪問模型、標(biāo)準(zhǔn)庫函數(shù)模型和循環(huán)體與抽象迭代模型;
裁剪單元,用于對所述控制流圖和所述數(shù)據(jù)依賴圖進行剪裁,沿所述控制流圖和所述數(shù)據(jù)依賴圖中的路徑將常量節(jié)點依次向后繼節(jié)點傳遞,并計算常量表達式,通過操作符連接并迭代內(nèi)存訪問操作的輸入條件,進行表達式迭代并得到所述輸入條件的迭代結(jié)果;
掃描單元,用于掃描所述抽象語義樹的結(jié)構(gòu),對所述抽象語義樹中的指針和數(shù)組變量的聲明、賦值、訪問以及標(biāo)準(zhǔn)庫函數(shù)的節(jié)點進行關(guān)鍵詞標(biāo)記,并查找所述抽象語義樹中與所述多種檢測模型中相匹配的節(jié)點以及分支;
判斷單元,用于建立狀態(tài)機,并分析內(nèi)存訪問操作和所述輸入條件的迭代結(jié)果,判斷當(dāng)前的內(nèi)存訪問操作是否在全量環(huán)境下有效。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國農(nóng)業(yè)銀行股份有限公司,未經(jīng)中國農(nóng)業(yè)銀行股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510072058.1/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:微機安全執(zhí)行方法
- 下一篇:一種清除密碼鎖的方法及終端
- 存儲器訪問調(diào)度裝置、調(diào)度方法與存儲器訪問控制系統(tǒng)
- 一種限制用戶訪問的方法和裝置
- 一種訪問信息提供方法及系統(tǒng)
- 數(shù)據(jù)訪問權(quán)限的控制方法及裝置
- 基于智能家居系統(tǒng)的訪問授權(quán)方法、裝置及設(shè)備
- 網(wǎng)站訪問請求的動態(tài)調(diào)度方法及裝置
- 基于訪問頻率的監(jiān)測方法、裝置、設(shè)備和計算機存儲介質(zhì)
- 訪問憑證驗證方法、裝置、計算機設(shè)備及存儲介質(zhì)
- 一種應(yīng)用訪問控制方法、系統(tǒng)和介質(zhì)
- 異常訪問行為的檢測方法、裝置、電子設(shè)備及存儲介質(zhì)





