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檢測(cè)原理

IT科技蘇辭 ? 來(lái)源:IT科技蘇辭 ? 作者:IT科技蘇辭 ? 2022-10-14 09:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

源代碼與二進(jìn)制文件SCA檢測(cè)原理

1、源代碼與二進(jìn)制的關(guān)系和特點(diǎn)

SCA(Software Composition Analysis)軟件成分分析,通俗的理解就是通過(guò)分析軟件包含的一些信息和特征來(lái)實(shí)現(xiàn)對(duì)該軟件的識(shí)別、管理、追蹤的技術(shù)。SCA具體的檢測(cè)原理又是如何實(shí)現(xiàn)的,源代碼和二進(jìn)制文件的SCA檢測(cè)又有哪些相同點(diǎn)和不同點(diǎn),下面內(nèi)容就來(lái)回答一下上述疑問(wèn)。

對(duì)應(yīng)編譯類型的語(yǔ)言(C/C++/Go/Rust),都是遵循:源代碼—>編譯—>鏈接—>二進(jìn)制文件的過(guò)程。影響二進(jìn)制文件的因素包括不同的CPU架構(gòu)(ARM、X86、PPC、MIPS…),不同的操作系統(tǒng)(Wndows、LinuxiOS、Android…),不同的編譯優(yōu)化選項(xiàng)(O0~O3),即使是同一套源代碼,最終編譯生成的二進(jìn)制文件之間也是差別非常大的。注:上述影響因素不涉及java語(yǔ)言

從上面可知源代碼和二進(jìn)制文件之間存在巨大的差別,源代碼是基于高階語(yǔ)言來(lái)編寫,是給人看的,人看了很方便理解其中語(yǔ)句的語(yǔ)義;而二進(jìn)制是由流(指令流或字節(jié)流)來(lái)構(gòu)成的,是給計(jì)算機(jī)“看”的,對(duì)人來(lái)說(shuō)是非常不友好,不好理解。

源代碼包含了變量符號(hào)類型、函數(shù)名稱、類名稱、代碼邏輯結(jié)構(gòu)等大量豐富的代碼信息,相反為保留二進(jìn)制文件的緊湊性,編譯生成的二進(jìn)制文件中會(huì)丟棄掉很多運(yùn)行時(shí)用不到的信息,只保留程序正確運(yùn)行必要的信息,比如被丟棄的信息有變量類型、變量名稱等符號(hào)信息,可能被保留的有類名稱、函數(shù)名稱等信息,一定會(huì)保留的有常量字符串?dāng)?shù)據(jù)。另外為了保證程序的正確運(yùn)行,還會(huì)有保留一個(gè)相應(yīng)的配置信息,比如jar包中的manifest信息、POM信息、maven信息、資源文件等。基于這些特點(diǎn)源代碼SCA和二進(jìn)制SCA的檢測(cè)原理也存在很大的不同。

2、源代碼SCA檢測(cè)原理

由于源代碼中包含有豐富的程序信息,因此源代碼的SCA檢測(cè)既有大顆粒度的檢測(cè)方法,也有細(xì)顆粒度的檢測(cè)方法。

2.1 大顆粒度檢測(cè)方法:根據(jù)源代碼文件的相似度來(lái)判斷屬于什么組件和版本;文件相似度可以基于hash的嚴(yán)格匹配方法,也可以根據(jù)文本相似度匹配方法;這種匹配方法的優(yōu)點(diǎn)是效率高,匹配速度極快,確定是也很明顯,基于hash的容易漏報(bào),基于文本相似度的準(zhǔn)確率低;

2.2 細(xì)顆粒度檢測(cè)方法:經(jīng)過(guò)源代碼—>詞法分析—>Token提取—>語(yǔ)法分析—>AST抽象語(yǔ)法樹—>語(yǔ)義分析過(guò)程來(lái)提取相應(yīng)的數(shù)據(jù),再通過(guò)機(jī)器學(xué)習(xí)、NLP、CFG調(diào)用圖、DFG數(shù)據(jù)流圖等等匹配算法進(jìn)行代碼相似度的檢測(cè),這種基于語(yǔ)義的代碼相似度檢測(cè)與基于文本相似度檢測(cè)相比準(zhǔn)確率高;

2.3 具備包管理機(jī)制的語(yǔ)言,比如Java、Go,可以通過(guò)引用的開源軟件包信息來(lái)實(shí)現(xiàn)開源軟件的關(guān)聯(lián)分析,這種方法可以幾乎可以100%準(zhǔn)確的分析出引用的開源軟件名稱。

3、二進(jìn)制SCA檢測(cè)原理

3.1 雖然好多源代碼中具有的信息在二進(jìn)制文件中不存在,但是對(duì)于常量字符串、部分類名稱、函數(shù)名稱、以及一些配置信息還是存在的,并且這些信息具備一定的不變性,即受cpu架構(gòu)、不同編譯優(yōu)化選項(xiàng)的影響很小,因此二進(jìn)制SCA主要從二進(jìn)制文件中提取這些方面的不同特征,再運(yùn)用匹配算法進(jìn)行相似度計(jì)算,并根據(jù)相似度門限來(lái)檢測(cè)出引用的開源軟件名稱和版本號(hào)。

3.2 結(jié)合分析二進(jìn)制代碼中的CFG調(diào)用圖、DFG數(shù)據(jù)流圖等信息進(jìn)行更加精準(zhǔn)的檢測(cè),但由于這些分析需要對(duì)二進(jìn)制文件進(jìn)行指令反匯編,導(dǎo)致分析時(shí)間非常的長(zhǎng),分析效率低下,因此這種SCA檢測(cè)方法不適合對(duì)大規(guī)模二進(jìn)制文件進(jìn)行掃描。

4、源代碼SCA和二進(jìn)制SCA功能對(duì)比

比較項(xiàng) 源代碼SCA 二進(jìn)制SCA 備注
檢測(cè)對(duì)象 源代碼 二進(jìn)制
檢測(cè)效率
檢測(cè)準(zhǔn)確率 稍高 檢測(cè)準(zhǔn)確率和目標(biāo)程序引用開源軟件功能多少相關(guān)
嵌套組件檢測(cè)能力 強(qiáng) 二進(jìn)制中不會(huì)遺漏所有引入的開源軟件功能特征信息
檢測(cè)語(yǔ)言種類 二進(jìn)制SCA只支持能夠編譯出指令流或字節(jié)流二進(jìn)制文件的語(yǔ)言
文件格式 簡(jiǎn)單 復(fù)雜 源代碼都可看作文本格式,二進(jìn)制文件存在pe、elf、coff、jar、apk…
文件特點(diǎn) 一個(gè)開源軟件包含N源碼文件 一個(gè)二進(jìn)制文件包含N個(gè)開源軟件 一個(gè)開源軟件由N>=1個(gè)源碼文件;一個(gè)二進(jìn)制文件包含N>=1個(gè)開源軟件
檢測(cè)階段 開發(fā)階段 測(cè)試階段
檢測(cè)繞過(guò) 存在 不存在 源碼在構(gòu)建環(huán)境中引入或鏈接靜態(tài)庫(kù)引入的開源軟件存在繞過(guò)源代碼SCA檢測(cè)
樣本特征構(gòu)建難度 需要編譯構(gòu)建出二進(jìn)制
人工確認(rèn)分析難度 源代碼人工對(duì)比分析容易
審核編輯:湯梓紅

聲明:本文內(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

    文章

    809

    瀏覽量

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

    關(guān)注

    1

    文章

    37

    瀏覽量

    12509
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CDx4HC283和CDx4HCT283:高速CMOS邏輯4位二進(jìn)制全加器的詳細(xì)解析

    的CDx4HC283和CDx4HCT283就是兩款高性能的4位二進(jìn)制全加器,它們?cè)诒姸嚯娮釉O(shè)備中都有著廣泛的應(yīng)用。 文件下載: CD74HCT283M96.pdf 一、產(chǎn)品概述 CDx4HC283
    的頭像 發(fā)表于 01-19 14:50 ?87次閱讀

    解析CD54/74AC283與CD54/74ACT283:4位二進(jìn)制加法器的卓越之選

    Instruments)的CD54/74AC283和CD54/74ACT283 4位二進(jìn)制加法器,它們以其出色的性能和豐富的特性,在眾多應(yīng)用場(chǎng)景中發(fā)揮著重要作用。 文件下載: CD74AC283E.pdf 產(chǎn)品概覽
    的頭像 發(fā)表于 01-08 16:55 ?451次閱讀

    深入剖析CD54/74AC283與CD54/74ACT283:高性能4位二進(jìn)制加法器

    /74ACT283這兩款4位二進(jìn)制加法器,它們來(lái)自Harris Semiconductor,為電子工程師們提供了高性能、低功耗的解決方案。 文件下載: CD74AC283M.pdf 器件概述 CD54
    的頭像 發(fā)表于 01-04 17:25 ?473次閱讀

    CD54/74AC283與CD54/74ACT283:高性能4位二進(jìn)制加法器的全面解析

    的是CD54/74AC283和CD54/74ACT283這兩款4位二進(jìn)制加法器,它們來(lái)自Harris Semiconductor(現(xiàn)德州儀器),具備諸多出色的特性,能滿足不同場(chǎng)景下的設(shè)計(jì)需求。 文件下載
    的頭像 發(fā)表于 12-31 17:10 ?1286次閱讀

    SN54F283與SN74F283:4位二進(jìn)制全加器的技術(shù)剖析

    二進(jìn)制全加器,它們以其快速進(jìn)位的特性在眾多應(yīng)用場(chǎng)景中表現(xiàn)出色。 文件下載: SN74F283N.pdf 產(chǎn)品概述 SN54F283和SN74F283是能夠執(zhí)行兩個(gè)4位二進(jìn)制數(shù)相加操作的全加器。對(duì)于
    的頭像 發(fā)表于 12-29 16:20 ?235次閱讀

    德州儀器4位二進(jìn)制全加器:SN54/74283系列深度解析

    德州儀器4位二進(jìn)制全加器:SN54/74283系列深度解析 在數(shù)字電路設(shè)計(jì)領(lǐng)域,加法器是構(gòu)建復(fù)雜算術(shù)邏輯單元的基礎(chǔ)組件。德州儀器(TI)的SN54/74283系列4位二進(jìn)制全加器憑借其快速進(jìn)位
    的頭像 發(fā)表于 12-23 15:45 ?321次閱讀

    二進(jìn)制查找(Binary Search)介紹

    二進(jìn)制查找(Binary Search)用于在已排序的數(shù)組中執(zhí)行二進(jìn)制查找的函數(shù)。 int binary_search(int arr[], int size, int target
    發(fā)表于 12-12 06:54

    如何在vivado上基于二進(jìn)制碼對(duì)指令運(yùn)行狀態(tài)進(jìn)行判斷

    a0 -8 為例 獲取相應(yīng)的二進(jìn)制碼將其轉(zhuǎn)換為16進(jìn)制導(dǎo)入vivado,方法就是將代碼文件修改為.verilog文件并存入蜂鳥的tb
    發(fā)表于 10-24 06:46

    在vivado上基于二進(jìn)制碼對(duì)指令運(yùn)行狀態(tài)進(jìn)行判斷

    a0 -8 為例 獲取相應(yīng)的二進(jìn)制碼將其轉(zhuǎn)換為16進(jìn)制導(dǎo)入vivado,方法就是將代碼文件修改為.verilog文件并存入蜂鳥的tb
    發(fā)表于 10-24 06:31

    如何將圖像文件轉(zhuǎn)換為二進(jìn)制文件

    如何將圖像文件轉(zhuǎn)換為二進(jìn)制文件
    發(fā)表于 09-05 08:28

    二進(jìn)制數(shù)據(jù)處理方法分享

    時(shí),我們?nèi)绾稳ソ馕鰯?shù)據(jù)并且應(yīng)用它們。本次的技術(shù)分享文章,我們就從如何傳輸數(shù)據(jù)和解析二進(jìn)制數(shù)據(jù)來(lái)一步一步剝絲抽繭,搞清楚他的運(yùn)作原理和二進(jìn)制數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
    的頭像 發(fā)表于 07-30 15:41 ?2315次閱讀
    <b class='flag-5'>二進(jìn)制</b>數(shù)據(jù)處理方法分享

    如何使用Keil將二進(jìn)制文件加載到外部SPI Flash中?

    我想知道是否有辦法使用 Keil 將隨機(jī)二進(jìn)制文件加載到外部 SPI 閃存中。二進(jìn)制文件將通過(guò) LPC54102(OM13077 EVK 板)。我知道一些用于 FPGA 的 ISE 允
    發(fā)表于 03-17 06:37

    無(wú)法使用密度化參數(shù)構(gòu)建OpenVINO?二進(jìn)制,怎么處理?

    無(wú)法使用密度化參數(shù)構(gòu)建OpenVINO?二進(jìn)制
    發(fā)表于 03-06 06:51

    74LV4060-Q100二進(jìn)制紋波計(jì)數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74LV4060-Q100二進(jìn)制紋波計(jì)數(shù)器規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 02-10 14:19 ?0次下載
    74LV4060-Q100<b class='flag-5'>二進(jìn)制</b>紋波計(jì)數(shù)器規(guī)格書

    74LV4060二進(jìn)制紋波計(jì)數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74LV4060二進(jìn)制紋波計(jì)數(shù)器規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 02-10 14:14 ?0次下載
    74LV4060<b class='flag-5'>二進(jìn)制</b>紋波計(jì)數(shù)器規(guī)格書