使用FlowDroid生成Android应用程序的函数调用图

本文介绍了如何利用FlowDroid这一静态分析工具,生成Android应用程序的函数调用图。Flowdroid基于Soot开发,提供强大的数据流分析。虽然还有其他如androguard和APKTool等替代方案,但Flowdroid生成的调用图更具说服力。文章提供了一个简单的工程结构,包含CGGenerator.java和CGExporter.java,用于生成和可视化调用图。最终生成的gexf格式调用图可以通过Gephi进行查看和分析。
摘要由CSDN通过智能技术生成

提到Android应用程序静态分析,就不能不提Flowdroid。该工具是目前使用很广泛的Android应用程序数据流分析工具。它基于强大的Java分析工具Soot开发,提供了许多有用的功能。具体的介绍和使用帮助可以访问开发团队的网站 点这里

然而有时候我们并不需要使用Flowdroid的全部功能,例如有时候我们只想要一个APK里面的函数调用图。当然我们可以使用androguard(最近好像又更新了)来生成函数调用图,或者用APKTool来反汇编APK,然后再自己编程搜索反汇编后的smali文件来生成函数调用图。但是我认为使用Flowdroid生成的调用图是比较有说服力的。下面直接放代码。

  • 整个工程的目录结构,其中CGGenerator.java用来生成调用图,CGExporter.java里面封装了一些把调用图可视化的函数。除此之外还需要导入4个jar包:gexf4j.jar, AXMLPrinter2.jar, stax2-api-3.1.1.jar, woodstox-core-asl-4.0.6.jar
    工程目录

    当然本工程还要导入对Flowdroid原本工程(可以从他们的官方网站上找到下载)的依赖。
    依赖的工程

  • CGGenerator.java

package flowdroidcg;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import soot.MethodOrMethodContext;
import soot.PackManager;
import soot.Scene;
import soot.SootMethod;
import soot.jimple.infoflow.android.SetupApplication;
import soot.jimple.toolkits.callgraph.CallGraph;
import soot.jimple.toolkits.callgraph.Targets;
import soot.options.Options;

public class CGGenerator {
   
    //设置android的jar包目录
    public final static String jarPath = "/home/liu/Android/Sdk/platforms";
    //设置要分析的APK文件
    public final static String apk = "/home/liu/app-release.apk";

    private static
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 53
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值