Windows下flowdroid的構建與運行


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

其中遇到了很多坑,但參考了http://aaronmoment.cn/run-flowdroid/

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

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

 

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

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

3、首先,從github上下載所有的項目到本地,解壓在同一個文件夾下。

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

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

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

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目錄下)。

6、其他配置

  • 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的根目錄下即可。

7、運行flowdroid:

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

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

 

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

8、分析自定義文件:

分析自定義文件使用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,即可得到分析結果。




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

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM