李 濤,王金雙
(中國(guó)人民解放軍陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京 210007)
代碼復(fù)用在軟件開發(fā)過(guò)程中非常普遍。大量代碼和庫(kù)被復(fù)用到多個(gè)體系架構(gòu)的二進(jìn)制文件中,其中存在的一些脆弱代碼可能會(huì)導(dǎo)致安全隱患。二進(jìn)制代碼相似性檢測(cè)技術(shù)可以評(píng)估兩個(gè)或者多個(gè)二進(jìn)制代碼間的相似性和差異性,被廣泛應(yīng)用于漏洞發(fā)現(xiàn)[1-2]、代碼剽竊檢測(cè)[3]、惡意軟件檢測(cè)[4]等領(lǐng)域。
二進(jìn)制代碼相似性檢測(cè)的任務(wù)是尋找與給定查詢二進(jìn)制函數(shù)func最相似的目標(biāo)函數(shù)func′。根據(jù)檢測(cè)對(duì)象的不同,主要分為以下兩種類型:(1)一對(duì)一比較:直接計(jì)算兩段二進(jìn)制代碼之間的相似性。這種方法通常需要設(shè)置一個(gè)合適的閾值,閾值的選擇將直接影響檢測(cè)的準(zhǔn)確度。(2)一對(duì)多比較。該場(chǎng)景將一個(gè)源函數(shù)與目標(biāo)函數(shù)池中的函數(shù)進(jìn)行相似度評(píng)分并排序。目標(biāo)函數(shù)的排序越靠前,說(shuō)明模型對(duì)于函數(shù)語(yǔ)義的區(qū)分度越好。
編譯選項(xiàng)的差異(如編譯優(yōu)化O0-O3、-fno-inline選項(xiàng)等)、代碼混淆技術(shù)(如Obfuscator-LLVM[5])的使用給研究人員提取二進(jìn)制代碼語(yǔ)義帶來(lái)了諸多挑戰(zhàn)。
基于深度學(xué)習(xí)的二進(jìn)制代碼相似度檢測(cè)方法可以自動(dòng)化地提取代碼語(yǔ)義,從而避免了人工分析可能引入的偏差。常用的神經(jīng)網(wǎng)絡(luò)主要有兩類:(1)使用處理結(jié)構(gòu)特征的圖神經(jīng)網(wǎng)絡(luò),如Structure2Vec[6]、GCN[7]等;(2)使用處理文本序列的神經(jīng)網(wǎng)絡(luò),如LSTM(Long Short Term Memory)[8]、Transformer[9]等。
Genius[10]結(jié)合基本塊語(yǔ)法特征和控制流圖(Control Flow Graph,CFG)生成屬性控制流圖用于相似性檢測(cè),之后的Gemini[11]、VulSeeker[1]等均使用了類似的思想。
在二進(jìn)制代碼相似度檢測(cè)領(lǐng)域,Luo等人[12]利用LSTM和孿生網(wǎng)絡(luò)學(xué)習(xí)匯編代碼的語(yǔ)義表示。Asm2vec[13]使用PV-DM[14]模型學(xué)習(xí)函數(shù)和指令符號(hào)的嵌入。jTrans[15]在文獻(xiàn)[16]預(yù)訓(xùn)練任務(wù)的基礎(chǔ)上,將控制流信息融入預(yù)訓(xùn)練任務(wù),取得了較好的效果。但是這些方法無(wú)法適用于跨指令集架構(gòu)的檢測(cè)場(chǎng)景。
觀察來(lái)自庫(kù)findutils中的closs_stream函數(shù),如圖1所示,在保持編譯配置相同(編譯器Clang7.0,編譯優(yōu)化O0,其他編譯器選項(xiàng)相同)的情況下,不同指令集架構(gòu)(x86和ARM)二進(jìn)制代碼間的CFG具有一定的差異,而其二進(jìn)制代碼對(duì)應(yīng)的AST特征則只出現(xiàn)了一個(gè)節(jié)點(diǎn)的差異。
圖1 二進(jìn)制代碼的CFG和AST特征對(duì)比(bigram工程closs_stream函數(shù)O0優(yōu)化)
Tai[17]等人提出了兩種Tree-LSTM網(wǎng)絡(luò)(Child-Sum Tree-LSTM和N-ary Tree-LSTM)用于處理自然語(yǔ)言處理領(lǐng)域的結(jié)構(gòu)化數(shù)據(jù),其在情感分類和語(yǔ)義相關(guān)任務(wù)中的性能優(yōu)于普通LSTM。其中,N-ary Tree-LSTM適合于二叉樹,而Child-Sum Tree-LSTM適用于多孩子的無(wú)序樹,并且具有更高的計(jì)算效率。
在此工作的基礎(chǔ)上,Yang等人[18]提出了一種基于AST編碼的跨指令集架構(gòu)的檢測(cè)方法Asteria。通過(guò)提取二進(jìn)制函數(shù)的AST作為跨指令集架構(gòu)的二進(jìn)制特征來(lái)源,并利用能夠處理樹形數(shù)據(jù)的Tree-LSTM網(wǎng)絡(luò)學(xué)習(xí)二進(jìn)制代碼的AST語(yǔ)義嵌入。但是原生Tree-LSTM難以捕獲子節(jié)點(diǎn)對(duì)整棵樹的語(yǔ)義貢獻(xiàn)度,影響訓(xùn)練精度。
AST的節(jié)點(diǎn)代表了代碼中的表達(dá)式或語(yǔ)句,不同種類的節(jié)點(diǎn)承載著不同的信息量。然而Child-Sum Tree-LSTM對(duì)子節(jié)點(diǎn)隱藏狀態(tài)累加以表示父節(jié)點(diǎn),未能考慮不同類別AST節(jié)點(diǎn)對(duì)整棵樹特征表示的貢獻(xiàn)程度。例如,AST中包含的num等節(jié)點(diǎn)通常和expr、block等節(jié)點(diǎn)具有一定的從屬關(guān)系,并且通常在樹中處于不同的位置。進(jìn)行節(jié)點(diǎn)向量傳播的過(guò)程中應(yīng)當(dāng)對(duì)這些節(jié)點(diǎn)的語(yǔ)義信息對(duì)進(jìn)行重要性區(qū)分,使得在模型訓(xùn)練過(guò)程中節(jié)點(diǎn)對(duì)整棵AST提供適當(dāng)?shù)恼Z(yǔ)義貢獻(xiàn)度。
本文提出了一種融合注意力機(jī)制和Child-Sum Tree-LSTM的二進(jìn)制代碼相似性檢測(cè)方法。首先使用二進(jìn)制分析工具IDA Pro對(duì)二進(jìn)制文件進(jìn)行反編譯提取AST作為特征來(lái)源,輸入到融合注意力機(jī)制的Child-Sum Tree-LSTM神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,最后通過(guò)實(shí)驗(yàn)表現(xiàn)驗(yàn)證本方法的有效性。所提方法可用于跨指令集架構(gòu)、跨代碼混淆、跨編譯優(yōu)化等級(jí)等多種二進(jìn)制代碼相似性檢測(cè)場(chǎng)景。
現(xiàn)有二進(jìn)制代碼特征提取方法主要可分為動(dòng)態(tài)分析特征提取和靜態(tài)分析特征提取。動(dòng)態(tài)分析方法能夠準(zhǔn)確獲取代碼的功能語(yǔ)義。動(dòng)態(tài)分析環(huán)境搭建復(fù)雜度較高,難以適用于大規(guī)模分析場(chǎng)景。靜態(tài)分析方法利用反匯編或者反編譯技術(shù)能夠獲得較高的代碼覆蓋率,但是難以準(zhǔn)確獲取程序的實(shí)際執(zhí)行語(yǔ)義。
根據(jù)特征來(lái)源的不同,現(xiàn)有的靜態(tài)二進(jìn)制代碼相似度檢測(cè)技術(shù)可以分為以下幾類:基于語(yǔ)法特征、基于結(jié)構(gòu)特征和基于語(yǔ)義特征的檢測(cè)技術(shù)。
基于語(yǔ)法特征的檢測(cè)技術(shù)提取二進(jìn)制代碼中的助記符或操作碼、操作數(shù)、指令序列等作為相似性檢測(cè)的特征來(lái)源。此類方法依賴于對(duì)檢測(cè)目標(biāo)、檢測(cè)場(chǎng)景的精確設(shè)計(jì),易受編譯優(yōu)化、代碼混淆技術(shù)干擾。
基于結(jié)構(gòu)特征的檢測(cè)技術(shù)通常提取二進(jìn)制代碼的數(shù)據(jù)流轉(zhuǎn)信息,如CFG、數(shù)據(jù)流圖等作為相似性檢測(cè)的特征來(lái)源。并且通常需要結(jié)合如匯編代碼對(duì)二進(jìn)制函數(shù)進(jìn)行綜合表示。然后利用圖匹配算法等度量?jī)啥味M(jìn)制代碼的相似度。
基于語(yǔ)義特征的檢測(cè)技術(shù)獲取代碼的語(yǔ)義信息作為相似性檢測(cè)的特征來(lái)源。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,研究人員利用深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)代碼的語(yǔ)義信息,已經(jīng)取得了較好的效果。
循環(huán)神經(jīng)網(wǎng)絡(luò)被廣泛應(yīng)用于文本表示、神經(jīng)機(jī)器翻譯、時(shí)間序列預(yù)測(cè)與建模等任務(wù),適用于具有時(shí)間順序的任務(wù)。
LSTM通過(guò)引入門機(jī)制用于控制信息傳輸,用于解決標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)不能處理長(zhǎng)期依賴而出現(xiàn)的梯度消失或梯度爆炸問(wèn)題。
為了進(jìn)一步提升神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,研究人員在LSTM的基礎(chǔ)上進(jìn)行創(chuàng)新,如GRU[19]、BiLSTM[20]、Tree-LSTM、GraphLSTM[21]等。
GRU將LSTM中的輸入門和遺忘門合并為更新門,結(jié)合重置門用于控制序列信息的記憶或者遺忘。相較于LSTM,GRU具有更少的參數(shù)量,具備更快的收斂速度。BiLSTM是一種雙向的LSTM,相較于LSTM能夠更好地捕獲文本的雙向語(yǔ)義。
注意力機(jī)制最早出現(xiàn)在圖像領(lǐng)域,被廣泛應(yīng)用在基于循環(huán)神經(jīng)網(wǎng)絡(luò)/卷積神經(jīng)網(wǎng)絡(luò)的視覺(jué)圖像、自然語(yǔ)言處理任務(wù)中。
注意力機(jī)制能夠增強(qiáng)模型對(duì)輸入序列中不同元素的關(guān)注程度。它允許模型在預(yù)測(cè)和生成任務(wù)時(shí),動(dòng)態(tài)地聚焦于任務(wù)中的輸入部分。
本節(jié)介紹本方法的框架和訓(xùn)練流程,并給出相應(yīng)的符號(hào)描述。
圖2描述了模型的工作流,共包含特征提取、模型訓(xùn)練、相似性檢測(cè)3個(gè)階段:(1)使用IDA Pro對(duì)二進(jìn)制文件進(jìn)行反編譯并提取AST。由于AST中包含了節(jié)點(diǎn)的名稱、類別等特征,無(wú)法直接輸入網(wǎng)絡(luò)中,因此需要對(duì)AST進(jìn)行節(jié)點(diǎn)映射。(2)使用基于注意力機(jī)制的Child-Sum Tree-LSTM作為骨干網(wǎng)絡(luò)。AST中的節(jié)點(diǎn)通過(guò)Child-Sum Tree-LSTM后,以從葉子節(jié)點(diǎn)到根子節(jié)點(diǎn)的順序進(jìn)行遍歷,采用孿生網(wǎng)絡(luò)架構(gòu)對(duì)模型進(jìn)行訓(xùn)練,最終生成整個(gè)AST的語(yǔ)義向量。(3)利用語(yǔ)法樹相似度衡量二進(jìn)制函數(shù)的相似度。
圖2 模型框架和訓(xùn)練流程
圖3展示了對(duì)二進(jìn)制函數(shù)相似性檢測(cè)的流程,從二進(jìn)制代碼中提取的AST通過(guò)先序遍歷編碼生成初始向量輸入模型編碼后,得到AST嵌入,然后利用向量相似度度量語(yǔ)法樹相似度。
圖3 相似性檢測(cè)實(shí)例(xorriso.elf的Xorriso_option_extract_cut函數(shù))
語(yǔ)法樹相似度定義如下:給定兩個(gè)二進(jìn)制函數(shù)f1和f2及其對(duì)應(yīng)的AST表示T1和T2,使用Tree-LSTM對(duì)樹型特征進(jìn)行編碼得到對(duì)應(yīng)的向量N(T1)和N(T1)。最后使用兩個(gè)AST的相似度得分衡量?jī)啥味M(jìn)制代碼的相似性,AST相似度Sim(T1,T2)計(jì)算公式如式(1)所示:
Sim(T1,T2)=
softmax(σ(cat(|N(T1)-N(T2)|,N(T1)⊙N(T2))×W))
(1)
其中T=
特征提取階段使用二進(jìn)制分析工具IDA Pro7.0的Hex-rays插件對(duì)二進(jìn)制文件進(jìn)行反編譯提取AST。由于7.0版本的Hex-rays插件僅支持ARM和x86指令集的反編譯,在后續(xù)的實(shí)驗(yàn)中本文使用ARM、x86作為模型訓(xùn)練和測(cè)試的指令集架構(gòu)來(lái)源。
從二進(jìn)制代碼中提取的AST節(jié)點(diǎn)是字符串形式的數(shù)據(jù),無(wú)法直接輸入到神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,通過(guò)將節(jié)點(diǎn)映射到固定的整型數(shù)值實(shí)現(xiàn)對(duì)節(jié)點(diǎn)名稱的編碼[18]。AST的節(jié)點(diǎn)被分為語(yǔ)句節(jié)點(diǎn)和表達(dá)式節(jié)點(diǎn)2類。語(yǔ)句節(jié)點(diǎn)包括控制函數(shù)執(zhí)行流的節(jié)點(diǎn),而表達(dá)式節(jié)點(diǎn)則包含各種用于計(jì)算的節(jié)點(diǎn),如表1所示。
表1 AST中的標(biāo)簽映射關(guān)系
模型訓(xùn)練階段用于實(shí)現(xiàn)對(duì)二進(jìn)制AST語(yǔ)義嵌入。LSTM能夠捕獲句子中的詞序,并且有效地解決了RNN梯度消失的問(wèn)題。但是原生LSTM只能處理線性數(shù)據(jù),通過(guò)反編譯提取到的AST無(wú)法直接用于LSTM模型中。
Child-Sum Tree-LSTM能夠利用AST所有子節(jié)點(diǎn)的語(yǔ)義向量進(jìn)行聚合和前向傳播,以生成父節(jié)點(diǎn)和整棵樹的語(yǔ)義向量。由于其適用于多孩子節(jié)點(diǎn)的情況,并且具有更高的計(jì)算效率,因此本文采用此網(wǎng)絡(luò)作為對(duì)比網(wǎng)絡(luò)。
每個(gè)Child-Sum Tree-LSTM單元包含輸入輸出門ij和oj以及用于每個(gè)孩子k的遺忘門fjk。其內(nèi)部門狀態(tài)由所有子節(jié)點(diǎn)的隱藏狀態(tài)和更新,如式(2)所示:
(2)
其中,hk表示子節(jié)點(diǎn)k的隱藏狀態(tài),C(j)表示節(jié)點(diǎn)j的孩子節(jié)點(diǎn)。
(3)
(4)
(5)
其中xj表示節(jié)點(diǎn)嵌入,由節(jié)點(diǎn)Vj嵌入到高維向量生成,W(o)、W(c)、U(i)、U(o)、U(c)、b(i)、b(o)和b(c)為需要學(xué)習(xí)的參數(shù)矩陣。其中σ表示sigmoid函數(shù),能夠?qū)⑤斎氲南蛄哭D(zhuǎn)化為[0,1]區(qū)間內(nèi)的向量。
Child-Sum Tree-LSTM含了k個(gè)遺忘門,用于合并來(lái)自每個(gè)子節(jié)點(diǎn)的單個(gè)信息。
fjk=σ(W(f)xj+U(f)hk+b(f))
(6)
然后,多個(gè)遺忘門向量輸出與相應(yīng)的單元狀態(tài)相乘后組合得到單個(gè)遺忘門向量,模型的最終單元狀態(tài)cj如式(7)所示:
(7)
最后,Child-Sum Tree-LSTM的隱藏狀態(tài)hj更新方程如式(8)所示:
hj=oj⊙tanh(cj)
(8)
每一個(gè)參數(shù)矩陣代表輸入xi和組件單元的第k個(gè)子節(jié)點(diǎn)的隱藏狀態(tài)hk之間的相關(guān)性。
Child-Sum Tree-LSTM對(duì)AST進(jìn)行從葉子節(jié)點(diǎn)到根節(jié)點(diǎn)進(jìn)行遍歷時(shí),由不同組成部分或從屬部分的信息首先被組合起來(lái)表示上層的根節(jié)點(diǎn),然后這個(gè)根節(jié)點(diǎn)再作為子節(jié)點(diǎn)繼續(xù)遍歷的過(guò)程。在Child-Sum Tree-LSTM中,每個(gè)節(jié)點(diǎn)都會(huì)接收它的子節(jié)點(diǎn)的隱藏狀態(tài)和細(xì)胞狀態(tài),并將它們相加得到總的表示。
注意力機(jī)制因?yàn)樵趫D像領(lǐng)域取得了很好的效果而備受關(guān)注,它允許模型在做下游任務(wù)時(shí),能夠?qū)渥又械臄?shù)據(jù)進(jìn)行重要性區(qū)分。受相關(guān)研究的啟發(fā),本文將注意力機(jī)制和Child-Sum Tree-LSTM進(jìn)行融合,用于學(xué)習(xí)AST的語(yǔ)義向量。融合注意力機(jī)制的Child-Sum Tree-LSTM的隱藏狀態(tài)更新方程如式(11)所示:
Watt=softmax(attention(hj))
(9)
hatt=Watt⊙hj
(10)
hj=oj⊙(tanh(cj)+hatt)
(11)
其中,attention定義為一個(gè)線性層,維度為記憶單元向量的維度。注意力層引入的過(guò)程使得模型能夠根據(jù)注意力權(quán)重動(dòng)態(tài)地關(guān)注不同子節(jié)點(diǎn),并在計(jì)算當(dāng)前節(jié)點(diǎn)的隱藏狀態(tài)時(shí)加入子節(jié)點(diǎn)的注意力加權(quán)和。
綜上,使用神經(jīng)網(wǎng)絡(luò)建模二進(jìn)制代碼AST對(duì)的相似性包括兩個(gè)步驟:通過(guò)一個(gè)語(yǔ)義編碼器將兩段二進(jìn)制代碼表示為語(yǔ)義向量,然后使用這兩個(gè)向量進(jìn)行分類過(guò)程。訓(xùn)練后的模型可以用于二進(jìn)制代碼相似度檢測(cè)。
本方法部署在一臺(tái)搭載Ubuntu 20.04 LTS操作系統(tǒng)的工作站中。處理器為一顆Inter Xeon(R)Gold 5218R CPU@2.10 GHz,內(nèi)存大小為128 GB,顯卡為一張NVIDIA Corporation 3090,顯存大小為24 GB。神經(jīng)網(wǎng)絡(luò)向量嵌入維度為32,記憶狀態(tài)維度為200,訓(xùn)練epoch為30,學(xué)習(xí)率為0.01。訓(xùn)練結(jié)果為3次實(shí)驗(yàn)平均值。
為了評(píng)估本方法的有效性,使用開源數(shù)據(jù)集BINKIT[22]中的NOLINE和OBFUSCATION兩種類別的項(xiàng)目作為訓(xùn)練集和測(cè)試集。為了實(shí)現(xiàn)對(duì)跨指令集架構(gòu)以及跨混淆代碼的檢測(cè),選擇的所有項(xiàng)目都以Clang 7.0作為編譯器,編譯優(yōu)化為O0-O3,指令集架構(gòu)為ARM和x86,字長(zhǎng)為32,包含bcf、sub和fla三種代碼混淆方式,具體數(shù)據(jù)集介紹如表2所示。
表2 訓(xùn)練和測(cè)試數(shù)據(jù)集介紹
函數(shù)對(duì)池的構(gòu)造方式如下:以函數(shù)名作為函數(shù)語(yǔ)義標(biāo)簽,對(duì)無(wú)混淆數(shù)據(jù)和三種混淆數(shù)據(jù)使用隨機(jī)采樣生成訓(xùn)練數(shù)據(jù)對(duì)。其中,共生成7組函數(shù)池,每種函數(shù)池中包含4種優(yōu)化的數(shù)據(jù)。具體如表3所示。
表3 訓(xùn)練和測(cè)試樣本對(duì)構(gòu)造
訓(xùn)練集和測(cè)試集的構(gòu)造方式為:將函數(shù)對(duì)池打亂后隨機(jī)采樣函數(shù)對(duì),共生成54 000個(gè)函數(shù)對(duì)用于模型訓(xùn)練過(guò)程,6 000個(gè)函數(shù)對(duì)用于模型測(cè)試過(guò)程。其中正樣本對(duì)和負(fù)樣本對(duì)的比例為1∶1,無(wú)混淆數(shù)據(jù)對(duì)和混淆數(shù)據(jù)對(duì)的比例為2∶1,使用1和-1對(duì)相似對(duì)和不相似對(duì)進(jìn)行標(biāo)注。
本文選用的評(píng)價(jià)指標(biāo)為Accuracy、AUC和MSE。
AUC(Area Under the Curve):AUC是ROC曲線下面積,AUC越大,模型的辨別能力越好。ROC曲線通過(guò)繪制真陽(yáng)性率與假陽(yáng)性率之間的關(guān)系來(lái)表示模型在不同閾值下的表現(xiàn),能夠說(shuō)明模型的診斷能力。AUC反映了模型能否正確判斷AST是否為相似對(duì)的概率。函數(shù)對(duì)的相似性被計(jì)算為r的分?jǐn)?shù),并且設(shè)置閾值為β,如果得分r大于或者等于β,則該函數(shù)對(duì)被認(rèn)為是正結(jié)果,否則判斷為負(fù)結(jié)果。
(12)
(13)
其中,TP、FP、TN、FN分別表示:二進(jìn)制函數(shù)對(duì)為正,預(yù)測(cè)為正;二進(jìn)制函數(shù)對(duì)為負(fù),預(yù)測(cè)為正;二進(jìn)制函數(shù)對(duì)標(biāo)簽為正,預(yù)測(cè)為負(fù);二進(jìn)制函數(shù)對(duì)標(biāo)簽為負(fù),預(yù)測(cè)為負(fù)。
Accuracy:準(zhǔn)確率,用于衡量模型分類的性能。計(jì)算模型在所有樣本中正確分類的比例,準(zhǔn)確率的值越高表示模型的分類準(zhǔn)確性越好。計(jì)算公式如式(14)所示:
(14)
MSE(Mean Squared Error):均方誤差,用于衡量模型的性能。MSE用于計(jì)算預(yù)測(cè)值與真實(shí)值之間的平均平方差,其對(duì)預(yù)測(cè)值之間的差異性較為敏感。MSE的值越小表示模型對(duì)于觀測(cè)值的擬合效果越好。
實(shí)驗(yàn)結(jié)果如表4、圖4至圖6所示,訓(xùn)練過(guò)程中本文方法在測(cè)試集上的MSE曲線較低,證明本方法在相似對(duì)判別中具有更好的性能。同時(shí)本文方法在測(cè)試集中的AUC指標(biāo)為94.1%,比Child-Sum Tree-LSTM網(wǎng)絡(luò)93.6%的結(jié)果提高了0.5%,Accuracy指標(biāo)為66.2%,比Child-Sum Tree-LSTM網(wǎng)絡(luò)65.8%的結(jié)果提高了0.4%。
表4 測(cè)試集結(jié)果比較
圖4 訓(xùn)練過(guò)程測(cè)試集MSE對(duì)比
圖5 訓(xùn)練過(guò)程測(cè)試集AUC對(duì)比
圖6 訓(xùn)練過(guò)程測(cè)試集Accuracy對(duì)比
本節(jié)主要用于測(cè)試向量維度對(duì)于模型性能的影響,包括詞向量的嵌入維度和隱藏狀態(tài)維度。消融實(shí)驗(yàn)epoch為5。
從表5可以看出,模型的效果受到輸入向量維度和隱藏狀態(tài)維度的影響。實(shí)驗(yàn)結(jié)果表明,當(dāng)隱藏狀態(tài)為200時(shí),模型的效果優(yōu)于100。持續(xù)增大隱藏狀態(tài)維度會(huì)較大地增加算力消耗,所以本文采用的隱藏狀態(tài)為200。當(dāng)輸入向量維度為16和32時(shí),模型的測(cè)試結(jié)果接近。綜上,本文選擇的輸入維度為32,隱藏狀態(tài)維度為200。
表5 超參數(shù)驗(yàn)證
本文提出了一種融合注意力機(jī)制和Child-Sum Tree-LSTM的二進(jìn)制代碼相似度檢測(cè)技術(shù),用于跨指令集架構(gòu)、跨代碼混淆技術(shù)的檢測(cè)場(chǎng)景。首先利用二進(jìn)制分析工具提取跨指令集架構(gòu)、跨代碼混淆的二進(jìn)制代碼AST作為特征;然后構(gòu)建訓(xùn)練AST數(shù)據(jù)對(duì)用于模型訓(xùn)練;最后利用融合注意力機(jī)制和Child-Sum Tree-LSTM的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)AST的語(yǔ)義信息。實(shí)驗(yàn)表明,注意力機(jī)制增強(qiáng)了Child-Sum Tree-LSTM對(duì)二進(jìn)制AST的語(yǔ)義學(xué)習(xí)能力。
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2023年11期