安全程式設計基礎 Cppcheck工具的入門學習

2021-10-06 11:41:23 字數 3400 閱讀 9178

cppcheck是用於c / c ++**的靜態分析工具。 它提供了獨特的**分析功能以檢測錯誤,並專注於檢測未定義的行為和危險的**結構設計。 cppcheck工具旨在準確的檢測出**中的實際錯誤(很少會有誤報)。 cppcheck還支援分析非標準的c語言語法(例如一些嵌入式專案)c / c ++**。

2.1、靜態分析乙個程式

例如有這樣乙個測試程式:

int

main()

直接執行cppcheck test.c

就可以獲得乙個越界訪問的錯誤提示。

2.2、靜態分析乙個資料夾中的所有程式

分析乙個資料夾中的所有程式只需要執行 cppcheck dirname 就可以了。

它就會遞迴的對資料夾中所有的程式去執行遞迴檢測。但是這種檢測預設不會列印錯誤資訊。你需要執行cppcheck dirname 2> err.txt ,將錯誤資訊重定向到乙個檔案中。

然後在檔案中檢視錯誤資訊。

2.3支援靜態分析專案檔案

cppcheck工具支援對visual studio solution、visual studio project、compile database等專案檔案原始碼靜態分析的支援。你可以使用cppcheck --project=《專案檔案》的方式靜態分析你的專案。

2.4過濾的靜態分析原始檔

cppcheck工具提供了去過濾你不想要檢查的原始檔。你可以使用cppcheck -i檔名或目錄名 的方式,去過濾你不想靜態分析的原始檔或目錄。當想過濾多個時,多幾個-i。

cppcheck -itest1 -itest.c study/
l error:當發現 bug 時列印等級錯誤訊息。

l warning:發現了一些潛在的安全危機,給你一些如何增強**安全性的建議。

l performance: 建議一些使**效能更好的方法。這些建議只是基於常識,即使修復這些訊息,也不確定是否會得到的明顯效能提公升。

l portability: 關於可移植性的警告。比如一行**在不同的編譯器環境下有不同的結果。

|information: 配置資訊,建議在配置期間僅啟用這些。

等見下圖。

​ 使用cppcheck工具時,預設情況只會列印error等級的訊息。你可以使用--enable=來指定你想得到的訊息,id就是上面所介紹的訊息名。比如cppcheck --enable=warning study/ 2> err.txt就可以獲得warning等級的訊息重定向到err.txt中。當然,我們非常希望可以獲得所有的錯誤訊息型別,來使我們的**安全性更高。--enable=all可以做到這點。

​ 我們看到,靜態分析單個檔案的時候會自動顯示錯誤訊息,但是我們在靜態分析整個資料夾的時候卻需要重定向標準錯誤到檔案中才能查詢。我們可不可以直接將錯誤訊息列印出來呢。加乙個--report-progress即可。具體更多的功能詳情請看cppcheck -h或官方文件

--report-progress    report progress messages while checking a file.
4.1cppcheck gui專案檔案你可以通過cppcheck --project=***.cppcheck命令來匯入cppcheck圖形介面建立的專案檔案進行靜態分析。為了保證命令列介面的精簡性,cppcheck圖形化介面有一些功能不能在命令列中使用。所以你可以通過匯入乙個圖形化介面的專案檔案來使用這些功能。

4.2visual studio專案檔案

你可以執行cppcheck --project=***.vcxproj命令來匯入每乙個專案檔案,或者cppcheck --project=***.sln直接匯入整個解決方案進行靜態分析。

在預設情況下cppcheck工具採用本機預設的平台配置。你也可以使用cppcheck --platform=或者的命令來設定平台環境,type型別如下圖所示。file則是你的配置檔案見下文。

你也可以通過編寫xml配置檔案來配置平台環境。

例如:

<?xml version="1"?>

>

>

8char_bit

>

>

signeddefault-sign

>

>

>

2short

>

>

4int

>

>

4long

>

>

8long-long

>

>

4float

>

>

8double

>

>

12long-double

>

>

4pointer

>

>

4size_t

>

>

2wchar_t

>

sizeof

>

platform

>

cppcheck提供了幾種不同的錯誤資訊列印風格:gcc、vs、edit等。我們只需要在列印時使用cppcheck --template=vs(gcc/edit)即可。

除了提供好的模板,我們也可以自定義錯誤資訊的列印格式。通過命令cppcheck --template=":: : "自定義資訊列印格式。

安全基礎 安全術語

可以利用肉雞的流量頻寬計算能力等,進行諸如ddos攻擊 挖礦等行為。肉雞一般可分為家庭雞和網咖雞 指通過掃瞄弱口令 爆破 漏洞自動化種馬達到控制機器的目的。抓雞一般分為 1433 sql 通過sa許可權種馬 3389 windows遠端桌面埠 3306 myql 通過root許可權 計算機木馬 網頁...

網路安全之python C S模式基礎程式設計

socket型別包括 tcp socket 和 udp socket。常規的客戶服務區模式。raw socket 可用於嗅探和注入 c s client server,客戶機 伺服器 模式又稱c s結構,是20世紀80年代末逐步成長起來的一種模式,是軟體系統體系結構的一種。c s結構的關鍵在於功能的...

PHP安全程式設計

一 外部策略 1.處理使用者的提交的資料 get post request cookie argv php stdin php input file get contents 遠端的資料庫資訊 遠端api 來自客戶端的資料 以上的資料來源都很可能被作為資料來源插入到你的php指令碼中從而造成 xss...