chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于源碼的二進(jìn)制SCA特征生成技術(shù)

zz愛(ài)尚科技 ? 來(lái)源:zz愛(ài)尚科技 ? 作者:zz愛(ài)尚科技 ? 2022-10-13 13:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

基于源碼的二進(jìn)制SCA特征生成技術(shù)

檢測(cè)原理及流程簡(jiǎn)介:

在二進(jìn)制SCA檢測(cè)原理中提到對(duì)于常量字符串、部分類名稱、函數(shù)名稱、以及一些配置信息還是存在的,并且這些信息具備一定的不變性;因此二進(jìn)制SCA工具其中的一部分特征來(lái)源就包含這些信息。因此在特征庫(kù)保存有每個(gè)開(kāi)源軟件的特征,二進(jìn)制SCA工具在檢測(cè)時(shí)會(huì)從待檢測(cè)二進(jìn)制文件中提取出特征,通過(guò)算法和特征庫(kù)的保存的開(kāi)源軟件特征進(jìn)行相似度計(jì)算,從而判斷該二進(jìn)制文件中引用了哪些開(kāi)源軟件及對(duì)應(yīng)的版本號(hào)。

二進(jìn)制SCA檢測(cè)處理流程:****

image.png

從檢測(cè)流程和方法中可以看出特征庫(kù)中保存的特征來(lái)源并沒(méi)有規(guī)定一定從二進(jìn)制文件中生成,而是只要滿足特征庫(kù)中的特征必須和二進(jìn)制中生成的特征要一致,因?yàn)橛?jì)算相似度時(shí)其中一個(gè)輸入的特征是從二進(jìn)制文件中提取到的。很明顯特征庫(kù)中特征來(lái)源無(wú)非就2條路徑:一條來(lái)自二進(jìn)制文件,另外一條那就是來(lái)自生成二進(jìn)制的源代碼。

不同特征來(lái)源優(yōu)缺點(diǎn)比較:

1. 二進(jìn)制文件特征提取優(yōu)點(diǎn):

基于二進(jìn)制文件來(lái)提取特征具有提取方便,和檢測(cè)時(shí)提取方法一致,不需要額外開(kāi)發(fā)提取工具和提取算法。

2. 二進(jìn)制文件特征提取缺點(diǎn):

a. 二進(jìn)制文件首先需要由源代碼編譯出來(lái),而搭建構(gòu)建編譯環(huán)境可能會(huì)很復(fù)雜,需要很多額外的工作量,效率低;

b.由于編譯宏的原因,由源代碼生成的二進(jìn)制文件并不一定是全量源代碼都包含中其中的,可能只有部分源代碼參與生成最終的二進(jìn)制文件;

c.由于構(gòu)建依賴的原因,二進(jìn)制文件中包含有依賴對(duì)象的信息,也就是說(shuō)包含有源代碼之外對(duì)象的信息,這會(huì)導(dǎo)致提取到的特征純度不足,直接影響到檢測(cè)結(jié)果的準(zhǔn)確性;

3. 源碼特征提取優(yōu)點(diǎn):

正好可以解決從二進(jìn)制文件中生成特征的短板問(wèn)題,不需要編譯可以大大提升自動(dòng)化出來(lái)水平和提取效率,提取到的特征只限于源代碼中的特征和其他無(wú)關(guān),提取到的特征純度很高。

4. 源碼特征提取缺點(diǎn):

針對(duì)不同語(yǔ)言類型需要額外開(kāi)發(fā)相應(yīng)的特征提取工具來(lái)實(shí)現(xiàn)特征提取,開(kāi)發(fā)工作量大,且不同語(yǔ)言的特征提取工具開(kāi)的發(fā)難度也不一樣,對(duì)開(kāi)發(fā)者是一個(gè)挑戰(zhàn)。

基于源碼的特征生成方法:

不同語(yǔ)言具有不同的特點(diǎn),在考慮基于源碼的特征生成方法時(shí)需要考慮到語(yǔ)言特點(diǎn)來(lái)采用針對(duì)性的方法來(lái)解決,這樣可以起到事半功倍的作用。下面針對(duì)不同語(yǔ)言分別來(lái)說(shuō)明對(duì)應(yīng)的解決方法:

C語(yǔ)言:沒(méi)有類的復(fù)雜性,在構(gòu)建時(shí)只要用到的源碼文件,該文件中的所有函數(shù)信息都會(huì)被一起編譯進(jìn)二進(jìn)制文件中。

C++語(yǔ)言:引入了類的復(fù)雜性,在構(gòu)建時(shí)只要引用了類的實(shí)例,該類信息才會(huì)被編譯到二進(jìn)制文件中,而不像C語(yǔ)言一個(gè)源代碼文件是一個(gè)整體來(lái)處理的。另外類中的構(gòu)造函數(shù)和析構(gòu)函數(shù)會(huì)被編譯器自動(dòng)引入在二進(jìn)制文件中,從而出現(xiàn)源代碼和二進(jìn)制文件不一致情況。

Java語(yǔ)言:也存在類的復(fù)雜性,特別是嵌套類和內(nèi)部類的情況,這也導(dǎo)致源代碼特征和二進(jìn)制特征之間的處理難點(diǎn)。

Go語(yǔ)言:具備依賴管理機(jī)制,但編譯出來(lái)的二進(jìn)制文件卻和C、C++一樣具有PE、ELF格式,go語(yǔ)言的模塊特性也帶來(lái)了源碼提取的特征和二進(jìn)制之間的差別,此外go語(yǔ)言相比C、C++來(lái)說(shuō)更容易生成對(duì)應(yīng)源代碼的抽象語(yǔ)法樹(shù)AST。

Python語(yǔ)言:也具備依賴管理機(jī)制,但pyc和pyd之間差別很大,pyc是字節(jié)碼格式可以很方便的進(jìn)行反編譯,但pyd則像C、C++一樣是指令碼式文件,因此特征提取方法完全不一樣,同樣也帶來(lái)了源代碼提取特征和二進(jìn)制提取特征之間的不一致問(wèn)題需要解決,比如:1. python源碼在編譯成pyc時(shí)有一些編譯優(yōu)化,在源碼提取特征時(shí)要加入編譯優(yōu)化,且不同版本編譯優(yōu)化有差異,統(tǒng)一使用最多的編譯優(yōu)化提取源碼特征并且pyc文件提取特征時(shí)也需要進(jìn)行適當(dāng)?shù)膬?yōu)化;2. python不同版本同一代碼翻譯成的指令序列不一樣,pyc提取特征時(shí)要兼容多個(gè)版本;3. py2、py3的pyc中字符串的編碼方式不一樣,而且unicode的支持范圍不一樣,需要保證字符串特征提取一致;同樣Python源代碼也相對(duì)容易的可以生成對(duì)應(yīng)源代碼的抽象語(yǔ)法樹(shù)AST。

另外對(duì)于C、C++源代碼由于存在依賴和構(gòu)建環(huán)境的原因而導(dǎo)致源代碼無(wú)法編譯,而很多工具需要能編譯成功才能獲取到AST的,比如CDT、Clang等,在這種情況下就沒(méi)法使用了,必須使用具備詞法分析和語(yǔ)法分析能力的工具來(lái)獲取特征相關(guān)一些數(shù)據(jù),比如cppcheck工具。不管是基于AST還是詞法、語(yǔ)法分析輸出數(shù)據(jù),都需要自己在此數(shù)據(jù)的基礎(chǔ)上開(kāi)發(fā)相應(yīng)的數(shù)據(jù)分析工具來(lái)提取到最終的開(kāi)源軟件特征,并且該特征數(shù)據(jù)和從二進(jìn)制文件中提取到的特征數(shù)據(jù)具有很好的一致性要求。

總結(jié) :只有具備從源碼中生成上述特征,才能充分利用源碼特征提取優(yōu)點(diǎn),進(jìn)行自動(dòng)化的特征提取,提升特征提取效率,快速實(shí)現(xiàn)對(duì)新出現(xiàn)開(kāi)源軟件的檢測(cè)能力。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    807

    瀏覽量

    42327
  • SCA
    SCA
    +關(guān)注

    關(guān)注

    1

    文章

    37

    瀏覽量

    12198
  • 源碼
    +關(guān)注

    關(guān)注

    8

    文章

    671

    瀏覽量

    30329
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    偏移二進(jìn)制二進(jìn)制補(bǔ)碼如何和實(shí)際數(shù)據(jù)對(duì)應(yīng),如何轉(zhuǎn)換?

    偏移二進(jìn)制二進(jìn)制補(bǔ)碼如何和實(shí)際數(shù)據(jù)對(duì)應(yīng),如何轉(zhuǎn)換,請(qǐng)哪位高手解惑
    發(fā)表于 01-16 06:01

    bcd編碼的應(yīng)用 bcd與二進(jìn)制的區(qū)別

    BCD(Binary-Coded Decimal)編碼是一種二進(jìn)制編碼形式,用于表示十進(jìn)制數(shù)字。它將每個(gè)十進(jìn)制數(shù)字(0-9)直接編碼為一個(gè)四位二進(jìn)制數(shù)。BCD編碼的主要優(yōu)點(diǎn)是易于閱讀和
    的頭像 發(fā)表于 12-20 17:11 ?3207次閱讀

    hex格式和二進(jìn)制的區(qū)別

    HEX格式和二進(jìn)制在多個(gè)方面存在顯著的區(qū)別。以下是對(duì)這兩者的對(duì)比: 一、定義與表示方式 HEX格式 : HEX,全稱為Intel HEX,是一種用于存儲(chǔ)和傳輸數(shù)據(jù)到嵌入式系統(tǒng)(如單片機(jī))的文件格式
    的頭像 發(fā)表于 11-18 15:24 ?1730次閱讀

    在線二進(jìn)制編碼器:數(shù)據(jù)轉(zhuǎn)換的快捷通道

    在數(shù)字時(shí)代,數(shù)據(jù)的快速轉(zhuǎn)換與處理至關(guān)重要。二進(jìn)制編碼,作為計(jì)算機(jī)內(nèi)部數(shù)據(jù)表示的基礎(chǔ),將信息轉(zhuǎn)化為0和1的序列,為數(shù)字世界構(gòu)建了溝通的橋梁。然而,對(duì)于非專業(yè)用戶來(lái)說(shuō),手動(dòng)進(jìn)行二進(jìn)制編碼既繁瑣又易出錯(cuò)
    的頭像 發(fā)表于 11-15 09:01 ?1793次閱讀

    base64字符串轉(zhuǎn)換為二進(jìn)制文件

    Base64是一種編碼方法,用于將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII字符串。這種編碼通常用于在不支持二進(jìn)制數(shù)據(jù)的系統(tǒng)中傳輸數(shù)據(jù),例如電子郵件或網(wǎng)頁(yè)。將Base64字符串轉(zhuǎn)換為二進(jìn)制文件的過(guò)程相對(duì)簡(jiǎn)單,但需要
    的頭像 發(fā)表于 11-10 10:55 ?2838次閱讀

    ASCII碼和二進(jìn)制的轉(zhuǎn)換關(guān)系

    。ASCII碼使用7位二進(jìn)制數(shù)來(lái)表示128個(gè)不同的字符,包括大小寫英文字母、數(shù)字0-9以及一些控制字符和標(biāo)點(diǎn)符號(hào)。后來(lái),ASCII碼被擴(kuò)展到了8位,即ASCII-8BIT,可以表示256個(gè)不同的字符。 二進(jìn)制
    的頭像 發(fā)表于 11-10 09:50 ?4012次閱讀

    二進(jìn)制編碼器的精度與分辨率

    在數(shù)字電子系統(tǒng)中,二進(jìn)制編碼器扮演著至關(guān)重要的角色。它負(fù)責(zé)將外部世界的模擬信號(hào)轉(zhuǎn)換為計(jì)算機(jī)可以理解的數(shù)字信號(hào)。精度和分辨率是衡量二進(jìn)制編碼器性能的兩個(gè)關(guān)鍵指標(biāo)。 1. 二進(jìn)制編碼器的基本原理
    的頭像 發(fā)表于 11-06 09:56 ?1233次閱讀

    二進(jìn)制編碼器在自動(dòng)化領(lǐng)域的作用

    二進(jìn)制編碼器是一種將二進(jìn)制信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)的電子設(shè)備,廣泛應(yīng)用于自動(dòng)化領(lǐng)域。 一、二進(jìn)制編碼器的工作原理 二進(jìn)制編碼器是一種將二進(jìn)制信號(hào)轉(zhuǎn)
    的頭像 發(fā)表于 11-06 09:53 ?942次閱讀

    二進(jìn)制編碼器在機(jī)器人中的應(yīng)用

    隨著科技的不斷進(jìn)步,機(jī)器人技術(shù)已經(jīng)成為現(xiàn)代工業(yè)、服務(wù)業(yè)乃至家庭生活中不可或缺的一部分。機(jī)器人的智能化程度不斷提高,這在很大程度上依賴于其傳感器系統(tǒng)。二進(jìn)制編碼器作為一種傳感器,能夠?qū)⑽锢砹哭D(zhuǎn)換
    的頭像 發(fā)表于 11-06 09:48 ?1157次閱讀

    二進(jìn)制編碼器的種類及特點(diǎn)

    二進(jìn)制編碼器是一種電子電路,用于將二進(jìn)制信號(hào)轉(zhuǎn)換為其他格式,如十進(jìn)制、格雷碼等。以下是一些常見(jiàn)的二進(jìn)制編碼器種類及其特點(diǎn): 優(yōu)先編碼器(Priority Encoder) : 特點(diǎn) :
    的頭像 發(fā)表于 11-06 09:47 ?1449次閱讀

    二進(jìn)制編碼器應(yīng)用場(chǎng)景 二進(jìn)制編碼器與模擬編碼器比較

    編碼器是將信息從一種形式或格式轉(zhuǎn)換為另一種形式的設(shè)備。在數(shù)字和模擬系統(tǒng)中,編碼器扮演著至關(guān)重要的角色。二進(jìn)制編碼器和模擬編碼器是兩種常見(jiàn)的編碼器類型,它們?cè)诓煌膽?yīng)用場(chǎng)景中有著各自的優(yōu)勢(shì)和局
    的頭像 發(fā)表于 11-06 09:45 ?1261次閱讀

    二進(jìn)制編碼器工作原理 如何選擇二進(jìn)制編碼器

    二進(jìn)制編碼器是一種數(shù)字電路,它將輸入的二進(jìn)制代碼轉(zhuǎn)換為對(duì)應(yīng)的輸出信號(hào)。在數(shù)字系統(tǒng)中,編碼器用于將數(shù)據(jù)從一種形式轉(zhuǎn)換為另一種形式,以便于處理和傳輸。 二進(jìn)制編碼器工作原理 輸入與輸出關(guān)系 :
    的頭像 發(fā)表于 11-06 09:44 ?2524次閱讀

    C語(yǔ)言生成可執(zhí)行二進(jìn)制文件的具體過(guò)程

    和產(chǎn)物。下面,小杜通過(guò)一個(gè)具體的例子詳細(xì)講述這個(gè)過(guò)程,以及如何通過(guò)反匯編(Disassembly)來(lái)查看匯編、鏈接產(chǎn)生的不可讀二進(jìn)制目標(biāo)文件。
    的頭像 發(fā)表于 10-21 14:30 ?1618次閱讀
    C語(yǔ)言<b class='flag-5'>生成</b>可執(zhí)行<b class='flag-5'>二進(jìn)制</b>文件的具體過(guò)程

    二進(jìn)制補(bǔ)碼及與原碼的互相轉(zhuǎn)換方法

    大沙把一些基礎(chǔ)的知識(shí)說(shuō)清楚,本文介紹二進(jìn)制補(bǔ)碼及與原碼的轉(zhuǎn)換方法。 先說(shuō)原碼,原碼?是一種計(jì)算機(jī)中對(duì)數(shù)字的二進(jìn)制定點(diǎn)表示方法。在原碼表示法中,數(shù)值前面增加了一位符號(hào)位,最高位為符號(hào)位,0表示正數(shù),1
    的頭像 發(fā)表于 09-19 22:25 ?1490次閱讀

    計(jì)算機(jī)采用二進(jìn)制的原因不包括什么

    計(jì)算機(jī)采用二進(jìn)制的原因主要是基于其物理實(shí)現(xiàn)的簡(jiǎn)便性、邏輯運(yùn)算的簡(jiǎn)化、以及電子元件的穩(wěn)定性。然而,這個(gè)問(wèn)題要求我們探討計(jì)算機(jī)采用二進(jìn)制的原因不包括什么,這實(shí)際上是一個(gè)反向思考的問(wèn)題。在回答這個(gè)問(wèn)題之前
    的頭像 發(fā)表于 09-04 17:03 ?1272次閱讀