SPIKE是immunitysec公司的Dave Aitel寫的一個黑盒進行安全測試的工具。SPIKE提供了各種各樣的構造函數。例如s_binary可以構造二進制數據,s_string可以構造字符串,s_unistring可以構造UNICODE字符串等。SPIKE的另一個優勢是Dave Aitel的Fuzz理論,它可以構造一些特殊的數字或者字符串作為程序的輸入,檢查程序是否能夠處理這些異常數據。此外,SPIKE裡邊提供了常見的協議支持,例如SUN RPC和MS RPC。
(2)Lint
Lint能夠檢查的部分錯誤列表:可能的空指針;在釋放內存之後使用了該指針;賦值次序問題;拼寫錯誤等。通常,一個C/C++的編譯器假設程序是正確的,而Lint恰恰相反,因此,它優於編譯器執行的一般性檢查。Lint還可以貫穿多個文件來執行它的錯誤檢查和代碼分析,這是編譯器做不到的。比較流行的Lint 程序有:PC-lint是一個由Gimpel Software提供的支持C/C++的商用程序;Splint (原來的 LCLint) 是一個GNU免費授權的 Lint程序,但是只支持C不支持C++。
運行 Lint時,和正常的編譯器一樣,只要把直接加入的makefile 中就可以了。通過配置選項、代碼注釋等方法可以控制和校准Lint的輸出。例如,這裡有一個返回NULL指針的函數,Splint可以通過下面的注釋 /*@null@*/ 來識別:
這樣做有兩個目的:防止Splint為這個返回Null指針的函數告警;保證Splint 檢查任何調用該函數的代碼中使用該函數的返回指針是有效的。
(3)Flawfinder
Flawfinder 是一款用Python編寫的c、c++程序安全審核工具,可以檢查潛在的安全風險。它通過搜索檢測文件源代碼從而得到潛在的安全漏洞,支持檢測數據庫,以HTML格式生成報告。