Soot - 从 java class 映射到 jimple

Soot - Map from java class to jimple

使用以下代码,我可以获得 java .class 文件的 jimple 表示:

        soot.Main.main(args);
        SootClass mainClass = Scene.v().getMainClass();
        String methodSignature = "void main(java.lang.String[])";
        SootMethod mainMethod = mainClass.getMethod(methodSignature);
        Body jimpleBody = mainMethod.retrieveActiveBody();

但是,我需要知道从 .classjimple 的地图。具体来说,对于.class文件中的某行代码,我想知道它对应的jimple表示。由于一行代码可以转换为多个jimple代码,所以这个映射可以是一对多的。有没有什么API或者方法可以解决这个问题?

我找到了解决方案 here。详细来说,对于 Unit 你可以使用

Unit unit = ...
int sourceID = unit.getJavaSourceStartLineNumber();
// do something smart here ...