恭喜上海那一科技有限公司賈梟獲國家專利權
買專利賣專利找龍圖騰,真高效! 查專利查商標用IPTOP,全免費!專利年費監控用IP管家,真方便!
龍圖騰網恭喜上海那一科技有限公司申請的專利一種利用數據流分析算法分析C代碼中的內存安全的方法獲國家發明授權專利權,本發明授權專利權由國家知識產權局授予,授權公告號為:CN114153451B 。
龍圖騰網通過國家知識產權局官網在2025-04-29發布的發明授權授權公告中獲悉:該發明授權的專利申請號/專利號為:202111201254.6,技術領域涉及:G06F8/41;該發明授權一種利用數據流分析算法分析C代碼中的內存安全的方法是由賈梟;孫振東設計研發完成,并于2021-10-15向國家知識產權局提交的專利申請。
本一種利用數據流分析算法分析C代碼中的內存安全的方法在說明書摘要公布了:本發明提供了一種利用數據流分析算法分析C代碼中的內存安全的方法。將指令定義成形式化后的指令集,進行如下操作,靜態分析出代碼需要并給指針添加標記;將代碼轉化成抽象語法樹,并對其每一個指令進行類型檢查,同時對涉及到的指針權限轉移或借用語句進行修改,使之在靜態單賦值中有所區分;對抽象語法樹進行線性化,得到靜態單賦值形式的控制流圖,進行數據流分析,得到收斂的權限映射表的結果;利用數據流分析算法迭代穩定后的結果,利用錯誤檢查函數檢查是否存在內存安全問題。其中本發明的有益效果是:基于C語言中一系列常見的涉及內存的指令,定義了形式化后的指令集,定義了一系列內存錯誤檢測方法,便于檢測內存安全。
本發明授權一種利用數據流分析算法分析C代碼中的內存安全的方法在權利要求書中公布了:1.一種利用數據流分析算法分析C代碼中的內存安全的方法,其特征在于:將C語言內存指令定義成形式化后的指令集,然后進行如下操作:靜態分析出代碼對應指針添加標記的位置,并為代碼自動添加標記;分析前,對傳入的文件進行預處理,遍歷整個文件的代碼,查找其中全部的指針并觀測指針的行為,對指針是否有內存分配或釋放的行為進行分析,添加不同的指針標記;如果有內存釋放或分配、或對具有所有權的指針進行轉移的行為,代表它對一塊內存具有所有權,應為這個指針添加具有所有權的標記;反之,認為這個指針僅借走了所有權,添加不具有所有權的標記;將上述代碼轉化成抽象語法樹,并對其每一個指令進行類型檢查,同時對涉及到的指針權限轉移或借用語句進行修改,使之在靜態單賦值中有所區分;對于抽象語法樹中的每一個函數,遍歷其中的每一條指令,如果涉及到所有權轉移,即將擁有一塊空間的指針轉移給另一個擁有所有權的指針,添加指針所有權需要轉移的注釋;如果涉及到所有權借出,即一個沒有所有權的指針借走了另一個指針的權限,添加指針所有權被借出的注釋;對抽象語法樹進行線性化,得到靜態單賦值形式的控制流圖,進行數據流分析,得到收斂的指針權限映射表的結果;所述抽象語法樹包括函數參數和返回值的信息,數據流分析算法根據抽象語法樹計算函數對應的指針權限映射表,指針權限映射表包含了所有從變量到它所具有的指針權限的映射;利用數據流分析算法迭代穩定后的結果,利用內存錯誤檢測方法檢查是否存在內存安全問題;所述指令集包括內存分配、內存釋放、內存所有權轉移、內存所有權借用、強制類型轉化、指針離開作用域、取指令、存指令、合并指令和函數調用指令;所述指針包括擁有所有權和不擁有所有權兩種類型;數據流分析的具體步驟如下:對每個函數逐一進行分析,分別記錄它們參數和返回值的權限種類,即擁有所有權還是不擁有所有權;如果是擁有所有權的參數和返回值,在函數調用時轉移所有權;如果是不擁有所有權的參數和返回值,由于不知道函數內部的情況,在函數調用時將權限記為“*”;如果不是指針,不涉及到所有權的變化,記為“非指針”;然后為每條涉及內存的指令定義指針權限映射表的轉移方程,即由一個指針權限經過一條指令后轉變為的指針權限以及不同指針權限映射表的合并操作;將抽象語法樹轉化為靜態單賦值,對于每個函數分別進行分析。
如需購買、轉讓、實施、許可或投資類似專利技術,可聯系本專利的申請人或專利權人上海那一科技有限公司,其通訊地址為:200240 上海市閔行區劍川路951號零號灣1棟南樓413;或者聯系龍圖騰網官方客服,聯系龍圖騰網可撥打電話0551-65771310或微信搜索“龍圖騰網”。
1、本報告根據公開、合法渠道獲得相關數據和信息,力求客觀、公正,但并不保證數據的最終完整性和準確性。
2、報告中的分析和結論僅反映本公司于發布本報告當日的職業理解,僅供參考使用,不能作為本公司承擔任何法律責任的依據或者憑證。