FlowDroid 分析最新Android 构建 APK出错

news2024/11/7 8:59:02

最近在使用 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.coloradmin.cn/o/2234913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Vue和OpenLayers中使用移动传感器实现飞机航线飞行模拟

项目实现的核心代码 项目概述 该项目的目标是使用Vue.js作为前端框架,结合OpenLayers用于地图显示,实时获取来自手机传感器的数据(如经纬度、高度、速度)来模拟飞机在地图上的飞行轨迹。整体架构如下: Vue.js 用于构建…

C语言-详细讲解-洛谷P1075 [NOIP2012 普及组] 质因数分解

1.题目要求 2.题目解析 解题点在于如何分解质因数&#xff0c;这里介绍一下短除法。&#xff08;虽然解决这个问题可以不用短除法&#xff09; 3.代码实现 贴一下自己的代码 #include <stdio.h> #include <math.h>int main() {int n, i;scanf("%d",…

基于springboot的音乐网站的设计与实现(源码+lw+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

RabbitMQ 管理平台(控制中心)的介绍

文章目录 一、RabbitMQ 管理平台整体介绍二、Overview 总览三、Connections 连接四、Channels 通道五、Exchanges 交换机六、Queues 队列查看队列详细信息查看队列的消息内容 七、Admin 用户给用户分配虚拟主机 一、RabbitMQ 管理平台整体介绍 RabbitMQ 管理平台内有六个模块&…

Golang | Leetcode Golang题解之第542题01矩阵

题目&#xff1a; 题解&#xff1a; type point struct{x, y int }var dirs []point{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}func updateMatrix(mat [][]int) [][]int {var m, n len(mat), len(mat[0])var res make([][]int, m)var visited make([][]bool, m)var queue []poin…

前端介绍|基础入门-html+css+js

文章目录 本课程有什么&#xff1f;前端是什么&#xff1f;1. **前端概述**2. **前端的工作职责**3. **前端技术栈**6. **前端开发工具**7. **HTML、CSS、JS的关系** 本课程有什么&#xff1f; 本套课程是零基础入门保姆级课程&#xff0c;课程主要内容包含&#xff1a; HTML…

自动驾驶---“火热的”时空联合规划

1 背景 早期的不少规划算法都是横纵分离的&#xff08;比如Apollo&#xff09;&#xff0c;先求解path之后&#xff0c;依赖path的结果再进行speed的求解。这种横纵解耦的规划方式具有以下特点&#xff1a; 相对较为简单&#xff0c;计算量通常较小&#xff0c;容易实现实时性…

龙蜥副理事长张东:加速推进 AI+OS 深度融合,打造最 AI 的服务器操作系统

AI 原生时代&#xff0c;操作系统厂商要全面优先拥抱 AI&#xff0c;深度融合 AI 能力&#xff0c;发挥关键生态位作用&#xff0c;做好上游芯片与下游 AI 应用开发商之间的纽带&#xff0c;打造最 AI 的服务器操作系统&#xff0c;实现 AI 能力的快速价值转化。 AI 原生趋势下…

详解Java之Spring MVC篇二

目录 获取Cookie/Session 理解Cookie 理解Session Cookie和Session的区别 获取Cookie 获取Session 获取Header 获取User-Agent 获取Cookie/Session 理解Cookie HTTP协议自身是“无状态”协议&#xff0c;但是在实际开发中&#xff0c;我们很多时候是需要知道请求之间的…

【金融风控】相关业务介绍及代码详解

金融风控相关业务介绍 【了解】项目整体介绍 1.风控业务和风控报表</span> 零售金融产品 相关的指标 风控建模流程 ​ #2.特征工程 特征构造 特征筛选 ​ 3.评分卡模型构建 逻辑回归 集成学习 XGBoost LightGBM 模型评估 ​ #4.样本不均衡问题/异常点检测 【了解】今日…

了解数据库设计中的反规范化

反规范化是指通过增加冗余数据来提高数据库的读取效率。也就是说,反规范化通过在表中增加冗余字段来减少数据库中的表连接,以提高查询速度。规范化和反规范化是关系型数据库设计中的两个重要方面,它们分别代表了数据组织方式上的两个不同方向。规范化是为了减少数据冗余和提…

Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注&#xff0c;正在改变着组织进行数字创作的方式。 近期&#xff0c;Perforce发布了《2024游戏技术现状报告》&#xff0c;通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

JAVA基础:数组 (习题笔记)

一&#xff0c;编码题 1&#xff0c;数组查找操作&#xff1a;定义一个长度为10 的一维字符串数组&#xff0c;在每一个元素存放一个单词&#xff1b;然后运行时从命令行输入一个单词&#xff0c;程序判断数组是否包含有这个单词&#xff0c;包含这个单词就打印出“Yes”&…

通过 SSH 连接远程 Ubuntu 服务器

目录 安装 SSH 服务器允许 SSH 通过防火墙远程 SSH 连接&#xff08;选&#xff09;重启向日葵 安装 SSH 服务器 更新软件包列表 sudo apt update安装 OpenSSH 服务器 sudo apt install openssh-server检查 SSH 服务器状态 sudo systemctl status ssh如果 SSH 服务器正在运…

http请求响应详解

http介绍 http协议&#xff1a; Http”协议称为是“超文本传输协议”&#xff08;HTTP-Hypertext transfer protocol&#xff09;。它定义了浏览器怎么向万维网服务器请求万维网文档&#xff0c;以及服务器怎么样把文档传送给浏览器。 https协议&#xff1a; 传统的HTTP协议…

使用 OpenCV 实现图像的透视变换

概述 在计算机视觉领域&#xff0c;经常需要对图像进行各种几何变换&#xff0c;如旋转、缩放和平移等。其中&#xff0c;透视变换&#xff08;Perspective Transformation&#xff09;是一种非常重要的变换方式&#xff0c;它能够模拟三维空间中的视角变化&#xff0c;例如从…

Oracle视频基础1.4.4练习

1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile&#xff0c;准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…

【spring】Cookie和Session的设置与获取(@CookieValue()和@SessionAttribute())

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;程序猿的春天 获取Cookie 使用 Servlet 获取Cookie&#xff1a; Spring MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;也是在 Servlet 的基础上实现的 RestController RequestMapping…

神经网络基础--什么是神经网络?? 常用激活函数是什么???

前言 本专栏更新神经网络的一些基础知识&#xff1b;案例代码基于pytorch&#xff1b;欢迎收藏 关注&#xff0c; 本人将会持续更新。 神经网络 1、什么是神经网络 人工神经网络&#xff08; Artificial Neural Network&#xff0c; 简写为ANN&#xff09;也简称为神经网络…

030集——分组法——C# CAD二次开发

重叠的图行进行分组&#xff0c;效果如下&#xff1a; 纵向投影重叠&#xff08;横向移动冲突&#xff09;可以分组: 纵向冲突也可以分组&#xff1a; 也可根据颜色不同分组&#xff1a; 部分代码如下&#xff0c;完整代码见文章下方名片 public class Class1{[CommandMethod(…