我正在使用Soot检测一个apk文件。当我在运行煤烟前添加以下语句。主(甚至没有创建我的身体变压器),我得到一个regCount错误。(对于不同的apk文件,同样的错误会在不同的方法中出现)
Scene.v().addBasicClass("MyScheduler");
// PackManager.v().getPack("jtp").add(new Transform("jtp.myInstrumenter", new MyBodyTransformer()));
soot.Main.main(args);
我得到的错误是:
Transforming android.support.v4.view.ViewConfigurationCompat$FroyoViewConfigurationVersionImpl...
Exception in thread "main" java.lang.RuntimeException: regCount does not match the number of arguments of the method
at org.jf.dexlib.Code.Format.Instruction35c.checkItem(Instruction35c.java:160)
at org.jf.dexlib.Code.Format.Instruction35c.<init>(Instruction35c.java:69)
at soot.toDex.instructions.Insn35c.getRealInsn0(Insn35c.java:96)
我的问题是由我试图添加的类代码引起的。这真的是一个微妙的点:我使用"Long"s的ArrayList,但我的一些方法是添加/删除类型为"Long"的变量。虽然Java执行装箱,而且我在执行Java代码时没有遇到问题,但是这种差异在中间语言中是有问题的。