【问题标题】:Is there a dependency that is missing for this soot dependent app?这个烟灰依赖应用程序是否缺少依赖项?
【发布时间】:2020-08-02 08:27:32
【问题描述】:

我尝试运行 soot 依赖的应用程序,在编译中使用大量 jar 文件作为依赖项,并且每次出现新错误时。 我最后得到的错误是这样的:

[main] INFO soot.jimple.infoflow.android.SetupApplication - ARSC 文件解析耗时 0.01102201 秒 线程“main”中的异常 java.lang.NoSuchMethodError: soot.Body.getUnits()Lsoot/PatchingChain; 在 soot.jimple.infoflow.entryPointCreators.BaseEntryPointCreator.createEmptyMainMethod(BaseEntryPointCreator.java:165) 在 soot.jimple.infoflow.entryPointCreators.BaseEntryPointCreator.createDummyMainInternal(BaseEntryPointCreator.java:123) 在 soot.jimple.infoflow.entryPointCreators.BaseEntryPointCreator.createDummyMain(BaseEntryPointCreator.java:109) 在 soot.jimple.infoflow.android.SetupApplication.createMainMethod(SetupApplication.java:622) 在 soot.jimple.infoflow.android.SetupApplication.calculateCallbackMethods(SetupApplication.java:471) 在 soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(SetupApplication.java:401) 在 soot.jimple.infoflow.android.SetupApplication.calculateSourcesSinksEntrypoints(SetupApplication.java:359) 在 Appgraph.main(Appgraph.java:37)

我尝试在 Java 11 和 Java 8 中运行它,但出现了同样的错误。我使用的编译和运行命令是:

javac -cp ".:soot-4.1.0-jar-with-dependencies.jar:soot-infoflow-android.jar:soot-infoflow.jar:axml-2.0.jar:commons-io- 2.6.jar:android.jar:guava-27.1-android.jar:jsr305-1.3.9.jar:dexlib2-2.3.4.jar:multidexlib2-2.3.4.r2.jar:failureaccess-1.0.1.jar: sootall-2.5.0.jar:soot-2.5.0.jar:soot.jar:soot-4.1.0-jar-with-dependencies.jar" Appgraph.java 用于编译命令

java -Xmx2g -cp ".:soot-4.1.0-jar-with-dependencies.jar:soot-infoflow-android.jar:soot-infoflow.jar:axml-2.0.jar:commons- io-2.6.jar:android.jar:guava-27.1-android.jar:jsr305-1.3.9.jar:dexlib2-2.3.4.jar:multidexlib2-2.3.4.r2.jar:failureaccess-1.0.1。 jar:sootall-2.5.0.jar:soot-2.5.0.jar:SourcesAndSinks.txt" Appgraph apks/3baea0cd661a580a84e4110b1a309942.apk . 作为运行命令

我尝试了多个版本的 soot,但没有一个版本可以解决上述错误。

【问题讨论】:

    标签: java jar dependencies soot


    【解决方案1】:

    您似乎正在尝试将非常旧版本的 FlowDroid (soot-infoflow) 与新版本的 Soot 一起使用。

    上述方法soot.Body.getUnits()Lsoot/PatchingChain; 是Soot 的一部分,已于2018 年8 月更改:https://github.com/Sable/soot/commit/25e145a694676a6ae786ebb44fcef51aa03b4cf5#diff-e17f2a0d88bf86133287578f02eb7483

    因此,您需要在该日期之后发布的 FlowDroid 版本。

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 2015-04-18
      • 2020-03-24
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多