繁体   English   中英

使用帮助程序类使用Soot来检测Android应用

[英]Instrumenting Android apps with Soot using a helper class

我正在按照http://www.sable.mcgill.ca/soot/tutorial/profiler2/profiler2.html中 Java工具示例使用帮助器类对Android应用程序进行工具检测。

在我的BodyTransformer中,我有一个静态块来加载MyCounter类

counterClass = Scene.v().loadClassAndSupport("MyCounter");

由于处理我的args的Soot.Main.main(args)(我在其中提供-android-jars)在加载MyCounter时未执行,因此Soot无法找到我的android jar并给出错误:

Caused by: java.lang.RuntimeException: You are analyzing an Android application but did not define android.jar. Options -android-jars or -force-android-jar should be used.
at soot.Scene.defaultClassPath(Scene.java:455)
at soot.Scene.getSootClassPath(Scene.java:224)
at soot.SootResolver.<init>(SootResolver.java:81)
at soot.Singletons.soot_SootResolver(Singletons.java:802)
at soot.SootResolver.v(SootResolver.java:91)
at soot.Scene.loadClass(Scene.java:667)
at soot.Scene.loadClassAndSupport(Scene.java:653)
at MyBodyTransformer.<clinit>(MyBodyTransformer.java:26)
... 1 more

作为解决方案,在创建BodyTransformer之前,我在主类中提供了命令行参数(android jars,soot类路径,前置类路径和process目录)。 现在,它可以工作了。

我想问一下是否有更合适的方法来解决这个问题。

loadClassAndSupport也不足够。 这是您应该做的。 在分析的main方法中,调用Soot的main方法之前,请添加以下内容:

。Scene.v()addBasicClass( “MyCounter”);

然后在您的分析中只需使用Scene.v()。getSootClass(“ MyCounter”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM