2

我有一个 target.java:

static void main(){
    int a = 0;

    a++;
    a++;
    return 0;
}

我想用soot插入一个命令,这样target.java就可以输出下面这句话“a is = 2”(我不需要和下面一样的代码格式):

static void main(){
    int a = 0;

    a++;
    a++;
    System.out.println("a is = " + a + "\n");
    return 0;
}

有谁知道该怎么做?
我知道一些关于 soot 的事情是我应该先做一个表达式,然后我应该找到 main 方法的最后一个位置,然后我将表达式转换为语句,最后我应该将语句添加到字节码中。

InvokeExpr reportExpr = Jimple.v().newStaticInvokeExpr(//something here);
Stmt reportStmt = Jimple.v().newInvokeStmt(reportExpr);
units.insertBefore(reportStmt, stmt);

我应该在 newStaticInvokeExpr() 中放入什么?

4

0 回答 0