首頁 > 軟體

使用Go構建一款靜態分析工具Owl詳解

2022-06-10 18:00:28

介 紹

Owl是一款開源專案依賴分析工具,可以快速在指定的專案目錄下查詢符合某些特徵的原始碼檔案或者依賴檔案。為何開發了這款工具?例如很多時候我們專案太大,專案資料夾下有很多依賴檔案,如一個Java專案引入了log4j這個jar依賴,在專案中某檔案存在迴圈依賴問題。當某個依賴包出現了漏洞時,本工具能快速掃描專案目錄下存在的可疑依賴檔案,並且給出依賴檔案所在的地址,幫助開發者能快速進行定位到可疑檔案。

原 理

目前版本的功能比較簡單,工作原理很簡單,工具會對特定目錄進行掃描通過內建的特徵碼演演算法匹配到特定檔案,然後收集與其特徵碼匹配的檔案地址,然後展示出來,也可以重定向到一個固定json檔案中儲存。

Owl類似於防毒軟體一樣,和防毒軟體的工作原理差不多,Owl會根據依賴檔案的特徵碼來掃描整個專案,和防毒病毒庫工作原理類似。當然如果嚴格按照防毒軟體那種標準做的話,可能涉及一些組合相關的,目前owl功能實現還沒有那麼複雜,後面會版本會加入codeql程式碼分析引擎,通過codeql的資料庫來做靜態分析功能增強。

快速開始

如何使用owl?你可以克隆倉庫然後通過如下命令:

git clone git@github.com:auula/owl.git

在倉庫內部有一個Makefile檔案可以快速幫助你構建相應平臺的二進位制檔案,例如:

$: make help
make darwin	| Compile executable binary for MacOS platform
make linux	| Compile executable binary for Linux platform
make windows	| Compile executable binary for Windows platform
make clean	| Clean up executable binary

Owl起因也是為CodeAnalysis所編寫的特徵檢測工具,所以你也可以在:https://github.com/Tencent/CodeAnalysis 這個專案下面的tools目錄找到已經編譯好的二進位制可執行檔案,下載對應平臺的二進位制檔案即可。

如何使用

程式構建完成會得到一個二進位制檔案,程式名稱為owl,如下為owl執行效果,一些子命令引數都已經列出:

$: ./owl
			 _____  _    _  __
			(  _  )( // )(  )
			 )(_)(  )    (  )(__
			(_____)(__/__)(____) 

IT145.com E-mail:sddin#qq.com