Windows下flowdroid的構建與運行

  上一篇介紹了flowdroid相關的內容,見http://www.cnblogs.com/zlz099/p/6924879.html,這一篇講一下flowdroid的構建與運行。html

其中遇到了不少坑,但參考了http://aaronmoment.cn/run-flowdroid/java

https://traceflight.github.io/tech/build-and-run-flowdroid-in-eclipse.html的博客後終於把它跑起來了。別人的博客都是介紹在android

Linux和Mac OS x下的,我是在Windows下構建運行的。git

 

一、JDK必定要選擇jdk1.8以上的版本,1.7的版本會報錯Unsupported major.minor version 52.0github

二、首先,flowdroid官方文檔給出了兩種構建運行方式,分別是Obtaining the nightly builds和Building FlowDroid From Source。我選擇從源碼層構建flowdroid。性能優化

三、首先,從github上下載全部的項目到本地,解壓在同一個文件夾下。app

github介紹:https://github.com/secure-software-engineering/soot-infoflow-android/wikieclipse

heros:   https://github.com/Sable/heros.git
jasmin:   https://github.com/Sable/jasmin.git
soot:  https://github.com/Sable/soot.git
soot-infoflow:    https://github.com/secure-software-engineering/soot-infoflow.git
soot-infoflow-android:    https://github.com/secure-software-engineering/soot-infoflow-android.git

四、導入eclipse:打開Eclipse選擇 File -> Import -> General -> Existing Projects into Workspace,分別導入5個項目便可。工具

五、下載依賴文件:兩個,一個是android.jar,在谷歌官方下載,作Android開發的都在AndroidSDK\platform文件夾下。性能

一個是droidbench,DroidBench是用於評估Android軟件污點分析工具備效性的開源測試集,FlowDroid中的測試代碼部分使用到了DROIDBENCH環境變量,在分析自定義軟件時不須要該變量。所以,該數據集不是運行FlowDroid的必須文件。下載地址是https://github.com/secure-software-engineering/DroidBench。若是是分析本身的軟件,則不須要下載droidbench(我的看法,最好下載)。

配置環境變量:android_jar:   E:\AndroidSDK\platforms\android-19\android.jar(本身找)

droidbench:E:\MyJava\flowdroid\soot-infoflow-android\test\soot\jimple\infoflow\android\test\droidBench(在本身本地的soot-infoflow-android目錄下)。

六、其餘配置

  • SLF4J文件重複問題 在項目herossoot-infoflow兩個項目中的classpath文件中均有slf4j-simple-1.7.5.jar。所以在項目編譯時會提示SLF4J文件重複,解決方法是在soot-infoflow項目的.classpath文件中刪除對應行<classpathentry kind="lib" path="lib/slf4j-simple-1.7.5.jar"/>。這個classpath文件在soot-infoflow目錄下。
  • 沒法找到EasyTaintWrapperSource.txt soot-infoflow-anadroid項目編譯時提示找不到文件EasyTaintWrapperSource.txt。該文件可在項目soot-infoflow根目錄下找到,複製到soot-infoflow-anadroid的根目錄下便可。

七、運行flowdroid:

直接運行soot.jimple.infoflow.android.TestApps下的test文件,獲得的結果以下:

找到了一個從source到sink的信息流。

 

soot-infoflow-anadroid項目提供了多個測試集,位於項目test文件夾下,分別爲:droidBench數據集測試、insecureBank.apk測試、otherAPKs測試、sourceToSinks測試和xmlParser測試。使用方法爲,右擊對應的java文件,選擇Run As -> JUnit Test。

八、分析自定義文件:

分析自定義文件使用soot.jimple.infoflow.android.TestApps中的Test.java文件。該文件的輸入包括兩個參數:apk-file和android-jar-directory。配置方法以下:

  右擊Test.java文件,選擇Run As -> Run Configurations…

 

左側選擇Java Application裏面的Test(若是打開Configurations後,左側沒有Test,可先執行Run As -> Java Application),右側選擇Arguments標籤,裏面寫入兩個參數,點擊Apply、Run,便可獲得分析結果。




九、下一步將參考復旦楊珉教授團隊的工做,找接下來要作的方向和內容。優化flowdroid或者利用flowdroid作隱私泄露分析等。

十、問了一個師兄,他在作flowdroid的性能優化,以及結合符號執行去提高精度。開發了更多的模式,可以更靈活的分析,好比針對特定的組件,特定的source、sink,還有後期結果處理部分策略的。

相關文章
相關標籤/搜索