Androguard 可以生成Java 方法级与Dalvik 指令级的图形文件,配合 Gephi工具查看图形文件,可以快速地了解程序的执行流程,在静态分析Android程序时,这个功能非常方便。下面我们以crackme0502.apk为例,介绍如何使用 Gephi来静态分析它。首先下载Gephi程序,Gephi是开源的,支持Mac OSX/Windows/Linux 三种平台,目前最新版本为0.8.1beta,笔者演示时下载的是Windows 版本的安装程序,顺利安装完成后启动界面如图5-14所示。


 

点击菜单项“文件→打开”,选择上一小节使用 Androguard 生成的crackme0502.gexf,Gephi会分析出 gexf 文件的版本为1.2,然后点击确定按钮进入图形显示界面。在流程中选择“Yifan Hu”,然后点击运行按钮来生成分析图,如图5-15所示。


 

分析图生成完毕后,点击图形下方的“T”按钮显示标签(label)的内容,然后拖动旁边的两个滑块来调整连接线的粗细与文本的字体大小,如图5-16所示,左边的滑块用来调整节点与节点之间连接线的粗细,右边的滑块用来调整文本的字体大小。


 

接下来点击Gephi菜单栏下方的“数据资料“按钮,切换到“数据资料”选项卡,在过滤标签旁边的文本框中输入“OnCreate”查找所有OnCreate()方法,结果如图5-17所示。


 

结果中的第一条记录就是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所示。


 

点击Gephi的菜单项“文件→保存”,将修改后的 gexf 文件存为 crackme0502.gephi ,方便以后查看。可以发现,使用Gephi分析apk文件比IDA Pro分析还要直观。除了简单的显示方法调用外,Gephi还有很多强大的功能,这些就留给读者自己慢慢去挖掘了。

Logo

更多推荐