我有一个 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() 中放入什么?