我目前正在开发一个程序,该程序将两个控制流图相互比较(这些图是用 Soot 生成的)。这些图属于两个不同的类别;所以每个人都有一个cfg。
目前我正在使用以下加载类:
SootClass sClassNew = Scene.v().loadClassAndSupport("Calc");
sClassNew.setApplicationClass();
SootClass sClassOld = Scene.v().loadClassAndSupport("Calc2");
sClassOld.setApplicationClass()
如果我通过右键单击项目添加一个包含 Calc.java 和 Calc2.java 类的文件夹,这将有效。Java 构建路径 | 添加外部类文件夹| 选择文件夹。
不幸的是,这并不是我想要的,因为:
- 这两个类将具有相同的名称,因为它们是彼此不同的版本。换句话说,一个类是另一个类的更新版本。
- 执行程序时,我想让用户能够选择文件以便构建 cfg。因此,我必须消除上述步骤以添加类,并且需要一种在运行时添加它们的方法。
一个重要的注意事项是,Soot 只会从在 Soot 的类路径中找到的 JAR 文件和目录中加载文件。有谁知道我该如何解决这两个问题?