gpt4 book ai didi

java - 使用助手类使用 Soot 检测 Android 应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:39 25 4
gpt4 key购买 nike

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

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

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

由于处理我的参数(我在其中提供 -android-jars)的 Soot.Main.main(args) 在加载 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 jar、soot 类路径、前置类路径和进程目录)。现在,它起作用了。

请问是否有更妥善的方法来解决这个问题。

最佳答案

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

Scene.v().addBasicClass("MyCounter");

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

关于java - 使用助手类使用 Soot 检测 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23950888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com