2014-04-22 31 views
1

有沒有人知道具有多個入口點的程序(特別是Android APK)的入口點生成過程。我已經試過看看FlowdroidScandroid,但我不理解術語「源」和「匯」以及它們與入口點生成的關係。Android入門要點

如果有人能指點我爲新手學習資源,也許一些好書,我會非常感激。 (我已經浪費了幾天的時間)

謝謝。

編輯,之後再閱讀FlowDroid:

來源和投資沒有關係的切入點一代,但它們用於數據流分析。這就是爲什麼當運行FlowDroid與--nocallbacks選項時,它不會生成dummyMainClass.class。 Amirite?還是我仍然錯了?

來源:

此外,FlowDroid需要Android的生命週期和回調的一個完整的模型。由於Android的源和匯由SuSi提供,因此我們只需查找入口點。除了必要的元信息之外,它們還從Android的清單文件,dex文件和layout xml文件中提取。後者允許我們考慮用XML定義的用戶交互回調(例如按鈕點擊),並根據密碼字段發現其他來源。由於用戶交互不能靜態預測,因此FlowDroid會生成一個特殊的主要方法,它考慮所有可能的組合,以確保不會丟失污點。

回答

0
--nocallbacks 

禁用的Android回調的仿真(點擊按鈕,GPS位置變化等;此選項可減少運行時間,但可能會錯過一些泄漏。

什麼是回調? 從FlowDroid paper

回調Android操作系統允許應用程序爲 註冊回調各種類型的信息,例如位置 更新或用戶界面的交互。 FLOWDROID以 模擬這些回調爲其虛擬主要方法,例如以識別 應用程序將位置數據作爲參數存儲到框架傳遞給 回調的位置數據中,並在稍後將 活動停止時發送到Internet 。通常無法預測調用回調的順序,因此FLOWDROID假定 可以按任何可能的順序調用所有回調。但是, 回調只能在父組件(例如活動) 正在運行時發生。爲了精確,FLOWDROID因此將組件 (活動,服務等)與其註冊的回調相關聯。例如,活動 可以記錄在按下按鈕 時被調用的回調。然後,相應的回調處理程序必須僅在 活動的onResume()和onPause()事件之間分析 。 有兩種不同的方式在 Android平臺上註冊回調處理程序。首先,可以在 活動的XML文件中聲明性地定義回調。或者,他們也可以註冊 命令式地使用對特定系統方法的熟知的調用。 FLOWDROID支持兩種方式。此外,對於惡意軟件, 是攻擊者通過覆蓋Android基礎架構的方法註冊未公開的回調的風險,其中一些 甚至可以由本機代碼調用。 FLOWDROID識別出這樣的覆蓋方法,處理它們類似於正常回調 等處理程序,例如按鈕點擊。 爲了查找在應用程序代碼中註冊的回調,FLOWDROID 首先計算每個組件的一個調用圖,從 各個組件類中實現的 生命週期方法(onCreate(),onStop()等)開始。然後,此調用圖用於掃描調用Android系統方法的 ,該方法使用衆所周知的 回調接口之一作爲形式參數類型。之後,呼叫 圖表逐步擴展以包括這些新發現的 回調,並且掃描再次運行,因爲回叫處理程序是免費的 以獨立註冊新的回調,可能需要FLOWDROID 重新擴展調用圖並重新 - 分析,直到它到達的固定點 。雖然這種方法比僅爲實現回調接口的類掃描 更昂貴,但它在組件和回調之間提供更精確的映射。這並不是 只能減少誤報,但我們也發現它會大大減少以下污點分析的運行時間。一旦構建了主要方法虛擬 ,FLOWDROID將使用此方法計算最終的 調用圖作爲應用的入口點。 對於佈局XML文件中定義的回調,相應的 XML文件被映射到一個或多個應用程序組件,並使用各自的佈局控件。按鈕單擊處理程序(例如, )僅對承載相應按鈕的活動有效。 FLOWDROID 分析每個活動以查看它註冊的XML 文件中的哪些標識符。然後使用此信息創建映射

對不起,我們遇到了同樣的問題:沒有關於Soot/FlowDroid的良好文檔。但我經常通過搜索郵件列表找到解決我的問題的方法。