91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

檢測原理及流程簡介:

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

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

image.png

從檢測流程和方法中可以看出特征庫中保存的特征來源并沒有規(guī)定一定從二進(jìn)制文件中生成,而是只要滿足特征庫中的特征必須和二進(jìn)制中生成的特征要一致,因?yàn)橛嬎阆嗨贫葧r其中一個輸入的特征是從二進(jìn)制文件中提取到的。很明顯特征庫中特征來源無非就2條路徑:一條來自二進(jìn)制文件,另外一條那就是來自生成二進(jìn)制的源代碼。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    2

    文章

    809

    瀏覽量

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

    關(guān)注

    1

    文章

    37

    瀏覽量

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

    關(guān)注

    8

    文章

    685

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    CDx4HC283與CDx4HCT283:4位二進(jìn)制全加器的技術(shù)解析與應(yīng)用指南

    CDx4HC283與CDx4HCT283:4位二進(jìn)制全加器的技術(shù)解析與應(yīng)用指南 在數(shù)字電路設(shè)計領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)值運(yùn)算的基礎(chǔ)元件之一。今天我們要深入探討的CDx4HC283和CDx4HCT283
    的頭像 發(fā)表于 01-30 17:20 ?655次閱讀

    德州儀器4位二進(jìn)制全加器:SN54/74系列的技術(shù)剖析

    德州儀器4位二進(jìn)制全加器:SN54/74系列的技術(shù)剖析 在數(shù)字電路設(shè)計中,加法器是實(shí)現(xiàn)算術(shù)運(yùn)算的基礎(chǔ)組件。德州儀器的SN54283、SN54LS283、SN54S283、SN74283
    的頭像 發(fā)表于 01-28 17:05 ?499次閱讀

    探索CD54/74AC283與CD54/74ACT283:高效4位二進(jìn)制加法器的奧秘

    和CD54/74ACT283是采用先進(jìn)CMOS邏輯技術(shù)的4位二進(jìn)制加法器,具備快速進(jìn)位功能。它們能夠?qū)蓚€4位二進(jìn)制數(shù)相加,并在和超過15時產(chǎn)生一個進(jìn)位輸出位。由于加法
    的頭像 發(fā)表于 01-28 16:50 ?449次閱讀

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

    和CDx4HCT283系列包含4位二進(jìn)制加法器,其中HCT設(shè)備具有與TTL電壓兼容的輸入。這些器件能夠?qū)蓚€4位二進(jìn)制數(shù)相加,并在和超過15時生成
    的頭像 發(fā)表于 01-19 14:50 ?333次閱讀

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

    CD54/74AC283和CD54/74ACT283是采用先進(jìn)CMOS邏輯技術(shù)的4位二進(jìn)制加法器,具備快速進(jìn)位功能。這些器件能夠?qū)蓚€4位二進(jìn)制數(shù)相加,并在和超過15時產(chǎn)
    的頭像 發(fā)表于 01-08 16:55 ?593次閱讀

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

    /74AC283和CD54/74ACT283是采用先進(jìn)CMOS邏輯技術(shù)的4位二進(jìn)制加法器,能夠快速處理兩個4位二進(jìn)制數(shù)的加法運(yùn)算,并在和超過15時產(chǎn)生進(jìn)位輸出。這兩款器件具有多種封裝
    的頭像 發(fā)表于 01-04 17:25 ?742次閱讀

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

    : CD74AC283M96.pdf 產(chǎn)品概述 CD54/74AC283和CD54/74ACT283是采用先進(jìn)CMOS邏輯技術(shù)的4位二進(jìn)制加法器,能夠快速處理兩個4位二進(jìn)制
    的頭像 發(fā)表于 12-31 17:10 ?1414次閱讀

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

    SN54F283與SN74F283:4位二進(jìn)制全加器的技術(shù)剖析 在數(shù)字電路設(shè)計中,加法器是最基礎(chǔ)且關(guān)鍵的組件之一。今天我們要深入探討的是德州儀器(TI)的SN54F283和SN74F283這兩款4位
    的頭像 發(fā)表于 12-29 16:20 ?580次閱讀

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

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

    二進(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)制碼對指令運(yùn)行狀態(tài)進(jìn)行判斷

    在擴(kuò)展指令時我們常常需要一些手段來幫助我們判斷指令是否能夠成功運(yùn)行、運(yùn)行狀態(tài)是否正確。一方面,我們可以通過模擬器來實(shí)現(xiàn),另一方面,在沒有模擬器的情況下,我們可以通過將所擴(kuò)展指令的二進(jìn)制代碼導(dǎo)入
    發(fā)表于 10-24 06:46

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

    在擴(kuò)展指令時我們常常需要一些手段來幫助我們判斷指令是否能夠成功運(yùn)行、運(yùn)行狀態(tài)是否正確。一方面,我們可以通過模擬器來實(shí)現(xiàn),另一方面,在沒有模擬器的情況下,我們可以通過將所擴(kuò)展指令的二進(jìn)制代碼導(dǎo)入
    發(fā)表于 10-24 06:31

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

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

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

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

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

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