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();
但是,我需要知道从 .class
到 jimple
的地图。具体来说,对于.class
文件中的某行代码,我想知道它对应的jimple
表示。由于一行代码可以转换为多个jimple
代码,所以这个映射可以是一对多的。有没有什么API或者方法可以解决这个问题?
我找到了解决方案 here。详细来说,对于 Unit
你可以使用
Unit unit = ...
int sourceID = unit.getJavaSourceStartLineNumber();
// do something smart here ...
使用以下代码,我可以获得 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();
但是,我需要知道从 .class
到 jimple
的地图。具体来说,对于.class
文件中的某行代码,我想知道它对应的jimple
表示。由于一行代码可以转换为多个jimple
代码,所以这个映射可以是一对多的。有没有什么API或者方法可以解决这个问题?
我找到了解决方案 here。详细来说,对于 Unit
你可以使用
Unit unit = ...
int sourceID = unit.getJavaSourceStartLineNumber();
// do something smart here ...