以编程方式使用Soot分析.java源文件

时间:2015-10-07 08:12:31

标签: code-analysis static-code-analysis soot program-slicing

我刚开始玩Soot,以便以编程方式分析.java文件。从我读过的内容来看,Soot似乎是一个非常强大的源代码分析工具,但我在网上找到的大部分材料都是将它用作命令行工具。

我需要以编程方式从给定目录中的.java文件加载类,构建程序依赖图(PDG)并执行一些程序切片。我仍然不确定Soot是否提供切片,但是一旦我有了PDG,我就可以自己实现。

首先,我尝试使用以下代码:

Options.v().set_whole_program(true);
Options.v().set_soot_classpath("...");

SootClass c = Scene.v().loadClassAndSupport("MyClass");
c.setApplicationClass();

CHATransformer.v().transform();
CallGraph cg = Scene.v().getCallGraph();

然而,它不起作用。它在loadClassAndSupport调用时停留了几秒钟,然后我的程序突然存在,没有任何例外或任何事情。

如果有人尝试以编程方式使用Soot,是否还需要设置其他选项?或者您能指点我从头开始设置Soot 以编程方式的教程吗?

1 个答案:

答案 0 :(得分:0)

您不应该使用loadClassAndSupport。插入"场景变换器"代替。使用FlowDroid扩展到Soot可以实现切片。它支持切换Android和Java代码。