国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述

這篇具有很好參考價(jià)值的文章主要介紹了安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文參考:
[1]方磊,武澤慧,魏強(qiáng).二進(jìn)制代碼相似性檢測(cè)技術(shù)綜述[J].計(jì)算機(jī)科學(xué),2021,48(05):1-8.
(信息工程大學(xué)數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室, 國(guó)家重點(diǎn)研發(fā)課題,北大核心)


摘要

代碼相似性檢測(cè)常用于代碼預(yù)測(cè)知識(shí)產(chǎn)權(quán)保護(hù)漏洞搜索等領(lǐng)域,可分為源代碼相似性檢測(cè)二進(jìn)制代碼相似性檢測(cè)。軟件的源代碼通常難以獲得,因此針對(duì)二進(jìn)制代碼的相似性檢測(cè)技術(shù)能夠適用的場(chǎng)景更加廣泛。

根據(jù)關(guān)注的代碼信息的不同,當(dāng)前的二進(jìn)制代碼相似性檢測(cè)技術(shù)分為4類:基于文本、基于屬性度量、基于程序邏輯、基于語(yǔ)義的檢測(cè)技術(shù)。

需要解決的難題:跨編譯器、跨編譯器優(yōu)化配置、跨指令架構(gòu)檢測(cè)等。
代表性方法和工具:Karta, discovRE,Genius, Gemini,SAFE等。

1 研究背景及其意義

代碼相似性的概念源于軟件分析技術(shù),目前還沒(méi)有標(biāo)準(zhǔn)和權(quán)威的定義。通常認(rèn)為,如果一段代碼是由另一段代碼復(fù)制或經(jīng)過(guò)一定規(guī)則變換而來(lái)的,則認(rèn)為它們是相似的。二進(jìn)制代碼的相似性是指由同一或相似的源代碼編譯得到的不同二進(jìn)制代碼是相似的。

代碼相似性檢測(cè)通常應(yīng)用于但不限于代碼預(yù)測(cè)(即根據(jù)現(xiàn)有的代碼預(yù)測(cè)可能的代碼修改和更新,提供代碼模板推薦)、知識(shí)產(chǎn)權(quán)保護(hù)(即發(fā)現(xiàn)代碼中未經(jīng)授權(quán)的代碼的復(fù)用和克隆,協(xié)助軟件所有者保護(hù)知識(shí)產(chǎn)權(quán)或規(guī)避潛在的侵權(quán)行為)、漏洞搜索(如脆弱代碼搜索、軟件漏洞追蹤和定位)。

2 相關(guān)研究

2.1 代碼相似性檢測(cè)的基本流程

whale于1988年提出代碼相似性檢測(cè)過(guò)程分為兩個(gè)階段:代碼格式轉(zhuǎn)換相似度確定。具體展開(kāi)又有4個(gè)部分:代碼預(yù)處理、中間表示轉(zhuǎn)換、比較單元生成和度量算法匹配

  • 代碼預(yù)處理的目的是剔除部分與代碼相似性無(wú)關(guān)的或影響較小的信息,同時(shí)規(guī)范和統(tǒng)一輸入格式以便于處理,其操作通常包括:統(tǒng)一代碼布局、去除無(wú)關(guān)字符(如空行、注釋)、替換名稱(如自定義函數(shù)名、數(shù)據(jù)名和通用寄存器名)、程序切片等。
  • 中間表示轉(zhuǎn)換的目的是在盡量不改變代碼攜帶信息的前提下,提取感興趣的信息(如字節(jié)流、字符串、可度量屬性、控制流和數(shù)據(jù)流,以及代碼的詞法、語(yǔ)法和語(yǔ)義等),并將其轉(zhuǎn)換成自動(dòng)化程序可處理和比較的其他形式,該步驟一般借助于編譯器、反編譯器、程序分析器或自定義規(guī)則等進(jìn)行轉(zhuǎn)換。
    中間表示形式有線性結(jié)構(gòu)(字符串或序列)、樹(shù)形結(jié)構(gòu)(抽象語(yǔ)法樹(shù)或XML文檔等)、圖形結(jié)構(gòu)(控制流圖或數(shù)據(jù)流圖等)和其他非線性結(jié)構(gòu)(多維特征向量或特征矩陣)。
  • 比較單元生成是對(duì)代碼或其中間表示進(jìn)行切分或聚合,得到便于相似性度量的最小單元。常見(jiàn)的比較單元有字符串、標(biāo)識(shí)符(Token)序列、特征向量、樹(shù)的結(jié)點(diǎn)及其子樹(shù)、圖的節(jié)點(diǎn)及其子圖等,也可以是中間表示本身。
    比較單元還可以分為固定粒度和自由粒度。針對(duì)固定粒度,如果粒度太大,那么檢測(cè)的準(zhǔn)確度會(huì)降低;如果粒度太小,那么檢測(cè)的工作量會(huì)增加。在實(shí)際操作中需要根據(jù)中間表示的形式和任務(wù)目標(biāo)選擇合適的檢測(cè)粒度。
  • 度量算法匹配是根據(jù)不同形式的比較單元,采用與之相適應(yīng)的相似性度量算法(如串搜索、向量距離計(jì)算、子樹(shù)和子圖的匹配、聚類等),度量檢測(cè)對(duì)象之間的相似性。

安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述

2.2 二進(jìn)制代碼相似性檢測(cè)的難題

二進(jìn)制代碼通常由源代碼編譯而來(lái),源代碼級(jí)的復(fù)制和修改也會(huì)部分體現(xiàn)在相應(yīng)的二進(jìn)制代碼中。代碼克隆(也稱代碼抄襲)和混淆手段雖然多應(yīng)用于源代碼的復(fù)制和修改,但也可以用于可執(zhí)行二進(jìn)制程序或組件的篡改或修補(bǔ)。除此之外,同一源代碼經(jīng)過(guò)不同的編譯器和優(yōu)化配置,針對(duì)不同的硬件平臺(tái),編譯得到的二進(jìn)制代碼不盡相同,因此二進(jìn)制代碼相似性檢測(cè)會(huì)遇到其特有的難題,且該難題較源代碼檢測(cè)更為復(fù)雜。

在檢測(cè)由同一源代碼編譯得到的二進(jìn)制代碼時(shí),可能會(huì)遇到以下難題:
難題1 跨編譯器問(wèn)題。由于設(shè)計(jì)目的和采用的算法不同,不同的編譯器產(chǎn)生的二進(jìn)制代碼不盡相同。例如,雖然寄存器的選擇過(guò)程是通過(guò)各種啟發(fā)方式和復(fù)雜的代碼來(lái)傳遞驅(qū)動(dòng)的,但在某些情況下,即使存在公共約定,編譯器也不會(huì)完全遵守。這些都導(dǎo)致了寄存器選擇的任意性。
難題2 跨編譯優(yōu)化配置問(wèn)題。同一版本的編譯器采用不同的編譯優(yōu)化配置所產(chǎn)生的二進(jìn)制代碼不盡相同。例如,可執(zhí)行程序的調(diào)試版本相比發(fā)行版本會(huì)增加許多與調(diào)試相關(guān)的信息和調(diào)用。不同的優(yōu)化等級(jí),其區(qū)別在于增加或減少了對(duì)堆棧的檢查和清理等操作,會(huì)導(dǎo)致最終的可執(zhí)行文件的長(zhǎng)度發(fā)生顯著變化。再比如在x86-64架構(gòu)下的GCC編譯器,只有在-O0不優(yōu)化的編譯條件下,寄存器rbp才具有幀指針的特殊用途。
難題3 跨指令架構(gòu)問(wèn)題。不同指令架構(gòu)的二進(jìn)制代碼不同。不同架構(gòu)的指令集、寄存器、機(jī)器字長(zhǎng)都有較大差異,從而導(dǎo)致相應(yīng)的二進(jìn)制代碼差異巨大。

這些二進(jìn)制代碼來(lái)自同一源代碼,因此具有相同的功能且語(yǔ)義等價(jià),但其匯編指令和語(yǔ)法可能略有差異甚至截然不同。二進(jìn)制代碼相似性檢測(cè)需要根據(jù)不同應(yīng)用場(chǎng)景來(lái)屏蔽噪聲干擾,提取代碼中需要關(guān)注的信息。

3 二進(jìn)制代碼相似性檢測(cè)技術(shù)的分類

3.1 基于文本

  • 基于標(biāo)識(shí)符的檢測(cè):(需要反匯編)首先模糊通用寄存器名和內(nèi)存地址,然后提取指令的操作碼和操作數(shù),或者提取字符串以生成標(biāo)識(shí)符序列,最后通過(guò)子序列匹配來(lái)判斷不同代碼是否相似。

    • Karta是著名的靜態(tài)反編譯程序IDAPro的二進(jìn)制程序匹配插件,首先利用唯一的數(shù)值常數(shù)和字符串等標(biāo)識(shí)符來(lái)設(shè)置庫(kù)的錨點(diǎn)函數(shù),然后通過(guò)在二進(jìn)制文件中查找錨點(diǎn)函數(shù)來(lái)縮小搜索范圍,最后利用標(biāo)識(shí)來(lái)進(jìn)一步確定靜態(tài)編譯的開(kāi)源庫(kù)的確切版本并匹配函數(shù)符號(hào),其也可以在這一步驟使用函數(shù)調(diào)用列表來(lái)匹配一組相似函數(shù)。
    • DarunGrim2是基于指紋哈希匹配的二進(jìn)制文件比較工具,它忽略了匯編代碼中的操作數(shù),將程序基本塊的指令序列的哈希值作為相似特征,此外它還以程序中符號(hào)名稱的匹配作為輔助手段。
  • 基于字節(jié)流的檢測(cè):不對(duì)二進(jìn)制代碼進(jìn)行反匯編,直接比較程序的二進(jìn)制字節(jié)流是否相近。

    • αDiff 檢測(cè)算法:利用二維卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)對(duì)程序的二進(jìn)制字節(jié)進(jìn)行嵌入(嵌入既可以指神經(jīng)網(wǎng)絡(luò)將其他形式的輸入轉(zhuǎn)換為向量形式的輸出的過(guò)程,也可以指神經(jīng)網(wǎng)絡(luò)的輸出,即高維向量),并綜合函數(shù)出入度和調(diào)用表的統(tǒng)計(jì)特征來(lái)構(gòu)建特征向量,用向量之間的距離來(lái)度量程序間的相似性。

基于文本的檢測(cè)因?yàn)椴豢紤]程序的語(yǔ)法和語(yǔ)義等信息,所以其原理和實(shí)現(xiàn)較其他技術(shù)更簡(jiǎn)單,其時(shí)空復(fù)雜度也較低。該類技術(shù)主要針對(duì)未應(yīng)用復(fù)雜混淆手段的代碼克隆和復(fù)用,該類檢測(cè)方法由于容易實(shí)現(xiàn)對(duì)抗檢測(cè),因此常作為一種高效的輔助檢測(cè)手段。

3.2 基于屬性度量

基于屬性度量的檢測(cè)技術(shù)關(guān)注程序匯編代碼中可度量的屬性和特征,提取屬性和特征的度量值,構(gòu)成多維向量(該方案認(rèn)為特征向量能夠從不同維度標(biāo)識(shí)代碼段),以特征向量之間的距離來(lái)度量代碼段之間的相似度大小。這類方法需要確定檢測(cè)的最小粒度(如基本塊或函數(shù)),在最小粒度范圍內(nèi)通過(guò)對(duì)屬性和特征的統(tǒng)計(jì)計(jì)數(shù)來(lái)獲得度量值。度量值可能是但不限于是特定常量指令等標(biāo)識(shí)、函數(shù)的輸入和輸出等對(duì)象的計(jì)數(shù)。

  • discovRE:基于跨架構(gòu)的統(tǒng)計(jì)特征縮小相似函數(shù)的搜索范圍。該方法首先通過(guò)人工篩選的特征來(lái)構(gòu)建函數(shù)的簡(jiǎn)單特征向量(這些特征包含算術(shù)指令、函數(shù)調(diào)用、重定向、轉(zhuǎn)移指令、局部變量、基本塊、導(dǎo)入函數(shù)、所有指令和參數(shù)等對(duì)象的統(tǒng)計(jì)個(gè)數(shù)),利用kNN(k-Nearest Neighbors)算法計(jì)算函數(shù)的相似距離,從而實(shí)現(xiàn)預(yù)篩選可能相似的函數(shù),降低后續(xù)基于函數(shù)控制流圖(Control Flow Graph, CFG)的最大子圖同構(gòu)匹配方法的計(jì)算量。
  • BinDiff:二進(jìn)制文件比較工具,能快速查找匯編代碼中的差異性和相似性。基于圖形和指紋理論開(kāi)發(fā)的 IDAPro 插件,其函數(shù)匹配主要是基于從 CFG 中得到的 NEC 值,即基本塊數(shù)(Nodes)、邊數(shù)(Edges)、調(diào)用數(shù)(Calls)。

基于屬性度量的檢測(cè)方法因?yàn)椴豢紤]程序的邏輯結(jié)構(gòu),所以其統(tǒng)計(jì)特征易于實(shí)現(xiàn),但其提取的信息十分有限,因此常作為一種輔助方法。主要問(wèn)題是,屬性特征是人為設(shè)計(jì)和篩選的,難以保證各屬性都處于不同的維度,不同屬性之間可能存在擬合問(wèn)題,因此盲目地增加屬性特征的種類,不僅可能無(wú)法有效提高檢測(cè)的準(zhǔn)確度,而且會(huì)增加計(jì)算開(kāi)銷。

3.3 基于程序邏輯

基于程序邏輯的檢測(cè)技術(shù):利用列表、樹(shù)形或圖形等數(shù)據(jù)結(jié)構(gòu)來(lái)記錄和描繪程序的數(shù)據(jù)流或控制流信息(該類技術(shù)認(rèn)為所得的中間表示能夠捕獲程序中一定的語(yǔ)法和語(yǔ)義信息),通過(guò)匹配相似的序列、節(jié)點(diǎn)或邊、公共子樹(shù)或子圖來(lái)尋找邏輯或功能相似的程序基本塊或函數(shù)。

程序的數(shù)據(jù)邏輯在函數(shù)內(nèi)部體現(xiàn)為數(shù)據(jù)的流向和運(yùn)算,在函數(shù)外部體現(xiàn)為函數(shù)的輸入和輸出。

  • 例如,Multi-MH系統(tǒng)通過(guò)基本塊的輸入和輸出行為來(lái)掌握其語(yǔ)義,利用簽名來(lái)查找具有類似行為的漏洞代碼。二進(jìn)制搜索引擎Bingo利用從符號(hào)表達(dá)式中生成的輸入和輸出樣例來(lái)匹配語(yǔ)義相似的函數(shù)。

程序的控制邏輯在函數(shù)間可以用函數(shù)調(diào)用序列來(lái)描述,在函數(shù)內(nèi)部可以用CFG來(lái)描繪,在基本塊級(jí)可以用邏輯樹(shù)來(lái)表示。

  • 例如,工具HAWK實(shí)現(xiàn)了一種基于系統(tǒng)調(diào)用依賴圖(System Call Dependence Graph, SCDG)胎記的動(dòng)態(tài)檢測(cè)方法;Pewny等提出的TEDEM方法利用表達(dá)式樹(shù)的編輯距離來(lái)度量基本塊級(jí)別的相似性;discovRE和Genius[23]是比較著名的基于屬性優(yōu)化CFG的二進(jìn)制相似性檢測(cè)系統(tǒng),其采用了各自經(jīng)優(yōu)化的圖匹配算法;Esh[24],BinHunt[25],iBinHunt[26]等工具在基于CFG的基礎(chǔ)上,利用了符號(hào)執(zhí)行來(lái)確定基本塊或函數(shù)的相似性。

基于程序邏輯的檢測(cè)方法的優(yōu)點(diǎn)是準(zhǔn)確度較高,可以根據(jù)不同的任務(wù)采用不同的匹配算法和策略,可伸縮性強(qiáng)。其缺點(diǎn)是時(shí)空復(fù)雜度高:一方面,數(shù)據(jù)流和CFG的提取過(guò)程代價(jià)非常昂貴;另一方面,相似性度量所依賴的圖匹配算法的時(shí)間復(fù)雜度缺少多項(xiàng)式解,圖匹配算法又多是兩兩匹配算法,因此在面對(duì)大規(guī)模查詢?nèi)蝿?wù)時(shí),計(jì)算量隨代碼庫(kù)規(guī)模成幾何倍數(shù)式增長(zhǎng)。

針對(duì)該問(wèn)題,一種方法是從中間表示CFG入手,利用其他輔助檢測(cè)技術(shù)來(lái)為CFG引入輕量級(jí)且易于度量的屬性,從而簡(jiǎn)化CFG的節(jié)點(diǎn),例如discovRE利用輕量級(jí)的統(tǒng)計(jì)特征來(lái)篩選候選函數(shù),降低圖匹配算法的任務(wù)量。另一種方法是從圖匹配算法入手,采用近似圖匹配算法來(lái)提高檢測(cè)效率,在準(zhǔn)確度和速度之間進(jìn)行折中,但該方法受限于圖匹配算法的效率,對(duì)檢測(cè)效率的提升有限。近年來(lái)神經(jīng)網(wǎng)絡(luò)技術(shù)被用于該領(lǐng)域,以解決傳統(tǒng)圖匹配算法遇到的效率瓶頸問(wèn)題。具代表性的是Qian等提出的Genius系統(tǒng),該系統(tǒng)利用機(jī)器學(xué)習(xí)的譜聚類算法[27]來(lái)對(duì)函數(shù)的CFG進(jìn)行分類并生成碼本(Codebook),再對(duì)碼本進(jìn)行編碼,將相似函數(shù)的搜索問(wèn)題轉(zhuǎn)化為特征編碼的搜索問(wèn)題,極大地提高了效率并兼顧了結(jié)果的準(zhǔn)確度。

3.4 基于語(yǔ)義

“語(yǔ)義”的概念來(lái)自自然語(yǔ)言,若將匯編語(yǔ)言的指令看作“單詞”,基本塊看作“句子”,則可得到相應(yīng)的二進(jìn)制代碼的“詞法”和“語(yǔ)法”概念,從而函數(shù)具有完整的“語(yǔ)義”,但是CFG主要包含程序的控制流信息,該信息僅是函數(shù)所包含的豐富語(yǔ)義信息的一部分。
本文中的基于語(yǔ)義的檢測(cè)技術(shù),通過(guò)捕獲程序匯編代碼中的語(yǔ)義信息,來(lái)比較函數(shù)或組件的語(yǔ)義差異,以實(shí)現(xiàn)相似性度量。這類方法通常借鑒自然語(yǔ)言處理(Natural Language Processing, NLP)、圖像識(shí)別或其他領(lǐng)域的技術(shù),利用深度神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)程序語(yǔ)義的嵌入,通過(guò)對(duì)嵌入向量的比較或查詢操作來(lái)實(shí)現(xiàn)大規(guī)模任務(wù)的處理。其二進(jìn)制代碼的中間表示包括規(guī)范化的匯編文本、其他中間語(yǔ)言或CFG,神經(jīng)網(wǎng)絡(luò)模型多采用暹羅架構(gòu)(Siamese Architecture)[30],利用程序代碼的大規(guī)模特點(diǎn)構(gòu)造來(lái)訓(xùn)練樣本庫(kù),相關(guān)領(lǐng)域的專家和先驗(yàn)知識(shí)可能不是必須的。

  • Xu 等[28]于2017年提出了一種基于神經(jīng)網(wǎng)絡(luò)生成的二進(jìn)制函數(shù) CFG 嵌入的方法,其在名為 Gemini 的系統(tǒng)中,利用改進(jìn)的 Structure2Vec [31]模型(Structure2Vec 結(jié)構(gòu)感知模型的靈感來(lái)自圖形模型推理算法,該算法根據(jù)圖的拓?fù)浣Y(jié)構(gòu)遞歸地聚合得到特定于頂點(diǎn)的特征向量)來(lái)構(gòu)成暹羅架構(gòu)網(wǎng)絡(luò),將函數(shù)的CFG嵌入高維向量,通過(guò)計(jì)算向量的余弦距離來(lái)度量函數(shù)間的相似性。
  • Ding 等[32]提出的Asm2vec模型,是基于改進(jìn)的 PV-DM[33]模型(PV-DM神經(jīng)網(wǎng)絡(luò)模型是為文本數(shù)據(jù)而設(shè)計(jì)的,基于文檔中的標(biāo)識(shí)來(lái)學(xué)習(xí)文檔表征)的匯編代碼表征學(xué)習(xí)模型。該模型利用自定義的函數(shù)內(nèi)聯(lián)和隨機(jī)漫步機(jī)制,將函數(shù)的CFG建模為匯編指令的線性序列,以該匯編文本為輸入,不需要任何先驗(yàn)知識(shí),學(xué)習(xí)指令的語(yǔ)義,構(gòu)建指令嵌入向量,最終得到函數(shù)的語(yǔ)義嵌入向量。Asm2vec是第一個(gè)將表征學(xué)習(xí)作為匯編代碼構(gòu)建特征向量的方案,具有優(yōu)秀的抗混淆和抗編譯器優(yōu)化特性,但其不能用于跨架構(gòu)比較。
  • Luca 等提出的 SAFE 網(wǎng)絡(luò),先利用 NLP 的 word2vec[34] 模型(word2Vec 是谷歌于2013年推出的一款 NLP 工具,其特點(diǎn)是能將單詞向量化,定量度量單詞之間的關(guān)系[35])來(lái)實(shí)現(xiàn)匯編語(yǔ)言的指令嵌入,再利用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)來(lái)捕獲指令序列的上下文關(guān)系[36],最終實(shí)現(xiàn)函數(shù)的嵌入,SAFE摒棄了CFG作為中間表示,匯編代碼的語(yǔ)義信息直接由深度神經(jīng)網(wǎng)絡(luò)嵌入到高維向量中,這樣既省去了會(huì)消耗大量時(shí)間的CFG提取過(guò)程,又避免了人為偏見(jiàn)的引入。SAFE模型利用RNN網(wǎng)絡(luò)構(gòu)建了暹羅架構(gòu)并采用有監(jiān)督的學(xué)習(xí)方法來(lái)訓(xùn)練模型,雖然其可以由程序自動(dòng)隨機(jī)構(gòu)造正樣本對(duì)和副樣本對(duì),但針對(duì)跨架構(gòu)檢測(cè)任務(wù)的訓(xùn)練,隨著系統(tǒng)支持指令架構(gòu)種類的增加,在理論上,其訓(xùn)練樣本庫(kù)的規(guī)模需要根據(jù)不同架構(gòu)的組合成倍地?cái)U(kuò)大,這就限制了該模型的可擴(kuò)展性。
  • GeneDiff[37]是一種使用語(yǔ)義表征模型來(lái)學(xué)習(xí)二進(jìn)制代碼中間語(yǔ)言,從而實(shí)現(xiàn)跨架構(gòu)克隆檢測(cè)研究的方法。它借助動(dòng)態(tài)分析VEX IR(VEX IR是動(dòng)態(tài)分析框架Valgrind[38-39]的中間語(yǔ)言,是一種二地址形式的中間表示,支持多種指令架構(gòu))的中間語(yǔ)言消除了不同指令架構(gòu)之間的差異,通過(guò)改進(jìn)的PV-DM模型來(lái)為函數(shù)的VEX IR生成語(yǔ)義以嵌入向量。因?yàn)槊恳粭l匯編指令會(huì)被翻譯成多條VEX指令,所以該模型將由同一條匯編指令翻譯而來(lái)的多條VEX指令組合看作一個(gè)單詞,將基本塊看作句子,將函數(shù)看作段落,使用向量間的余弦距離來(lái)度量函數(shù)間的相似度。

除了檢測(cè)速度和準(zhǔn)確度的提升,將神經(jīng)網(wǎng)絡(luò)應(yīng)用于相似性檢測(cè)任務(wù)的優(yōu)勢(shì)還在于,傳統(tǒng)檢測(cè)方法所采用的匹配算法通常是固定不變的,神經(jīng)網(wǎng)絡(luò)可以針對(duì)不同任務(wù)進(jìn)行再訓(xùn)練,應(yīng)用場(chǎng)景更廣闊;此外,神經(jīng)網(wǎng)絡(luò)不但可以自行學(xué)習(xí)和選擇特征,還可以習(xí)得人工方法很難確定的不同特征對(duì)相似度影響的權(quán)重,從而降低甚至避免人工設(shè)計(jì)和篩選特征帶來(lái)的擬合。但也存在難題如下:

  1. 神經(jīng)網(wǎng)絡(luò)訓(xùn)練需要大量的訓(xùn)練數(shù)據(jù),如何針對(duì)不同任務(wù)構(gòu)造高質(zhì)量的訓(xùn)練集仍然充滿挑戰(zhàn);
  2. 神經(jīng)網(wǎng)絡(luò)的輸出是多維度向量,而向量中每一維度所代表的具體含義還無(wú)法進(jìn)行科學(xué)的解釋,且其結(jié)果無(wú)法用符號(hào)化的表達(dá)式或定理來(lái)證明。

3.5 方案對(duì)比

在實(shí)際應(yīng)用中,單一檢測(cè)技術(shù)取得的效果十分有限,因此往往采用多種檢測(cè)技術(shù)相結(jié)合的方法來(lái)適應(yīng)不同任務(wù)的需要。

  • 技術(shù)分類的對(duì)比
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
  • 二進(jìn)制代碼相似性檢測(cè)技術(shù)及工具的對(duì)比(.代表解決,-代表未解決)
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述
    安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述

4 總結(jié)

跨編譯器、跨操作系統(tǒng)、跨指令架構(gòu)和海量數(shù)據(jù)查詢等任務(wù)需求的提出,如何提高檢測(cè)的通用性和效率成為更突出的問(wèn)題。傳統(tǒng)相似性檢測(cè)方法由于多采用圖形結(jié)構(gòu)的中間表示,受限于圖匹配算法的效率,只能選擇在準(zhǔn)確度和速度之間做平衡,對(duì)相似性度量算法效率的提升逐漸陷入瓶頸。
近幾年,越來(lái)越多的研究借助于DNN突破了這一瓶頸。神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)在于不僅可以自動(dòng)學(xué)習(xí)和篩選影響相似性的特征,還可以確定不同特征對(duì)相似性影響的大小,該方法的關(guān)鍵在于如何處理原始代碼和選擇哪種中間表示更利于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和學(xué)習(xí),以及哪種神經(jīng)網(wǎng)絡(luò)模型更適合程序相似度模型的構(gòu)建。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-431494.html

到了這里,關(guān)于安全研究 # 二進(jìn)制代碼相似性檢測(cè)綜述的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 新書速覽|二進(jìn)制安全基礎(chǔ)

    新書速覽|二進(jìn)制安全基礎(chǔ)

    詳解C 語(yǔ)言反匯編技術(shù)、二進(jìn)制漏洞挖掘和軟件逆向分析方法。配套示例源碼、PPT課件、教學(xué)大綱、教案、習(xí)題答案、作者QQ群答疑。 本書內(nèi)容 《二進(jìn)制安全基礎(chǔ)》為 二進(jìn)制安全技術(shù)知識(shí)普及與技術(shù)基礎(chǔ)教程 ,不僅能為初學(xué)二進(jìn)制安全技術(shù)的讀者提供全面、實(shí)用的 C語(yǔ)言反匯

    2024年01月21日
    瀏覽(25)
  • MATLAB|基于改進(jìn)二進(jìn)制粒子群算法的含需求響應(yīng)機(jī)組組合問(wèn)題研究(含文獻(xiàn)和源碼)

    MATLAB|基于改進(jìn)二進(jìn)制粒子群算法的含需求響應(yīng)機(jī)組組合問(wèn)題研究(含文獻(xiàn)和源碼)

    目錄 主要內(nèi)容??? ??模型研究??? 1.改進(jìn)二進(jìn)制粒子群算法(BPSO) 2.模型分析 ??結(jié)果一覽??? 下載鏈接 該程序復(fù)現(xiàn)《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》,主要做的是一個(gè)考慮需求響應(yīng)的機(jī)組組合問(wèn)題,首先構(gòu)建了機(jī)組組合問(wèn)題的基本模型,在此基礎(chǔ)上

    2024年02月19日
    瀏覽(20)
  • 你了解Redis 的二進(jìn)制安全嗎

    最近面試的時(shí)候被問(wèn)到Redis 的二進(jìn)制安全相關(guān)八股文面試題。Redis二進(jìn)制安全內(nèi)容比較多,以下是簡(jiǎn)單的總結(jié)大致的過(guò)程,需要深入學(xué)習(xí)的建議跳過(guò) Redis是基于C語(yǔ)言進(jìn)行開(kāi)發(fā)的,而C語(yǔ)言中的字符串是二進(jìn)制不安全的,所以Redis就沒(méi)有直接使用C語(yǔ)言的字符串,而是自己編寫了一

    2024年02月04日
    瀏覽(22)
  • 代碼訓(xùn)練LeetCode(12)二進(jìn)制求和

    代碼訓(xùn)練LeetCode(12)二進(jìn)制求和

    Author: Once Day Date: 2024年3月14日 一位熱衷于Linux學(xué)習(xí)和開(kāi)發(fā)的菜鳥(niǎo),試圖譜寫一場(chǎng)冒險(xiǎn)之旅,也許終點(diǎn)只是一場(chǎng)白日夢(mèng)… 漫漫長(zhǎng)路,有人對(duì)你微笑過(guò)嘛… 全系列文章可參考專欄: 十年代碼訓(xùn)練_Once-Day的博客-CSDN博客 參考文章: 67. 二進(jìn)制求和 - 力扣(LeetCode) 力扣 (LeetCode) 全球極

    2024年03月20日
    瀏覽(93)
  • 【二進(jìn)制安全】堆漏洞:Double Free原理

    【二進(jìn)制安全】堆漏洞:Double Free原理

    參考:https://www.anquanke.com/post/id/241598 次要參考:https://xz.aliyun.com/t/6342 malloc_chunk 的源碼如下: 釋放的chunk 會(huì)以單向鏈表的形式回收到fastbin 里面。 fastbin 是 LIFO 的數(shù)據(jù)結(jié)構(gòu),使用單向鏈表實(shí)現(xiàn)。 示例代碼: 需要使用glibc 2.27編譯。 Linux下更換glibc版本的方法:https://blog.csdn.

    2024年02月14日
    瀏覽(23)
  • 獨(dú)熱碼轉(zhuǎn)二進(jìn)制碼(含代碼)

    獨(dú)熱碼轉(zhuǎn)二進(jìn)制碼(含代碼)

    目錄 1、什么是獨(dú)熱碼 2、轉(zhuǎn)換原理 ?3、c代碼 1、什么是獨(dú)熱碼 獨(dú)熱碼(?one-hot code)直觀來(lái)說(shuō)就是有多少個(gè)狀態(tài)就有多少比特,而且只有一個(gè)比特為1,其他全為0 其表示方法如下表所示 十進(jìn)制 二進(jìn)制 獨(dú)熱碼 0 000 00000001 1 001 00000010 2 010 00000100 3 011 00001000 4 100 00010000 5 101 001

    2024年02月09日
    瀏覽(24)
  • 代碼訓(xùn)練LeetCode(13)顛倒二進(jìn)制位

    代碼訓(xùn)練LeetCode(13)顛倒二進(jìn)制位

    代碼訓(xùn)練(13)LeetCode之顛倒二進(jìn)制位 Author: Once Day Date: 2024年4月9日 漫漫長(zhǎng)路,才剛剛開(kāi)始… 全系列文章可參考專欄: 十年代碼訓(xùn)練_Once-Day的博客-CSDN博客 參考文章: 190. 顛倒二進(jìn)制位 - 力扣(LeetCode) 力扣 (LeetCode) 全球極客摯愛(ài)的技術(shù)成長(zhǎng)平臺(tái) 1. 原題 顛倒給定的 32 位無(wú)符號(hào)整

    2024年04月27日
    瀏覽(22)
  • 【滲透測(cè)試之二進(jìn)制安全系列】格式化漏洞揭秘(一)

    相信學(xué)習(xí)過(guò)C語(yǔ)言的童鞋兒們,都有接觸過(guò)比較基礎(chǔ)的輸入輸出函數(shù)(例如,scanf和printf等),那么對(duì)于%s、%d、%f、%c、%x等 格式化符號(hào) 應(yīng)該并不會(huì)感到陌生。學(xué)習(xí)過(guò)匯編語(yǔ)言,并且有逆向工程基礎(chǔ)的童鞋兒們,應(yīng)該都對(duì)C語(yǔ)言翻譯成匯編語(yǔ)言代碼的大概格式會(huì)有所了解! 我們

    2024年02月04日
    瀏覽(18)
  • 初探 qiling ( 麒麟 ):開(kāi)源的二進(jìn)制分析、高級(jí)代碼模擬框架

    初探 qiling ( 麒麟 ):開(kāi)源的二進(jìn)制分析、高級(jí)代碼模擬框架

    官方介紹: 官網(wǎng):https://qiling.io/ :https://twitter.com/qiling_io github 地址:https://github.com/qilingframework/qiling ? qiling 基于 python 開(kāi)發(fā),是一個(gè)開(kāi)源的、可模擬多種架構(gòu)和平臺(tái)的二進(jìn)制 仿真(模擬) 框架,同時(shí)還提供跨架構(gòu)的調(diào)試能力,多種層次的 hook 方法,該工具由 Unicorn 引擎 驅(qū)動(dòng)

    2023年04月24日
    瀏覽(25)
  • CMake教程系列-02-使用cmake代碼生成二進(jìn)制

    CMake教程系列-02-使用cmake代碼生成二進(jìn)制

    參考:Cmake安裝以及升級(jí)(Ubuntu) Win10安裝文件: 創(chuàng)建的目錄以及代碼如下: CMakeLists.txt sample.cpp 目錄結(jié)構(gòu)如下:注意多創(chuàng)建一個(gè)build目錄存放中間文件和最終二進(jìn)制文件 點(diǎn)擊“Configure 我的的vs是2019,在Configure中選擇了 點(diǎn)擊“Configure”右邊的“Generate”。 點(diǎn)擊“Generate”右邊

    2024年02月04日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包