2

我使用 soot 来检测 java 程序。我知道要在 soot 中添加对特定类的调用,我们必须将“Soot class-path”设置为包含该类 .class 文件的目录。所以我在主类的主要方法中这样做。我带来了下面的代码片段

public class Main {
public static void main(String[] args) {
Scene.v().setSootClassPath("/home/j/IdeaProjects/Test_1/classes:/home/j/IdeaProjects/Test_1/libs/rt.jar:home/j/IdeaProjects/Test_1/libs/jce.jar");
    PackManager.v().getPack("jtp").add(new Transform("jtp.RetIns", new ExIns()));
....

但是,当我想使用位于类文件夹中的“Insop”类时,请通过以下 Exins 方法中的代码:

static SootClass Ins;
static
{
    Ins= Scene.v().loadClassAndSupport("Insop");
}

我得到错误

Caused by: java.lang.RuntimeException: couldn't find class: Insop (is your soot-class-path set properly?)

我应该提到我使用 ubuntu 14.4 32 位,我在 intellij 上运行代码。我找不到我的错误。请你帮助我好吗。

4

1 回答 1

2

我终于找到问题了。我不知道为什么,但我应该用相对路径设置“soot class-path”。例如,对于我的项目,它应该设置如下:

Scene.v().setSootClassPath("classes:libs/rt.jar:libs/jce.jar");
于 2016-10-25T07:58:59.920 回答