欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于代碼塊序列的二進制同源漏洞檢測方法與流程

文檔序號:40598509發(fā)布日期:2025-01-07 20:39閱讀:8來源:國知局
一種基于代碼塊序列的二進制同源漏洞檢測方法與流程

本發(fā)明涉及電網(wǎng)終端程序,特別是一種基于代碼塊序列的二進制同源漏洞檢測方法。


背景技術(shù):

1、電網(wǎng)終端程序在現(xiàn)代電力系統(tǒng)中扮演著至關(guān)重要的角色,因此其安全性對電網(wǎng)穩(wěn)定和數(shù)據(jù)安全至關(guān)重要。傳統(tǒng)的漏洞檢測方法可能存在一定的局限性,特別是在處理復(fù)雜的電網(wǎng)終端程序時,傳統(tǒng)的漏洞檢測方法表現(xiàn)地不夠精準(zhǔn)。


技術(shù)實現(xiàn)思路

1、有鑒于此,本發(fā)明的目的在于提供一種基于代碼塊序列的二進制同源漏洞檢測方法,能夠更加準(zhǔn)確地識別和定位程序中的安全漏洞。

2、為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:一種基于代碼塊序列的二進制同源漏洞檢測方法,包括以下步驟:

3、步驟1:收集基于代碼塊序列樣本,構(gòu)建一個新的基于代碼塊序列的數(shù)據(jù)集;

4、步驟2:使用doc2vec學(xué)習(xí)匯編語言中的詞向量,將樣本中的匯編代碼塊進行block2vec表示,并統(tǒng)一樣本的向量維度;

5、步驟3:基于block2vec的機器學(xué)習(xí)模型。

6、在一較佳的實施例中,樣本收集步驟如下:

7、1)首先分析程序得到其函數(shù)plt表、程序代碼段的最大地址max_addr,如果不能獲取plt表,就采用上述方案重建函數(shù)plt表;

8、2)根據(jù)plt表中的地址下斷點,跟蹤并運行程序,同時發(fā)送poc;如果提取正常樣本就發(fā)送正常數(shù)據(jù)或給定正常參數(shù),如果要提取漏洞樣本則發(fā)送poc或給定指定參數(shù);記錄程序退出或崩潰前的函數(shù)調(diào)用序列、函數(shù)被調(diào)用次數(shù)以及退出或崩潰時的eip;

9、3)對函數(shù)調(diào)用序列逆序分析,找到第一個可以引入數(shù)據(jù)的函數(shù)及其調(diào)用次數(shù)n,通過查表得到該函數(shù)的plt地址in_addr;

10、4)再次附加到程序,在in_addr處斷下n次之后,單步跟蹤程序直到程序退出或崩潰,得到地址序列;另外,在這個過程要通過max_addr過濾系統(tǒng)空間的指令,因為這些指令已經(jīng)在調(diào)用的函數(shù)中體現(xiàn);

11、5)使用ida以及python-idb靜態(tài)分析每一條地址,得到分片的指令序列和函數(shù)調(diào)用序列,同時將call指令中的函數(shù)地址替換為對應(yīng)的函數(shù)名字。

12、在一較佳的實施例中,采用doc2vec來映射匯編代碼塊具體包括訓(xùn)練block2vec網(wǎng)絡(luò),獲得任意代碼塊的block2vec表示以及處理通過block2vec處理過后的數(shù)據(jù)。

13、在一較佳的實施例中,訓(xùn)練block2vec網(wǎng)絡(luò)包括以下步驟:

14、1)在接收到代碼塊輸入之后,將代碼塊中的內(nèi)容通過段落矩陣d映射為一個n維向量,將所有的匯編操作碼和操作數(shù)分別通過詞矩陣w映射為n維向量;

15、2)將匯編代碼塊向量和所有操作碼和操作數(shù)的向量加和求平均值或者級聯(lián),來預(yù)測段落內(nèi)的中心操作碼或操作數(shù);

16、3)通過反向傳播更新權(quán)值;在提取匯編代碼塊的過程中將其中的call調(diào)用直接替換為對應(yīng)的函數(shù),去掉其中重復(fù)的匯編代碼塊作為block2vec最終的訓(xùn)練樣本;然后采用pv-dm模式訓(xùn)練一個block2vec模型使其可以將任意一個代碼塊或任意一個詞映射為一個n維向量。

17、在一較佳的實施例中,使用訓(xùn)練好的block2vec模型對匯編代碼塊序列進行編碼的具體步驟如下:

18、1)將需要進行編碼的匯編代碼塊拆分成單獨的匯編操作碼或操作數(shù);

19、2)分別獲取第一步拆分出來的操作碼或操作數(shù)的block2vec表示;

20、3)將所有的操作數(shù)和操作碼的n維向量表示進行加和求平均,得到該匯編代碼塊的n維向量表示。

21、在一較佳的實施例中,處理通過block2vec處理過后的數(shù)據(jù)具體包括:1)選取一個固定長度flen,這里選訓(xùn)練數(shù)據(jù)中的最大長度;2)如果某訓(xùn)練數(shù)據(jù)不足flen,使用0填充,使其長度正好為flen;3)如果預(yù)測的時候,數(shù)據(jù)長度大于flen,就截取長度為flen的數(shù)據(jù)。

22、在一較佳的實施例中,基于block2vec的機器學(xué)習(xí)模型中假設(shè)某個匯編代碼樣本有l(wèi)行,其中,每一行表示一個基本塊;將匯編代碼塊序列中的每一行作為一個段落,通過block2vec映射為一個n維向量,最終得到l*n的向量;將這l行向量進行串聯(lián),再經(jīng)過統(tǒng)一維度處理,得到一個f維向量,f的計算公式如下:

23、f=m*n(3-3)

24、其中,m代表所有訓(xùn)練集樣本中的最大行數(shù),n代表每個代碼塊進行block2vec表示后的向量維度。

25、在一較佳的實施例中,采用rnn-lstm模型和text-cnn模型進行訓(xùn)練;rnn-lstm模型中對于每一個樣本,經(jīng)過預(yù)處理后為一個f維向量,其中,f=m*n;每次從中取出n個數(shù)據(jù)作為lstm的輸入,相當(dāng)于每次通過lstm單元處理一個基本塊的block2vec表示;在經(jīng)過lstm單元處理之后,將狀態(tài)s和下一行基本塊的n維表示交給下一個時間步的lstm單元,通過m個時間步長將該樣本的所有信息用于模型訓(xùn)練;將最后一個時間步的輸出通過全連接層使用relu激活函數(shù)得到最終結(jié)果;將每一步的結(jié)果和期望結(jié)果相比較,從而計算損失值,然后通過梯度下降算法去優(yōu)化網(wǎng)絡(luò)中的權(quán)重;在訓(xùn)練的過程中,使用batch_size指定在每一步輸入的樣本個數(shù),從而通過m個時間步長對batch_size個樣本進行訓(xùn)練;其中,batch_size代表批處理的長度。

26、在一較佳的實施例中,去除text-cnn網(wǎng)絡(luò)中的嵌入層,提出基于block2vec的text-cnn模型,將text-cnn模型的應(yīng)用范圍擴寬到漏洞挖掘領(lǐng)域;text-cnn模型分為兩個部分:第一部分是將block轉(zhuǎn)換成vector;第二部分是將vector向量輸入text-cnn網(wǎng)絡(luò)中進行訓(xùn)練,得到text-cnn預(yù)測模型;第一部分主要是將樣本中的匯編代碼塊序列表示為機器可以處理的向量數(shù)據(jù);對于每一組匯編代碼塊序列,首先通過block2vec將每個匯編代碼塊映射為n維向量然后將其轉(zhuǎn)換成l*n的二維向量;然后根據(jù)最大行數(shù)m來確定固定長度,通過補0將每個樣本轉(zhuǎn)換成m*n的向量矩陣;第二部分匯編代碼向量的卷積和最大池化過程;卷積和最大池化是cnn取得成功的法寶之一,在圖像處理領(lǐng)域已經(jīng)非常成熟;m*n的匯編代碼向量矩陣,首先要通過卷積層,在卷積層中指定多個大小的卷積核;它會通過一個卷積核為h*n的卷積層,其中h表示卷積核的高度,n表示卷積核的寬度;卷積核在輸入?yún)R編代碼向量的空間維度上進行滑窗操作;每次滑窗與(h,n)窗口內(nèi)的所有的數(shù)據(jù)進行相關(guān)操作,得到輸出向量的n-gram特征,然后通過非線性激活引入非線性因素;經(jīng)過激活函數(shù)處理后n-gram特征會進入最大池化層進行特征壓縮,最后接上全連接層,使用softmax進行歸一化,得到最終的預(yù)測結(jié)果。

27、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:本發(fā)明提出的一種基于代碼塊序列的二進制同源漏洞檢測方法通過結(jié)合動態(tài)分析和控制流圖建模,能夠更加準(zhǔn)確地識別和定位程序中的安全漏洞。



技術(shù)特征:

1.一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,包括以下步驟:

2.根據(jù)權(quán)利要求1所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,樣本收集步驟如下:

3.根據(jù)權(quán)利要求1所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,采用doc2vec來映射匯編代碼塊具體包括訓(xùn)練block2vec網(wǎng)絡(luò),獲得任意代碼塊的block2vec表示以及處理通過block2vec處理過后的數(shù)據(jù)。

4.根據(jù)權(quán)利要求3所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,訓(xùn)練block2vec網(wǎng)絡(luò)包括以下步驟:

5.根據(jù)權(quán)利要求3所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,使用訓(xùn)練好的block2vec模型對匯編代碼塊序列進行編碼的具體步驟如下:

6.根據(jù)權(quán)利要求3所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,處理通過block2vec處理過后的數(shù)據(jù)具體包括:1)選取一個固定長度flen,這里選訓(xùn)練數(shù)據(jù)中的最大長度;2)如果某訓(xùn)練數(shù)據(jù)不足flen,使用0填充,使其長度正好為flen;3)如果預(yù)測的時候,數(shù)據(jù)長度大于flen,就截取長度為flen的數(shù)據(jù)。

7.根據(jù)權(quán)利要求1所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,基于block2vec的機器學(xué)習(xí)模型中假設(shè)某個匯編代碼樣本有l(wèi)行,其中,每一行表示一個基本塊;將匯編代碼塊序列中的每一行作為一個段落,通過block2vec映射為一個n維向量,最終得到l*n的向量;將這l行向量進行串聯(lián),再經(jīng)過統(tǒng)一維度處理,得到一個f維向量,f的計算公式如下:

8.根據(jù)權(quán)利要求7所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,采用rnn-lstm模型和text-cnn模型進行訓(xùn)練;rnn-lstm模型中對于每一個樣本,經(jīng)過預(yù)處理后為一個f維向量,其中,f=m*n;每次從中取出n個數(shù)據(jù)作為lstm的輸入,相當(dāng)于每次通過lstm單元處理一個基本塊的block2vec表示;在經(jīng)過lstm單元處理之后,將狀態(tài)s和下一行基本塊的n維表示交給下一個時間步的lstm單元,通過m個時間步長將該樣本的所有信息用于模型訓(xùn)練;將最后一個時間步的輸出通過全連接層使用relu激活函數(shù)得到最終結(jié)果;將每一步的結(jié)果和期望結(jié)果相比較,從而計算損失值,然后通過梯度下降算法去優(yōu)化網(wǎng)絡(luò)中的權(quán)重;在訓(xùn)練的過程中,使用batch_size指定在每一步輸入的樣本個數(shù),從而通過m個時間步長對batch_size個樣本進行訓(xùn)練;其中,batch_size代表批處理的長度。

9.根據(jù)權(quán)利要求8所述的一種基于代碼塊序列的二進制同源漏洞檢測方法,其特征在于,去除text-cnn網(wǎng)絡(luò)中的嵌入層,提出基于block2vec的text-cnn模型,將text-cnn模型的應(yīng)用范圍擴寬到漏洞挖掘領(lǐng)域;text-cnn模型分為兩個部分:第一部分是將block轉(zhuǎn)換成vector;第二部分是將vector向量輸入text-cnn網(wǎng)絡(luò)中進行訓(xùn)練,得到text-cnn預(yù)測模型;第一部分主要是將樣本中的匯編代碼塊序列表示為機器可以處理的向量數(shù)據(jù);對于每一組匯編代碼塊序列,首先通過block2vec將每個匯編代碼塊映射為n維向量然后將其轉(zhuǎn)換成l*n的二維向量;然后根據(jù)最大行數(shù)m來確定固定長度,通過補0將每個樣本轉(zhuǎn)換成m*n的向量矩陣;第二部分匯編代碼向量的卷積和最大池化過程;卷積和最大池化是cnn取得成功的法寶之一,在圖像處理領(lǐng)域已經(jīng)非常成熟;m*n的匯編代碼向量矩陣,首先要通過卷積層,在卷積層中指定多個大小的卷積核;它會通過一個卷積核為h*n的卷積層,其中h表示卷積核的高度,n表示卷積核的寬度;卷積核在輸入?yún)R編代碼向量的空間維度上進行滑窗操作;每次滑窗與(h,n)窗口內(nèi)的所有的數(shù)據(jù)進行相關(guān)操作,得到輸出向量的n-gram特征,然后通過非線性激活引入非線性因素;經(jīng)過激活函數(shù)處理后n-gram特征會進入最大池化層進行特征壓縮,最后接上全連接層,使用softmax進行歸一化,得到最終的預(yù)測結(jié)果。


技術(shù)總結(jié)
本發(fā)明提供一種基于代碼塊序列的二進制同源漏洞檢測方法,包括以下步驟:步驟1:收集基于代碼塊序列樣本,構(gòu)建一個新的基于代碼塊序列的數(shù)據(jù)集;步驟2:使用Doc2Vec學(xué)習(xí)匯編語言中的詞向量,將樣本中的匯編代碼塊進行Block2Vec表示,并統(tǒng)一樣本的向量維度;步驟3:基于Block2Vec的機器學(xué)習(xí)模型。應(yīng)用本技術(shù)方案能夠更加準(zhǔn)確地識別和定位程序中的安全漏洞。

技術(shù)研發(fā)人員:張坤三,陳玉明,周方亮,薛淑倩,陳倩,洪汛,呂泓釗,楊泓,林晉煌,盧黃平,楊柳娟,范宗賢,程澤森,李嘉琪
受保護的技術(shù)使用者:國網(wǎng)福建省電力有限公司漳州供電公司
技術(shù)研發(fā)日:
技術(shù)公布日:2025/1/6
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
洪江市| 兴海县| 房产| 同心县| 岢岚县| 襄垣县| 朝阳县| 万年县| 阜宁县| 临高县| 汶川县| 保德县| 青冈县| 马山县| 芜湖市| 黄冈市| 垫江县| 全南县| 丹凤县| 娄烦县| 定陶县| 准格尔旗| 张家港市| 杭锦后旗| 璧山县| 淮北市| 天峻县| 福清市| 忻州市| 连江县| 铅山县| 衢州市| 青海省| 常德市| 湘阴县| 娄底市| 乌海市| 信丰县| 论坛| 长沙市| 白水县|