本發(fā)明涉及圖神經(jīng)網(wǎng)絡(luò)與信息安全處理,具體而言,涉及一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)方法、裝置及設(shè)備。
背景技術(shù):
1、二進(jìn)制程序相似性分析在漏洞檢測(cè)、補(bǔ)丁分析、網(wǎng)絡(luò)安全、軟件抄襲檢測(cè)、軟件工程和逆向工程等多個(gè)領(lǐng)域中具有重要作用。該分析旨在量化二進(jìn)制程序之間的相似性,但由于缺少源代碼與高級(jí)語(yǔ)義信息以及二進(jìn)制文件的復(fù)雜性,這項(xiàng)任務(wù)面臨著巨大挑戰(zhàn)。
2、傳統(tǒng)的檢測(cè)方法通常依賴領(lǐng)域特定的特征工程,這不僅耗時(shí)費(fèi)力,還難以在不同硬件架構(gòu)之間實(shí)現(xiàn)通用性。近年來(lái),自然語(yǔ)言處理(nlp)技術(shù)被引入該領(lǐng)域,通過(guò)將二進(jìn)制指令視為序列來(lái)解決跨架構(gòu)問(wèn)題。然而,這些方法通常難以捕獲程序的高級(jí)語(yǔ)義信息,限制了對(duì)復(fù)雜程序行為的全面理解。
3、現(xiàn)有技術(shù)在二進(jìn)制程序相似性分析領(lǐng)域盡管取得了一定進(jìn)展,如基于特征工程的提取方法(如圖匹配、控制流圖cfg分析)、基于自然語(yǔ)言處理(nlp)的深度學(xué)習(xí)方法(如詞嵌入、基于?transformer?模型等),但仍然存在多方面的局限:(1)特征提取復(fù)雜且通用性差,難以在跨架構(gòu)場(chǎng)景中應(yīng)用。(2)高層語(yǔ)義建模能力不足,未能有效捕獲程序的全局邏輯關(guān)系。(3)在大規(guī)模程序庫(kù)中處理效率低下,無(wú)法滿足實(shí)際應(yīng)用需求。
4、這些局限嚴(yán)重影響了其在實(shí)際應(yīng)用中的效果和適用性。有鑒于此,申請(qǐng)人在研究了現(xiàn)有的技術(shù)后特提出本技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在提供一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)方法、裝置及設(shè)備,以解決現(xiàn)有方法難以實(shí)現(xiàn)跨架構(gòu)二進(jìn)制程序的統(tǒng)一程序表示、高層語(yǔ)義建模能力不足、大規(guī)模程序庫(kù)分析的處理效率低等缺點(diǎn)。
2、為解決上述技術(shù)問(wèn)題,本發(fā)明通過(guò)以下技術(shù)方案實(shí)現(xiàn):
3、一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)方法,包括:
4、獲取待檢測(cè)的兩份二進(jìn)制程序,并反匯編為低級(jí)虛擬機(jī)中間表示llvm?ir;
5、基于llvm?ir構(gòu)建程序圖;
6、將所述程序圖輸入fasttext模型提取出llvm?ir指令,并基于llvm?ir指令創(chuàng)建的語(yǔ)料庫(kù)作為fasttext模型的詞匯表進(jìn)行多輪訓(xùn)練,以將指令標(biāo)記表示為連續(xù)向量空間中的詞向量,生成指令向量;
7、根據(jù)所述程序圖和所述指令向量,利用全局注意力增強(qiáng)的圖神經(jīng)網(wǎng)絡(luò)gnn進(jìn)行處理,以生成固定維度的圖嵌入向量;
8、計(jì)算兩份二進(jìn)制程序?qū)?yīng)的圖嵌入向量之間的相似性以評(píng)估相似度。
9、優(yōu)選地,基于llvm?ir構(gòu)建程序圖,具體為:
10、提取llvm?ir的指令、控制流、數(shù)據(jù)流和調(diào)用流信息,構(gòu)建程序圖;其中,所述程序圖的節(jié)點(diǎn)用于表示每條指令,邊用于捕獲指令之間的控制流、調(diào)用流和數(shù)據(jù)流的關(guān)系;
11、控制流邊反映指令之間的執(zhí)行順序,且僅限于單個(gè)函數(shù),跨函數(shù)的控制關(guān)系通過(guò)調(diào)用邊來(lái)捕獲;
12、調(diào)用流邊用于捕獲函數(shù)調(diào)用之間的雙向依賴關(guān)系;
13、數(shù)據(jù)流邊用于表示指令之間的數(shù)據(jù)依賴關(guān)系,根據(jù)數(shù)據(jù)類型區(qū)分邊的類型,并使用獨(dú)熱編碼進(jìn)行編碼,以區(qū)分各種類型的數(shù)據(jù)依賴關(guān)系。
14、優(yōu)選地,在提取llvm?ir指令時(shí),對(duì)llvm?ir的全局變量、局部變量、常量和函數(shù)名稱進(jìn)行標(biāo)準(zhǔn)化操作,以消除不必要的名稱差異。
15、優(yōu)選地,所述指令向量通過(guò)對(duì)指令中各個(gè)標(biāo)記的詞向量進(jìn)行求和計(jì)算,并轉(zhuǎn)換為固定維度的向量表示得到。
16、優(yōu)選地,所述圖神經(jīng)網(wǎng)絡(luò)包括gps?層與嵌入層;所述gps層由多個(gè)堆疊的圖卷積模塊組成,每個(gè)模塊包含基于多頭注意力的圖卷積單元和relu激活函數(shù),用于為每個(gè)程序圖生成固定維度的圖嵌入向量;
17、所述嵌入層用于將程序圖的邊特征編碼為與節(jié)點(diǎn)特征相同維度的向量,以便在圖卷積過(guò)程中納入邊類型信息。
18、優(yōu)選地,所述圖卷積單元結(jié)合帶邊特征卷積的圖同構(gòu)網(wǎng)絡(luò)gineconv和多頭注意力機(jī)制,以捕獲程序圖的局部語(yǔ)義信息和長(zhǎng)距離依賴關(guān)系;
19、gineconv通過(guò)聚合相鄰節(jié)點(diǎn)的特征和相應(yīng)的邊特征來(lái)更新每個(gè)節(jié)點(diǎn)的特征,gineconv的更新公式為:
20、;
21、其中,為節(jié)點(diǎn)i的特征,每個(gè)節(jié)點(diǎn)的特征向量即為對(duì)應(yīng)的指令向量;表示節(jié)點(diǎn)i更新后的特征;表示聚合函數(shù);表示調(diào)節(jié)因子;為節(jié)點(diǎn)i的鄰居節(jié)點(diǎn)集合;為節(jié)點(diǎn)i的鄰居節(jié)點(diǎn)j的特征;為節(jié)點(diǎn)i和j的邊特征;為激活函數(shù);
22、經(jīng)過(guò)多層?gineconv和多頭注意力機(jī)制的處理后,對(duì)所有節(jié)點(diǎn)特征進(jìn)行全局池化操作,生成固定維度的圖嵌入向量。
23、優(yōu)選地,計(jì)算兩份二進(jìn)制程序?qū)?yīng)的嵌入向量間的相似性時(shí),采用余弦相似度計(jì)算得到相似度得分;若所述相似度得分超過(guò)設(shè)定的閾值,則判定這兩份二進(jìn)制程序相似。
24、優(yōu)選地,還包括使用對(duì)比損失函數(shù)進(jìn)行訓(xùn)練優(yōu)化,以提升相似性檢測(cè)的準(zhǔn)確性,對(duì)比損失函數(shù)的表達(dá)式為:
25、;
26、其中,表示計(jì)算出的相似度;表示設(shè)定的相似度閾值;表示正、負(fù)樣本對(duì)的標(biāo)記,值為1表示正樣本對(duì),值為0表示負(fù)樣本對(duì);max表示取最大值。
27、本發(fā)明還提供了一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)裝置,包括:
28、反匯編單元,用于獲取待檢測(cè)的兩份二進(jìn)制程序,并反匯編為低級(jí)虛擬機(jī)中間表示llvm?ir;
29、程序圖構(gòu)建單元,用于基于llvm?ir構(gòu)建程序圖;
30、指令向量生成單元,用于將所述程序圖輸入fasttext模型提取出llvm?ir指令,并基于llvm?ir指令創(chuàng)建的語(yǔ)料庫(kù)作為fasttext模型的詞匯表進(jìn)行多輪訓(xùn)練,以將指令標(biāo)記表示為連續(xù)向量空間中的詞向量,生成指令向量;
31、圖神經(jīng)網(wǎng)絡(luò)單元,用于根據(jù)所述程序圖和所述指令向量,利用全局注意力增強(qiáng)的圖神經(jīng)網(wǎng)絡(luò)gnn進(jìn)行處理,以生成固定維度的圖嵌入向量;
32、相似性計(jì)算單元,用于計(jì)算兩份二進(jìn)制程序?qū)?yīng)的圖嵌入向量之間的相似性以評(píng)估相似度。
33、本發(fā)明還提供了一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)設(shè)備,包括處理器以及存儲(chǔ)器,所述存儲(chǔ)器內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序能夠被所述處理器執(zhí)行,以實(shí)現(xiàn)如上所述的一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)方法。
34、本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令被計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)所在設(shè)備的處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的一種基于gnn的跨架構(gòu)二進(jìn)制程序相似性檢測(cè)方法。
35、綜上所述,與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
36、本發(fā)明通過(guò)?llvm?ir?表示和程序圖構(gòu)建技術(shù),抽象出跨架構(gòu)的中間表示層,屏蔽了不同硬件架構(gòu)之間的差異,為跨架構(gòu)的二進(jìn)制程序相似性分析提供統(tǒng)一表達(dá)框架,適用于多種硬件架構(gòu),從而實(shí)現(xiàn)跨架構(gòu)的程序表示。
37、本發(fā)明采用全局注意力增強(qiáng)的圖神經(jīng)網(wǎng)絡(luò),結(jié)合多頭注意力機(jī)制和高質(zhì)量的指令嵌入,全面捕獲程序的高層語(yǔ)義特征和復(fù)雜邏輯依賴關(guān)系,顯著提升了對(duì)程序行為的理解能力,解決了現(xiàn)有技術(shù)對(duì)程序語(yǔ)義建模不足的問(wèn)題。
38、本發(fā)明通過(guò)嵌入生成和相似性計(jì)算方法,利用?performer-based?globalattention?機(jī)制優(yōu)化?gnn?模型,將復(fù)雜的程序圖映射為固定維度的嵌入向量,顯著提高了大規(guī)模程序庫(kù)分析的效率,解決了大規(guī)模程序庫(kù)分析效率低的問(wèn)題。
39、本發(fā)明在預(yù)處理階段標(biāo)準(zhǔn)化變量、常量和函數(shù)名,消除不必要的名稱差異,同時(shí)保留庫(kù)函數(shù)調(diào)用的原始形式,增強(qiáng)了模型對(duì)剝離符號(hào)程序及多樣化編譯環(huán)境的適應(yīng)能力,解決了剝離符號(hào)程序及多樣化編譯環(huán)境下魯棒性不足的問(wèn)題。
40、本發(fā)明提供了一種高效、魯棒且精確的跨架構(gòu)二進(jìn)制程序相似性分析方法,適用于漏洞檢測(cè)、補(bǔ)丁分析、網(wǎng)絡(luò)安全、軟件抄襲檢測(cè)及逆向工程等多個(gè)領(lǐng)域。通過(guò)結(jié)合llvm?ir表示、程序圖構(gòu)建、指令向量化處理、圖神經(jīng)網(wǎng)絡(luò)建模以及相似性計(jì)算等技術(shù)手段,實(shí)現(xiàn)了對(duì)二進(jìn)制程序的深度理解與高效分析,為相關(guān)領(lǐng)域的研究和應(yīng)用提供了有力支持。