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

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

源代碼與二進制文件SCA檢測原理

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

掃碼添加小助手

加入工程師交流群

源代碼與二進制文件SCA檢測原理

1、源代碼與二進制的關系和特點

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

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

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

源代碼包含了變量符號類型、函數(shù)名稱、類名稱、代碼邏輯結構等大量豐富的代碼信息,相反為保留二進制文件的緊湊性,編譯生成的二進制文件中會丟棄掉很多運行時用不到的信息,只保留程序正確運行必要的信息,比如被丟棄的信息有變量類型、變量名稱等符號信息,可能被保留的有類名稱、函數(shù)名稱等信息,一定會保留的有常量字符串數(shù)據(jù)。另外為了保證程序的正確運行,還會有保留一個相應的配置信息,比如jar包中的manifest信息、POM信息、maven信息、資源文件等?;谶@些特點源代碼SCA和二進制SCA的檢測原理也存在很大的不同。

2、源代碼SCA檢測原理

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

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

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

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

3、二進制SCA檢測原理

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

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

4、源代碼SCA和二進制SCA功能對比

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

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

    關注

    2

    文章

    809

    瀏覽量

    42799
  • SCA
    SCA
    +關注

    關注

    1

    文章

    37

    瀏覽量

    12485
  • 源代碼
    +關注

    關注

    96

    文章

    2953

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    在vivado上基于二進制碼對指令運行狀態(tài)進行判斷

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

    如何將圖像文件轉換為二進制文件

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

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

    時,我們如何去解析數(shù)據(jù)并且應用它們。本次的技術分享文章,我們就從如何傳輸數(shù)據(jù)和解析二進制數(shù)據(jù)來一步一步剝絲抽繭,搞清楚他的運作原理和二進制數(shù)據(jù)的數(shù)據(jù)結構。
    的頭像 發(fā)表于 07-30 15:41 ?2151次閱讀
    <b class='flag-5'>二進制</b>數(shù)據(jù)處理方法分享

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

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

    無法使用密度化參數(shù)構建OpenVINO?二進制,怎么處理?

    無法使用密度化參數(shù)構建OpenVINO?二進制
    發(fā)表于 03-06 06:51

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

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

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

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

    74HC4520;74HCT4520同步二進制計數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74HC4520;74HCT4520同步二進制計數(shù)器規(guī)格書.pdf》資料免費下載
    發(fā)表于 02-09 11:42 ?0次下載
    74HC4520;74HCT4520同步<b class='flag-5'>二進制</b>計數(shù)器規(guī)格書

    74LV393雙路4位二進制紋波計數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74LV393雙路4位二進制紋波計數(shù)器規(guī)格書.pdf》資料免費下載
    發(fā)表于 02-08 15:55 ?0次下載
    74LV393雙路4位<b class='flag-5'>二進制</b>紋波計數(shù)器規(guī)格書

    74HC193;74HC7193二進制加減計數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74HC193;74HC7193二進制加減計數(shù)器規(guī)格書.pdf》資料免費下載
    發(fā)表于 02-07 16:28 ?0次下載
    74HC193;74HC7193<b class='flag-5'>二進制</b>加減計數(shù)器規(guī)格書

    74HC191可預置同步4位二進制加減計數(shù)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74HC191可預置同步4位二進制加減計數(shù)器規(guī)格書.pdf》資料免費下載
    發(fā)表于 02-07 15:57 ?1次下載
    74HC191可預置同步4位<b class='flag-5'>二進制</b>加減計數(shù)器規(guī)格書

    偏移二進制二進制補碼如何和實際數(shù)據(jù)對應,如何轉換?

    偏移二進制二進制補碼如何和實際數(shù)據(jù)對應,如何轉換,請哪位高手解惑
    發(fā)表于 01-16 06:01

    TLC2543的輸出結果應為帶符號二進制格式的數(shù)據(jù),現(xiàn)在輸出的結果為不帶符號的二進制數(shù),這是因為什么原因?

    DSP采用模擬SPI總線的方式和TLC2543進行通信,采用AIN0,AIN1,AIN2,TLC2543的輸出數(shù)據(jù)格式為16位,高位在前,帶符號二進制數(shù)。用萬用表測的AIN0,AIN1,AIN2
    發(fā)表于 12-27 07:46

    bcd編碼的應用 bcd與二進制的區(qū)別

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