[發(fā)明專利]一種面向二進制程序的模塊化方法在審
| 申請?zhí)枺?/td> | 202210508164.X | 申請日: | 2022-04-27 |
| 公開(公告)號: | CN115167916A | 公開(公告)日: | 2022-10-11 |
| 發(fā)明(設計)人: | 劉勝利;朱肖雅;蔡瑞杰;楊啟超;趙方方;郭世臣;郭茜茜 | 申請(專利權)人: | 中國人民解放軍戰(zhàn)略支援部隊信息工程大學 |
| 主分類號: | G06F8/75 | 分類號: | G06F8/75;G06F8/53;G06F8/41;G06K9/62 |
| 代理公司: | 鄭州明華專利代理事務所(普通合伙) 41162 | 代理人: | 葉朝輝 |
| 地址: | 450000 河*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 二進制 程序 模塊化 方法 | ||
本發(fā)明屬于模塊化分析技術領域,具體涉及一種面向二進制程序的模塊化方法。本發(fā)明借用社團檢測思想進行二進制程序模塊化,設計二進制程序模塊化模型BinMod,通過對二進制程序函數(shù)的分析,提取了四種函數(shù)依賴關系:直接調用依賴、共引關系依賴、數(shù)據(jù)引用依賴以及代碼局部依賴,并根據(jù)函數(shù)依賴關系構建函數(shù)依賴圖,以更好地恢復程序中的模塊。并借用社團檢測的思想對函數(shù)依賴圖進行模塊化,分別按照相似鄰居移動、基于模塊度增益的局部移動以及模塊組合完成二進制程序的模塊化。結果表明本發(fā)明方法在模塊劃分效果以及時間效率方面,明顯優(yōu)于FCA模塊化方法以及BCD模塊化方法。
技術領域
本發(fā)明屬于模塊化分析技術領域,具體涉及一種面向二進制程序的模塊化方法。
背景技術
隨著軟件系統(tǒng)功能的多樣化,系統(tǒng)的復雜性及函數(shù)規(guī)模也隨之提高。在實際應用中,研究者常常無法獲取程序的源碼,只能對二進制程序進行分析,尤其是分析大規(guī)模的二進制程序時(包含數(shù)萬個函數(shù)),需要花費較長時間,嚴重影響了分析效率。軟件模塊化是指對程序元素(文件、包、函數(shù)、方法等)進行聚類,從而獲得軟件模塊結構的一種軟件分析方法。軟件模塊化技術將程序劃分為各個功能相對獨立的模塊,模塊是一組完成特定功能的函數(shù)集合,具有“高內聚,低耦合”的特征。對各個模塊單獨分析,能夠降低分析復雜度,提高復雜二進制程序的分析效率。此外,研究人員只需要分析特定的功能模塊以搜索定位1-day漏洞。
目前存在很多源碼方面的模塊化方法,及少量二進制程序方面的模塊化工作。與源碼模塊化相比,二進制程序模塊化存在兩個主要的問題,即在編譯過程中存在信息丟失以及在處理大規(guī)模二進制可執(zhí)行程序時的時間性能問題。當前二進制程序模塊化工作BCD基于圖聚類的方法將二進制代碼劃分為組件,即將C++程序一個類(class)中的方法(method)聚類在一起,該方法在圖構建過程中丟失了一些重要的信息,且聚類算法的時間效率較低。為了更加有效的進行二進制程序模塊化,面臨兩個挑戰(zhàn):一是如何有效地提取二進制程序中包含的信息,二是如何高效地處理大規(guī)模的二進制程序。
目前研究者已經(jīng)提出了不同的模塊化方法,這些方法試圖將彼此更相似或更密切相關的工件分類為模塊。從聚類算法的角度來看,這些方法主要分為基于聚合的和基于搜索的方法。其中聚合算法需要維持一個表示聚類之間相似度的相似度矩陣,每次迭代需要重新計算該矩陣。若聚類個數(shù)比較多,這個相似度矩陣會很大,而且計算相似度矩陣也非常耗時。在基于搜索的算法分析中,聚類問題被視為一個搜索問題,通常使用爬山算法、遺傳算法來實現(xiàn)聚類。基于搜索的算法通過窮舉一個問題解空間的部分或所有情況來求解,在求解過程中只考慮部分情況,得到的可能是局部最優(yōu)解;如果要得到全局最優(yōu)解,則需考慮所有情況,搜索整個問題解空間。但處理大規(guī)模二進制程序非常耗時,這對時間敏感型任務來說是不現(xiàn)實的。因此如何提高二進制程序模塊化的時間性能是一個亟待解決的問題。
發(fā)明內容
針對目前二進制程序模塊化存在耗時、在處理大規(guī)模復雜二進制程序時效果不夠理想的缺陷和問題,本發(fā)明提供一種面向二進制程序的模塊化方法。
本發(fā)明解決其技術問題所采用的方案是:一種面向二進制程序的模塊化方法,包括以下步驟:
步驟一、對二進制函數(shù)進行反匯編并提取函數(shù)依賴關系,構建函數(shù)依賴圖,圖中節(jié)點代表函數(shù),邊代表函數(shù)之間的依賴關系;
步驟二、將函數(shù)依賴圖劃分為包含各個函數(shù)集合的模塊,包括以下步驟:
S1、相似鄰居移動:輸入節(jié)點集合V、函數(shù)邊依賴集合E以及相似度閾值w,將每一個節(jié)點看作一個獨立模塊,基于相似鄰居移動合并節(jié)點,并在相似鄰居移動過程中對于每個節(jié)點使用杰卡德距離計算該節(jié)點與其所有鄰居節(jié)點的相似度值SVij,得到該節(jié)點與所有鄰居節(jié)點的相似度值合集SVs,
式中:N(i)和N(j)分別代表節(jié)點i和節(jié)點j的鄰居;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍戰(zhàn)略支援部隊信息工程大學,未經(jīng)中國人民解放軍戰(zhàn)略支援部隊信息工程大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210508164.X/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。





