天天看點

使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析

Androguard 可以生成Java 方法級與Dalvik 指令級的圖形檔案,配合 Gephi工具檢視圖形檔案,可以快速地了解程式的執行流程,在靜态分析Android程式時,這個功能非常友善。下面我們以crackme0502.apk為例,介紹如何使用 Gephi來靜态分析它。首先下載下傳Gephi程式,Gephi是開源的,支援Mac OSX/Windows/Linux 三種平台,目前最新版本為0.8.1beta,筆者示範時下載下傳的是Windows 版本的安裝程式,順利安裝完成後啟動界面如圖5-14所示。
使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析
點選菜單項“檔案→打開”,選擇上一小節使用 Androguard 生成的crackme0502.gexf,Gephi會分析出 gexf 檔案的版本為1.2,然後點選确定按鈕進入圖形顯示界面。在流程中選擇“Yifan Hu”,然後點選運作按鈕來生成分析圖,如圖5-15所示。
使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析
分析圖生成完畢後,點選圖形下方的“T”按鈕顯示标簽(label)的内容,然後拖動旁邊的兩個滑塊來調整連接配接線的粗細與文本的字型大小,如圖5-16所示,左邊的滑塊用來調整節點與節點之間連接配接線的粗細,右邊的滑塊用來調整文本的字型大小。
使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析
接下來點選Gephi菜單欄下方的“資料資料“按鈕,切換到“資料資料”頁籤,在過濾标簽旁邊的文本框中輸入“OnCreate”查找所有OnCreate()方法,結果如圖5-17所示。
使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析

結果中的第一條記錄就是MainActivity的OnCreate(),在第一條記錄上點選右鍵,選擇菜單項“在概述選擇”(這個 Gephi的中文翻譯有些别扭,其含義應該是“在概覽圖中選中”),然後點選菜單下方的概覽按鈕,切換到圖形顯示頁面,發現ACTIVITY 節點與OnCreate 節點,以及它們之間的連接配接線都是綠色的,将滑鼠放在OnCreate節點上,可以看到它向下關聯了MainActivity$1.<init>、findViewById 、setContentView、MainActivity$2.<init>共4 個節點,拖動所有的節點調整至合适位置,完成後效果如圖5-18 所示,MainActivity在OnCreate()方法中執行了哪些内容一目了然。

按照上面的步驟,我們來檢視OnClick()方法的節點,找到MainActivity$2的OnClick()方法,然後在記錄上點選右鍵選擇“編輯節點”,在顔色一欄将其修改為“[255,0,0] ”,設定節點為紅色,然後如法炮制的設定 OnClick 節點的連接配接線連接配接的幾個節點,最後在設定isRegistered 節點時,将其尺寸調整為15.0 ,最後效果如圖5-19所示。

使用Androguard配合Gephi生成apk的函數調用圖進行靜态分析
點選Gephi的菜單項“檔案→儲存”,将修改後的 gexf 檔案存為 crackme0502.gephi ,友善以後檢視。可以發現,使用Gephi分析apk檔案比IDA Pro分析還要直覺。除了簡單的顯示方法調用外,Gephi還有很多強大的功能,這些就留給讀者自己慢慢去挖掘了。