大家好,最近由於工作的需要搭建Android分析環境,Flowdroid作為老牌可靠(最主要的是作者還在維護更新)的靜態污點分析工具,是分析Android靜態特征的利器。
網上有很多在Eclipse環境下利用maven配置Flowdroid的教程,但經筆者測試后發現,一是這些教程大多是16、17年的,由於庫的版本幾經更迭,一些函數和方法都已棄用,需要新版本來進行更好的分析;
二是用maven方法解決依賴雖然簡單無腦,但有時某些提供依賴庫的網頁已經無法訪問,或者更換了地址和版本,這時解決起來會非常麻煩,也是踩了不少坑。在嘗試多個方法無果后決定直接導入作者編譯好的jar文件,以減少不必要的麻煩。
筆者在配置過程中遇到過一些奇怪的問題,最后終於成功解決。發出來給自己做筆記,也希望能幫到更多需要使用它的朋友。
一、軟件和環境(均使用最新版本)
- IDEA IntelliJ 2020.2,舊版本也可以,無影響。
- soot-jar庫。flowdroid是基於soot框架開發的,必須有它才能工作。該庫已經集成heros,jasmin等依賴,無需另行下載。
- Flowdroid 2.8 。在發行版頁面下選擇soot-infoflow-classes和soot-infoflow-android-classes兩個jar文件下載即可。
以上內容下載完成后,把它們放在你想要加入的項目目錄下。雖說庫的位置對項目無影響,不過方便起見還是和使用到它的項目放在一起更好。筆者是放在libs下。
二、導入jar
點擊IDEA窗口右上角的項目結構按鈕,點擊左側的Libraries選項卡,點擊加號選擇Java,在所在的項目目錄中選取剛剛下載的jar庫,最后點擊確定即可。
如果是舊版本的IDEA,右上角可能沒有項目結構的按鈕。在菜單欄的FIle->Project Structure也能找到。
三、測試
筆者參考了 使用Flowdroid生成Android程序API調用序列 這篇文章中的代碼,需要注意將代碼中的androidPlatformPath和appDirPath修改為你的SDK和樣本所在目錄。
測試結果:
四、可能遇到的問題
1.java.lang.NoClassDefFoundError: gnu/trove/strategy/HashingStrategy
未找到類,因為trove4j庫沒有下載配置好,缺少依賴。這里要感謝github上解答issue的大佬:issue
轉載請注明出處!