1,为什么要获取apk的函数调用图?
在进行android应用分析时,我们对apk的整体运作流程是未知的,通过函数调用图能很好的反映应用的执行流程。
2,如何获取?
2,1,新建项目experiment
2,2,在该网址下载相应的jar包,并导入到项目当中
https://github.com/secure-software-engineering/soot-infoflow-android/wiki
2,3,在eclipse中导入
https://github.com/secure-software-engineering/soot-infoflow-android/wiki
中的几个项目导入后会出错,根据博客http://blog.csdn.net/liu1075538266/article/details/62361295的方法,既删除所有heros的Build Path的MavenDependence Path即可解决问题。
2,4,编写代码
package com.lengbo.experiment;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
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;
import soot.util.dot.DotGraph;