soot - 在 Soot 中为 java 代码使用类和方法
问题描述
我是新来的烟灰。我试过这段代码,但它有错误。
public class Main {
private static final Body B = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
final String apppath = "c:\\Users\\SHTAV3\\Desktop\\Myclass.jar";
soot.G.reset();
Options.v().set_process_dir(Collections.singletonList(apppath));
Options.v().set_allow_phantom_refs(true);
Options.v().set_prepend_classpath(true);
Options.v().set_validate(true);
Options.v().set_whole_program(true);
Options.v().set_app(true);
Options.v().set_src_prec(Options.src_prec_class);
Scene.v().loadNecessaryClasses();
SootClass appclass = Scene.v().loadClassAndSupport("Myclass");
appclass.setApplicationClass();
SootMethod m = appclass.getMethodByName("printOne");
ExceptionalUnitGraph g = new ExceptionalUnitGraph(B);
Body B = m.retrieveActiveBody();
VeryBusyExpressions an = new VeryBusyExpressions();
Iterator i = g.iterator();
while (i.hasNext()) {
Unit u = (Unit)i.next();
List IN = an.getBusyExpressionsBefore(u);
List OUT = an.getBusyExpressionsAfter(u);
}
PackManager.v().runPacks();
CallGraph cg = Scene.v().getCallGraph();
System.out.println(cg.toString());
}
错误:
Exception in thread "main" java.lang.RuntimeException: couldn't find method printOne(*) in Myclass
at soot.SootClass.getMethodByName(SootClass.java:549)
at analise.Main.main(Main.java:40)
我在 jar 文件中的类名是 myclass,我的方法名是 printone 欢呼
解决方案
推荐阅读
- odbc - Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:未找到数据源名称且未指定默认驱动程序
- joomla - Joomla 网站:如何追踪谷歌字体网址的来源?
- solr - 从 Sol 8.2.0 恢复备份会导致空索引
- c# - 将 JSON 字符串转换为 C# 对象而不声明要反序列化的类
- bash - Grep 多次无法处理一个文件
- python - 具有嵌套 range() 函数的 Python 片段
- sql - 在 Oracle PL/SQL 过程中出现错误:ORA-30625
- flutter - LocationListBloc 不扩展 Bloc
- android - Visual Studio 2019 Mac:如何设置 API 级别 14 的最低 Android 版本?
- rest - 正确使用 204 HTTP 状态码