產(chǎn)品體驗中心 下載與支持 產(chǎn)品社區(qū) 澤眾云   合作代理 |  咨詢電話:400-035-7887/021-6072 5088
當(dāng)前位置:澤眾軟件測試網(wǎng)- 技術(shù)文章 -正文

想要了解代碼靜態(tài)分析技術(shù),這些知識不可錯過

發(fā)布時間:2020-07-30

代碼靜態(tài)分析技術(shù)從本質(zhì)上來說,就是在程序不執(zhí)行的情況下,利用分析技術(shù)對程序代碼進行掃描,驗證代碼是否滿足規(guī)范性、安全性、可維護性等指標(biāo)的一種代碼分析技術(shù);從另一層面上說,是白盒測試的一種測試方法。大家如果想要了解靜態(tài)分析技術(shù)的話,下面的一些知識是一定不能夠錯過的。

CodeAnalyzer(代碼質(zhì)量管理)

基礎(chǔ)知識

定義:是在不執(zhí)行計算機程序的條件下,對源代碼進行分析,找出代碼缺陷。

執(zhí)行方式:一般配合靜態(tài)程序分析工具進行。

采用技術(shù):數(shù)據(jù)分析流,機器學(xué)習(xí),語義精簡。

可檢測類型:死鎖,空指針,資源泄漏,緩存區(qū)溢出,安全漏洞,竟態(tài)條件。

用途:程序翻譯/編譯,程序優(yōu)化重構(gòu),軟件缺陷檢測等。

對比:程序動態(tài)分析:需要實際執(zhí)行程序

程序理解:靜態(tài)分析這一術(shù)語一般用來形容自動化工具的分析,而人工分析則往往叫做程序理解。

優(yōu)點:

1、能夠檢測所有的代碼級別可執(zhí)行路徑組合,快速,準(zhǔn)確。

2、直接面向源碼,分析多種問題。

3、在研發(fā)階段開始找到并修復(fù)多種問題,節(jié)省大量時間,人力成本

(注意:靜態(tài)分析不是萬能的,測試是持續(xù)的過程)

靜態(tài)分析的對象是windows內(nèi)核模塊,第三方驅(qū)動程序等不開源的二進制代碼。

1、首先需要通過反匯編工具對模塊進行處理,生成相應(yīng)的匯編代碼,然后在此基礎(chǔ)上分析,檢查程序的語法,結(jié)構(gòu),過程,接口等,恢復(fù)和重建程序的數(shù)據(jù)類型,結(jié)構(gòu)和框架,驗證程序功能,邏輯是否正確。

2、在靜態(tài)分析過程中,關(guān)鍵的地方是要做到準(zhǔn)確提取信息,不論是源程序還是二進制程序,利用靜態(tài)分析技術(shù)都可以從中提取出控制流,表達式,接口和數(shù)據(jù)流等相關(guān)的信息。

3、由于程序本身可以看作是抽象的,復(fù)雜的數(shù)據(jù)結(jié)構(gòu)集合,因此程序的靜態(tài)分析技術(shù)主要是根據(jù)從程序中提取的相關(guān)信息,從不同角度對程序的數(shù)據(jù)結(jié)構(gòu)進行重構(gòu),根據(jù)模型推導(dǎo)數(shù)據(jù)之間的邏輯轉(zhuǎn)換關(guān)系。

常用數(shù)據(jù)結(jié)構(gòu)

常用的數(shù)據(jù)結(jié)構(gòu)包括函數(shù)調(diào)用圖,抽象語法樹,路徑圖等。

其中函數(shù)調(diào)用圖是利用程序中函數(shù)之間的調(diào)用關(guān)系建立起的模型,抽象語法樹是利用程序語義建立起的模型。

建立好抽象語法樹模型后,可以進一步獲取到程序模塊,函數(shù)的執(zhí)行過程,以及它們中間數(shù)據(jù)流動的過程,通過恢復(fù)程序的函數(shù)關(guān)系,可以建立起函數(shù)模型,在此基礎(chǔ)上,根據(jù)這些模型可以采用二進制對比技術(shù),語法分析,規(guī)則檢查,類型推導(dǎo)等多種方法對程序進行安全分析。

如。對程序代碼進行對比檢查可以采用二進制對比技術(shù),通過對比補丁前后函數(shù)匯編代碼的不同,可以快速定位補丁修改位置,然后進行分析,明確漏洞觸發(fā)的原因,實現(xiàn)編寫出針對該漏洞的驗證代碼。

如何分析缺陷

1、過程間分析:將考慮每一個合理的可執(zhí)行路徑

2、獲取一系列的函數(shù)定義:資源分配,調(diào)用

3、數(shù)據(jù)流分析將跟蹤所有應(yīng)用中的不可信數(shù)據(jù):source,sink,二者之間必須進行驗證。

4、某些使用智能靜態(tài)分析

找到潛在bug其實只是難題之一
1、消除誤報非常難
2、將復(fù)雜的缺陷解釋出來很難
3、只找潛在的一次性缺陷是很難的

通過上面的知識,對于代碼靜態(tài)分析技術(shù)相信每個人都一定有了一些自己的看法和理解。在小編看來,靜態(tài)分析簡單的說,就是自動化工具的分析,常用的自動化分析工具是比較多的,而小編是喜歡CodeAnalyzer這個工具的,CA可以在掃描源代碼時對安全規(guī)范子集中定義的規(guī)則進行逐條檢查,用戶可以通過自己的需求選定規(guī)則,并制定問題的嚴重程度,如果發(fā)現(xiàn)有不符合項則報告在問題列表中。

推薦閱讀:

白盒測試的基本方法有哪些?與黑盒測試的區(qū)別?

比較常用的白盒測試工具有哪些?

Java靜態(tài)代碼掃描怎么做?Java靜態(tài)代碼掃描工具的使用方法

為什么要做白盒測試?哪些項目適合白盒測試?

為什么要進行代碼檢查?靜態(tài)代碼分析工具的優(yōu)勢有哪些

什么情況下需要進行靜態(tài)程序分析?常用Java靜態(tài)代碼分析工具的優(yōu)勢

代碼審查和代碼走查的區(qū)別及代碼審查在軟件開發(fā)生命周期中的作用

常用Java靜態(tài)代碼分析工具的分析與比較

本文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系SPASVO小編(021-60725088-8054),我們將立即處理,馬上刪除。
滬ICP備07036474號 2003-2024 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
微信
咨詢

添加客服微信 歡迎咨詢測試工具和測試服務(wù)

微信客服
問題
反饋
產(chǎn)品
畫冊

掃描二維碼下載澤眾軟件企業(yè)宣傳冊

產(chǎn)品畫冊
返回
頂部

方案咨詢

×
提交信息

電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報價)。

您的信息已成功提交!

我們的客服人員稍后會與您聯(lián)系