当前位置: 首页 > article >正文

FlowDroid 分析最新Android 构建 APK出错

最近在使用 FlowDroid 的2.13的Jar包分析一些 Android 应用,在分析其他应用的时候一切工作正常。但是当分析到自己用 Android Studio 编写的应用时,就会出现如下的报错:

[main] WARN soot.dexpler.DexFileProvider - Multiple dex files detected, only processing 'classes.dex'. Use '-process-multiple-dex' option to process them all.
[main] ERROR soot.jimple.infoflow.android.resources.ARSCFileParser - Error when looking for XML resource files in apk /home/syc/Music/app-debug.apk
java.lang.RuntimeException: File format violation in type spec table: res1 is not zero offset=0x6ee5a
        at soot.jimple.infoflow.android.resources.ARSCFileParser.raiseFormatViolationIssue(ARSCFileParser.java:2991)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.readTypeSpecTable(ARSCFileParser.java:2655)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.readResourceHeader(ARSCFileParser.java:2212)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.parse(ARSCFileParser.java:2094)
        at soot.jimple.infoflow.android.resources.ARSCFileParser$1.handleResourceFile(ARSCFileParser.java:2084)
        at soot.jimple.infoflow.android.resources.AbstractResourceParser.handleAndroidResourceFiles(AbstractResourceParser.java:54)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.parse(ARSCFileParser.java:2078)
        at soot.jimple.infoflow.android.SetupApplication.parseAppResources(SetupApplication.java:443)
        at soot.jimple.infoflow.android.SetupApplication.runInfoflow(SetupApplication.java:1521)
        at soot.jimple.infoflow.android.SetupApplication.runInfoflow(SetupApplication.java:1491)
        at soot.jimple.infoflow.cmd.MainClass.run(MainClass.java:358)
        at soot.jimple.infoflow.cmd.MainClass.main(MainClass.java:256)
The data flow analysis has failed. Error message: File format violation in type spec table: res1 is not zero offset=0x6ee5a
java.lang.RuntimeException: File format violation in type spec table: res1 is not zero offset=0x6ee5a
        at soot.jimple.infoflow.android.resources.ARSCFileParser.raiseFormatViolationIssue(ARSCFileParser.java:2991)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.readTypeSpecTable(ARSCFileParser.java:2655)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.readResourceHeader(ARSCFileParser.java:2212)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.parse(ARSCFileParser.java:2094)
        at soot.jimple.infoflow.android.resources.ARSCFileParser$1.handleResourceFile(ARSCFileParser.java:2084)
        at soot.jimple.infoflow.android.resources.AbstractResourceParser.handleAndroidResourceFiles(AbstractResourceParser.java:54)
        at soot.jimple.infoflow.android.resources.ARSCFileParser.parse(ARSCFileParser.java:2078)
        at soot.jimple.infoflow.android.SetupApplication.parseAppResources(SetupApplication.java:443)
        at soot.jimple.infoflow.android.SetupApplication.runInfoflow(SetupApplication.java:1521)
        at soot.jimple.infoflow.android.SetupApplication.runInfoflow(SetupApplication.java:1491)
        at soot.jimple.infoflow.cmd.MainClass.run(MainClass.java:358)
        at soot.jimple.infoflow.cmd.MainClass.main(MainClass.java:256)

我们通过分析错误日志,不难定位到发生的问题是 ARSC文件(即resources.arsc文件)导致的

我发现 FlowDroid 的 Github 上 2.14 版本更新日志为

The new version of FlowDroid supports recent additions to the ARSC file format for Android as well as Java streams.

这就解释了我为何会遇到上述的错误,将 FlowDroid 自己构建为最新版本即可。重新构建即去下载源码包,执行:

mvn install -DskipTests

你就可以在类似这样的目录下发现构建好的 jar 包

FlowDroid-2.14.1\soot-infoflow-cmd\target

这个问题主要是因为现在很多教程还在使用老的 FlowDroid 而没有更新,故记录一下


http://www.kler.cn/a/380688.html

相关文章:

  • vue3入门教程:计算属性
  • JAVAweb学习日记(三)Ajax
  • Node Version Manager (nvm) -管理不同版本的 Node.js
  • Doris Tablet 损坏如何应对?能恢复数据吗?
  • SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
  • sentinel学习笔记6-限流降级(上)
  • XLSTM+transformer时间序列预测代码
  • Java学习—反射机制:解锁代码的无限可能
  • TMDOG的Gin学习笔记_01——初识Gin框架
  • 【算法】(Python)贪心算法
  • 学习记录:js算法(八十三):全排列
  • CentOS Linux教程(12)--常用编辑器
  • 【综合算法学习】(第十九篇)
  • 32位汇编——通用寄存器
  • 30条勒索病毒处置原则
  • 图文并茂java源码解析-HashMap
  • 二百七十三、Kettle——ClickHouse中增量导入数据准确性统计表数据(1天1次)
  • Sigrity Power SI 3D-EM Full Wave Spatial模式如何查看空间电压频域曲线操作指导
  • 自杀一句话木马(访问后自动删除)
  • 影刀RPA实战:嵌入python,如虎添翼
  • Docker Compose部署Powerjob
  • golang rocketmq开发
  • 【Vue】在 Vue 组件的 methods 中,箭头函数和不带箭头函数中的this的区别
  • Qt中的动态链接库编程(Q_DECL_IMPORT、Q_DECL_EXPORT)
  • 中文NLP地址要素解析【阿里云:天池比赛】
  • 度小满,让“推理大模型”走向金融核心业务