Automating Release of Deep Link APIs for Android Applications
与Web不同,每个网页都有一个全局URL可供访问,移动应用程序中的特定“内容页面”无法打开,除非用户从着陆页通过几个操作探索应用程序。最近,大公司提倡使用深度链接,以便通过可访问的统一资源标识符(URI)在外部定位和打开应用程序的特定页面。为了实证调查采用深度链接的实践状况,在本文中,我们对超过20,000个Android应用程序的深度链接进行了最大规模的实证研究,发现深度链接在当前的Android应用程序中没有得到广泛采用,并且应用程序开发人员需要付出不小的手工努力来支持深度链接。为了解决这个问题,我们提出了阿拉丁方法和支持工具,以释放深层链接来访问现有应用程序的任意位置。Aladdin实例化了我们新颖的合作框架,以协同地结合静态分析和动态分析,同时最小限度地吸引开发人员向框架提供输入以实现自动化,而不需要任何编码工作或额外的部署工作。我们用流行的应用程序来评估阿拉丁,并展示其有效性和性能。
2017-12-01 cs.SE
Enhancing Android Application Bug Reporting
随着智能手机和平板电脑的普及,现代软件开发领域的重点已经转向移动应用程序。由于这种趋势,这些“应用程序”的复杂性一直在增加,使开发和维护具有挑战性。当前的错误跟踪系统不能有效地促进具有将直接导致错误解决的有用信息的错误报告的创建。为了满足对改进报告系统的需求,我们引入了一种名为Fusion的新颖解决方案,该解决方案可帮助报告者利用其以GUI为中心的特性,自动完成移动应用程序错误报告中的复制步骤。融合将报告者提供的信息链接到通过预先执行的静态和动态分析提取的程序工件。这使得我们的系统能够为开发人员和测试人员提供更方便的报告过程,同时生成更多可重复的错误报告,并提供立即可操作的信息。
2017-06-04 cs.SE
Mining Device-Specific Apps Usage Patterns from Large-Scale Android Users
当智能手机、应用程序和应用商店被数十亿人广泛采用时,一个有趣的争论出现了:设备模型是否以及在多大程度上影响用户的行为?这个问题的答案对智能手机应用生态系统中的几乎所有利益相关者都至关重要,包括应用商店运营商、开发人员、最终用户和网络提供商。为了解决这个问题,我们通过中国领先的Android应用程序商店“豌豆家”收集了一组应用程序使用情况的纵向数据。该数据集涵盖了70万(761,262)独立用户的详细行为特征,这些用户使用500种流行类型的Android设备和约20万(228,144)个应用程序,包括他们的应用程序管理活动,每日网络访问时间和应用程序的网络流量。我们提出了一项全面的研究,调查设备型号的选择如何影响用户行为,如应用程序商店的采用,应用程序的选择和放弃,数据计划的使用,在线时间长度,使用付费/免费应用程序的倾向,以及选择竞争应用程序的偏好。设备型号和应用程序使用之间的一些显着的相关性,导致各种用户行为的重要发现。例如,拥有不同设备型号的用户在选择竞争应用程序方面具有很大的多样性,拥有低端设备的用户花费更多的钱购买应用程序,并在蜂窝网络下花费更多的时间。
2017-07-27 cs.SE
Taxonomy of Security Weaknesses in Java and Kotlin Android Apps
Android是当今世界上最流行的操作系统,不仅在移动设备领域,而且在考虑台式机和膝上计算机时也是如此。这种流行使其成为安全攻击的有吸引力的目标,这也是由于移动应用程序经常操纵的敏感信息。后者正在经历一个过渡,Android生态系统正在从使用Java作为开发应用程序的官方语言,转向采用Kotlin作为Google支持的首选。虽然以前的研究已经部分研究了影响Java Android应用程序的安全漏洞,但还没有全面的实证调查研究影响Android应用程序的软件安全漏洞,考虑(并比较)用于开发的两种主要语言,即Java和Kotlin。我们提出了一项实证研究,其中我们:(i)手动分析681个提交,包括Java和Kotlin应用程序中开发人员修复的安全漏洞,目的是定义一个分类法,突出影响Java和Kotlin Android应用程序的软件安全漏洞类型;(ii)调查43个Android开发人员,以验证和补充我们的分类法。根据我们的研究结果,我们提出了一个未来行动的清单,研究人员和从业人员可以执行,以提高Android应用程序的安全性。
2022-01-27 cs.CR cs.SE
Auto-completing Bug Reports for Android Applications
随着平板电脑和智能手机的普及,现代软件开发领域的重点已经转向移动应用程序。由于这种趋势,这些应用程序的复杂性一直在增加,使开发和维护具有挑战性。此外,当前的错误跟踪系统不能有效地支持具有直接导致错误解决的可操作信息的报告的构造。为了满足对改进报告系统的需求,我们引入了一种名为FUSION的新解决方案,可以帮助用户自动完成移动应用程序错误报告中的复制步骤。FUSION将用户提供的信息链接到通过测试或发布前执行的静态和动态分析提取的程序工件。FUSION采用的方法可推广到其他当前的移动软件平台,并构成了一种新的方法,通过该方法可以为移动软件项目进行离线错误报告。在一项涉及28名参与者的研究中,我们应用FUSION来支持报告和再现14个开源Android应用程序中发现的15个真实世界错误的维护任务,同时定性和定性地测量系统的用户体验。我们的研究结果表明,与传统的问题跟踪系统相比,FUSION通过提供更详细的上下文应用信息,既有效地促进了报告,又允许更可靠地再现报告中的错误。
2017-05-11 cs.SE
A First Look at On-device Models in iOS Apps
本文首次对iOS应用中的端侧模型进行实证研究,分析其框架、结构与安全问题,并提出针对白盒和灰盒模型的新型攻击方法,成功在真实iOS应用中验证了漏洞。
2023-07-27 cs.SE
Demystifying Hidden Sensitive Operations in Android apps
鉴于Android设备在消费者中的广泛采用,其安全性现在至关重要。随着研究人员开发用于静态或动态检测可疑应用程序的工具,恶意软件编写者会定期更新其攻击机制以隐藏恶意行为实施。这对当前的研究技术提出了两个问题:静态分析方法,由于它们的过度近似,可以报告大量的假警报,而动态方法将错过那些通过逃避技术隐藏的行为。在这项工作中,我们提出了一个静态的方法,专门针对突出隐藏的敏感操作,主要是敏感的数据流。HiSenDroid的原型版本已经在一个包含数千个恶意软件和好软件样本的大规模数据集上进行了评估,它成功地揭示了旨在逃避动态分析检测的反分析代码片段。我们进一步实验表明,使用FlowDroid,一些隐藏的敏感行为最终会导致私人数据泄露。这些泄漏很难在最先进的静态分析仪或动态工具报告的大量误报中手动发现。总的来说,通过揭示隐藏的敏感操作,HiSenDroid帮助安全分析师验证潜在的敏感数据操作,这在以前是不被注意的。
2022-10-20 cs.CR cs.SE
AndroidCompass: A Dataset of Android Compatibility Checks in Code Repositories
许多开发人员和组织都为Android实现应用程序,Android是移动设备使用最广泛的操作系统。开发人员面临的常见问题是各种硬件设备、定制的Android变体和频繁的更新,迫使他们为实际使用的Android API的不同版本和变体实现变通方案。在本文中,我们贡献了Android Compatibility checkS dataSet(AndroidCompass),其中包含开发人员用于在其应用中强制执行特定Android版本的变通方法的兼容性检查的更改。我们通过分析F-Droid目录中2,399个项目的版本历史记录,从1,394个应用程序中提取了80,324个兼容性检查更改。通过AndroidCompass,我们的目标是提供有关开发人员何时以及如何引入或改进解决方法来处理Android不兼容性的数据。我们希望AndroidCompass能够促进研究,以解决版本不兼容问题,解决潜在的设计缺陷,识别安全问题,并帮助其他开发人员获得解决方案,帮助研究人员开发和评估新技术,以及Android应用程序和操作系统开发人员设计他们的软件。
2021-03-17 cs.SE
Depends-Kotlin: A Cross-Language Kotlin Dependency Extractor
针对Kotlin依赖分析工具缺乏的问题,提出Depends-Kotlin,可提取Kotlin及跨语言依赖,实验证明其高准确性和性能。
2024-08-21 cs.SE
Contract Usage and Evolution in Android Mobile Applications
本文首次对Android应用中契约的使用与演化进行大规模实证研究,分析2,390个F-Droid应用,揭示契约采用率低、注解方式最流行、方法增长快于契约增长以及规范稳定性不足等问题,并提出标准化库与检测工具的建议。
2024-01-25 cs.LO cs.PL cs.SE
Is Your Private Information Logged? An Empirical Study on Android App Logs
Rochester Institute of Technology(罗切斯特理工学院);University of Waterloo(滑铁卢大学)
本研究通过构建Android应用日志数据集,分析隐私泄露现状及原因,揭示开发者对隐私问题的关注,并提出隐私保护建议。
2026-02-17 cs.SE
Mining Android API Usage to Generate Unit Test Cases for Pinpointing Compatibility Issues
尽管是最大和最受欢迎的项目之一,但官方Android框架只提供了不到30%的API的测试用例。如此糟糕的测试用例覆盖率导致了许多兼容性问题,这些问题可能导致应用在特定Android设备上运行时崩溃,从而导致应用和Android生态系统的用户体验都很差。为了减轻这种影响,已经提出了各种方法来自动检测这种兼容性问题。不幸的是,这些方法仅集中于检测签名引起的兼容性问题(即,某些API在某些Android版本中不存在),导致其他同样重要的兼容性问题无法解决。在这项工作中,我们提出了一个新的原型工具,JUnitTestGen,挖掘现有的Android API使用生成单元测试的情况下,以填补这一空白。在给定的真实世界Android应用程序中定位Android API使用后,JUnitTestGen执行过程间向后数据流分析以生成最小的可执行代码片段(即,测试用例)。在数千个真实Android应用上的实验结果表明,JUnitTestGen能够有效地为Android API生成有效的单元测试用例。我们表明,这些生成的测试用例确实有助于查明兼容性问题,包括涉及语义代码的变化。
2022-08-29 cs.SE
An Investigation into the Use of Common Libraries in Android Apps
Android应用程序的打包模型要求将执行应用程序所需的整个代码运送到一个apk文件中。因此,对Android应用程序的分析通常会访问不属于应用程序功能的代码。这些代码通常由所有应用程序普遍使用的公共库提供。不幸的是,Android分析,例如,对于捎带检测和恶意软件检测,如果不考虑库代码的情况,可能会产生不准确的结果,因为库代码构成了应用程序功能中的噪声。尽管在研究Android库方面做出了一些努力,但Android研究的势头尚未产生一套完整的通用库,以进一步支持对Android应用程序的深入分析。在本文中,我们利用来自Google Play的约150万个应用程序的数据集来收集潜在的通用库,包括广告库。经过几步改进,我们最终收集了迄今为止最大的1,113个支持常见功能的库和240个用于广告的库。我们使用数据集来调查Android库的几个方面,包括它们的流行程度及其在Android应用程序代码中的比例。基于这些数据集,我们进一步进行了一些实证调查,以确认我们工作背后的动机。
2015-11-20 cs.SE
Why did developers migrate Android applications from Java to Kotlin?
目前,大多数在移动设备上运行的应用程序都是用Java开发的Android应用程序。然而,开发人员现在可以使用一种新的程序设计语言编写Android应用程序:Kotlin,谷歌在2017年将其作为开发Android应用程序的官方程序设计语言。从那时起,Android开发人员已经能够:a)使用Kotlin从头开始编写Android应用程序,b)通过添加Kotlin代码(可能归功于两种语言之间的互操作性)来改进现有的Java Android应用程序,或者c)将其Android应用程序从Java迁移到Kotlin。本文旨在研究这最后一种情况。我们进行了一项定性研究,以了解Android开发人员将Java代码迁移到Kotlin的原因,并将他们在此过程中的经验汇总在一起,以确定他们面临的主要困难。为了执行这项研究,我们首先确定了来自开源Android项目的提交,这些项目已经将Java代码迁移到Kotlin。然后,我们给编写这些迁移的开发人员发了电子邮件。因此,我们从98名将代码从Java迁移到Kotlin的开发人员那里获得了信息。本文介绍了研究确定的进行迁移的主要原因。我们发现开发人员将Java代码迁移到Kotlin是为了访问程序设计语言功能(例如,扩展函数,扩展函数,智能转换),这些功能在Java for Android开发中不可用,并获得更安全的代码(即,避免空指针异常)。我们还确定了研究…
2021-11-22 cs.SE
DroidLeaks: Benchmarking Resource Leak Bugs for Android Applications
Android应用中的资源泄漏漏洞非常普遍,可能导致严重的性能下降和系统崩溃。近年来,已经提出了几种资源泄漏检测技术来帮助Android开发人员正确管理系统资源。然而,目前还没有一个通用的bug基准来有效和可靠地比较这些技术,并定量地评估它们的优缺点。本文介绍了我们对构建这样一个基准的初步贡献。为了找到真正的资源泄漏漏洞,我们挖掘了34个大规模开源Android应用程序的124,215个代码修订。我们成功地从34个应用程序中的32个应用程序中发现了298个修复的资源泄漏,这些泄漏涵盖了各种资源类。为了了解这些漏洞的特征,我们进行了一项实证研究,揭示了Android应用中频繁发生资源泄漏的根本原因以及开发人员常见的故障模式。根据我们的发现,我们进一步实现了一个静态检查器,以检测Android应用程序中常见的资源泄漏模式。实验表明,该检测器能够有效地定位流行Android应用中的真实资源泄漏,验证了我们工作的实用性。
2016-11-24 cs.SE
Identifying and Characterizing Silently-Evolved Methods in the Android API
Android平台拥有超过500,000个提交和700多个贡献者,无疑是最大的工业规模软件项目之一。该项目提供了Android API,开发人员严重依赖此API来开发他们的Android应用程序。不幸的是,由于Android平台及其API的发展速度非常快,应用开发人员需要不断监控API的变化,以避免其应用中出现兼容性问题(\ie问题会导致应用在较新版本的API上运行时无法按预期工作)。尽管对Android API中的兼容性问题进行了大量研究,但研究社区尚未调查与沉默进化方法(SEM)相关的问题。这些方法的行为可能已经改变,但相应的文档没有相应地改变。由于应用程序开发人员依赖所提供的文档来发展其应用程序,因此对未适当记录的方法进行的更改可能会导致使用这些方法的应用程序出现意外故障。为了阐明这类问题,我们进行了一项大规模的实证研究,在该研究中,我们识别并描述了Android API的十个版本中的SEM。在这项研究中,我们确定了SEM,描述了变化的性质,并分析了SEM对一组1,000个真实Android应用程序的影响。我们的实验结果表明,SEM确实存在于Android API中,我们考虑的应用程序中有957个至少使用了一个SEM。基于这些结果,我们认为Android平台开发人员应该采取行动,以避免引入SEM,特别是那些涉及语义变化。这种情况突出了需要自动化技术和工具来帮助Android从…
2022-05-31 cs.SE
Towards Understanding Android APIs: Official Lists, Vendor Customizations, and Real-World Usage
Southern University of Science and Technology(南方科技大学);Hong Kong University of Science and Technology(香港科技大学);McGill University(麦吉尔大学)
本文通过分析四个官方AALs,揭示其内容特征与演变,发现其不一致性和不稳定性,并探讨厂商定制API对现实应用的影响,为Android API研究提供可靠指导。
2026-04-16 cs.SE
Generating Predicate Callback Summaries for the Android Framework
分析、测试和调试Android应用程序的挑战之一是应用程序的源代码中缺少回调的潜在执行顺序。然而,已经发现错误、漏洞和重构转换与回调序列有关。Android应用程序控制流分析的现有工作主要集中在分析GUI事件。GUI事件虽然是确定Android应用程序控制流的关键部分,但并不能提供完整的画面。我们的观察是,与GUI事件正交,Android API调用在确定回调顺序方面也起着重要作用。在过去,这种控制流信息是手动建模的。本文提出了一种为Android应用构建程序路径的补充解决方案。我们提出了一种称为Predicate Callback Summary(PCS)的规范技术,用于表示Android API方法中的回调控制流信息(包括回调序列以及调用回调的条件),并开发了静态分析技术来自动计算和应用此类摘要以构建应用程序的回调序列。我们的实验表明,通过应用PCS,我们能够构建Android应用程序的控制流图,包括回调之间的关系,并检测涉及多个回调的不可行路径。这样的控制流信息可以帮助程序分析和测试工具报告更精确的结果。我们的详细实验数据可在以下网址获得:http://goo.gl/NBPrKs
2017-03-29 cs.SE
Datasets of Android Applications: a Literature Review
移动电话和平板电脑已经成为使用最广泛的计算设备,其中Android平台占很大优势。作为一种自然的进化,Android应用程序的开发已经激增,并已成为一个主要的研究领域,研究工作范围从能源效率,代码气味,性能,可维护性,安全性等,这些挑战要求专用的解决方案,工具和数据集。该调查确定并审查了31个现有的Android应用程序数据集,并根据关键特征对每个数据集进行分类,例如它包含的应用程序总数,应用程序的提交历史是否可用,它是否专注于应用程序的源代码或可执行二进制文件,用于构建数据集的源代码,这项研究可以使有经验的和有兴趣对Android应用程序进行研究的新手研究人员受益,他们可以使用我们的研究结果作为识别最适合其研究目标的数据集的地图。
2018-09-26 cs.SE
Columbus: Android App Testing Through Systematic Callback Exploration
随着Android移动设备的不断普及,应用程序的自动化测试变得比以往任何时候都更加重要。Android应用程序是事件驱动的程序。不幸的是,通过与应用程序的界面交互来生成所有可能类型的事件对于自动化测试方法来说是一个挑战。回调驱动的测试通过直接调用应用回调消除了事件生成的需要。然而,现有的回调驱动测试技术假设Android回调的先验知识,并且它们依赖于熟悉Android API的人类专家来编写在调用之前准备回调参数的存根代码。由于Android API庞大且不断发展,现有技术只能支持Android框架中存在的一小部分回调。在这项工作中,我们介绍了Columbus,一种回调驱动的测试技术,它采用两种策略来消除对人类参与的需求:(i)它通过同时分析Android框架和测试中的应用程序来自动识别回调,以及(ii)它使用了一种组合,(原始参数)和类型引导的动态堆内省(对象参数)来生成有效的输入。最后,Columbus在测试过程中集成了两种新的反馈机制--数据依赖和崩溃指导,以增加触发崩溃的可能性,并最大限度地提高覆盖率。在我们的评估中,Columbus在崩溃和覆盖率方面都优于最先进的模型驱动、基于检查点和回调驱动的测试工具。
2023-02-17 cs.SE
Characterizing and Detecting Configuration Compatibility Issues in Android Apps
XML配置文件在Android中广泛用于定义应用的用户界面和基本的运行时信息,如系统权限。随着Android的发展,它可能会在配置环境中引入功能更改,从而导致兼容性问题,表现为不同API级别的应用行为不一致。在特定的Android版本上运行时,此类问题通常会导致软件崩溃和外观不一致。现有的作品通过进行琐碎的数据流分析,同时未能对Android配置文件的XML树层次结构进行建模,从而产生大量的误报和漏报问题检测规则。此外,我们对Android框架中的更改如何导致此类兼容性问题知之甚少。为了弥合这些差距,我们进行了一项系统研究,分析了从43个流行应用程序中收集的196个现实问题。我们确定了导致此类配置兼容性问题的Android框架代码更改的常见模式。基于这些发现,我们提出了\textsc{ConfDroid},它可以自动提取规则来检测配置兼容性问题。直觉是基于从公共代码更改模式中学习的模型执行符号执行。实验结果表明,ConfDroid能够成功地提取出282条有效的问题检测规则,准确率为91.9%。其中,65个提取的规则可以表现出的问题,不能检测到的最先进的基线的规则。更重要的是,其中11个导致检测到107个可重现的配置兼容性问题,而基线无法在316个真实Android应用程序中的30个中检测到。
2021-09-01 cs.SE
An Android App for Digital Transport Cards of Smart City: Request for Suggestions
本文提供了一个路线图,设计全球数字交通卡应用(GDTCA)。GDTCA是一个Android应用程序,人们可以在线获得任何城市的数字交通卡并在本地使用。人们可以通过使用GDT Cards App充值或提取交通卡。值得注意的是,这样的应用程序将根据环境的稀疏性具有不同的本地学习体验,可以使用联邦学习和传输协议进行聚合。
2021-04-19 cs.SE
Performance and Programming Effort Trade-offs of Android Persistence Frameworks
移动应用程序的一个基本构建块是在不同调用之间持久化程序数据的能力。这个功能称为\emph{persistence},通常通过持久性框架来实现。如果不清楚流行的Android持久性框架的能耗、执行时间和编程工作量,移动开发人员就缺乏为应用程序选择框架的指导方针。为了弥合这一知识差距,我们报告的性能和编程工作的权衡的8个Android持久性框架的系统研究的结果,并为移动应用程序开发人员提供实用的建议。
2018-06-27 cs.SE
Who you gonna call? Analyzing Web Requests in Android Applications
依赖于无处不在的互联网连接,移动设备上的应用程序在执行期间频繁地执行Web请求。它们获取数据供用户交互、调用远程功能或发送用户生成的内容或元数据。这些请求共同揭示了移动应用程序开发的常见做法,例如使用了哪些外部服务以及如何使用,并且它们指出了可能的负面影响,例如安全和隐私侵犯,或对电池寿命的影响。在本文中,我们评估了不同的方法来分析Android应用程序发出的Web请求。我们首先展示从运行20个随机选择的Android应用程序中收集的动态数据,并观察它们的网络活动。接下来,我们介绍一个静态分析工具Stringoid,它分析Android应用程序中的字符串连接,以估计构造的URL字符串。我们使用Stringoid从30,000个Android应用程序中提取URL,并将其性能与更简单的常量提取分析进行比较。最后,我们提出了一个动态和静态分析提取URL时的优势和局限性的讨论,因为我们比较了从相同的20个应用程序中提取的数据与动态收集的数据。
2017-05-19 cs.SE
CAT: Change-focused Android GUI Testing
Android应用每隔几周就会更新一次,以跟上不断变化的用户、硬件和业务需求。通过广泛的测试检查应用程序更新的正确性。最近的研究提出了在Android应用中自动生成GUI事件的工具。然而,这些技术在检查应用程序更新时效率不高,因为生成的GUI事件不会优先考虑更新,而是探索其他应用程序行为。我们在本文中使用CAT(Change-focused Android GUI Testing)解决了这一需求。对于应用程序更新,CAT会在源代码或GUI级别执行变更影响分析,以识别受更新影响的GUI元素。CAT然后生成长度为3的GUI事件序列,以与这些GUI元素交互。我们使用21个公开的开源Android应用程序进行的实证评估表明,CAT能够自动识别受应用程序更新影响的GUI元素,生成并执行长度为3的GUI事件序列,重点关注受变化影响的GUI元素。与两个流行的GUI事件生成工具DroidBot和DroidMate的比较显示,CAT在与受更改影响的GUI元素交互方面更有效。最后,CAT能够在两个应用程序中检测到以前未知的与更改相关的错误。
2020-11-23 cs.SE
DPerm: Assisting the Migration of Android Apps to Runtime Permissions
Android应用在访问与隐私或系统完整性相关的资源时需要权限。从Android 6开始,必须在运行时询问这些权限。然而,迁移到新的权限模型给开发人员带来了许多挑战。首先,开发人员必须发现应用在何处使用权限,这需要权限规范。到目前为止,已经建立了几个这样的规范,但这些规范要么不精确,不完整,要么不支持所有类型的受保护资源。我们首先介绍DPSpec,这是一种基于Android SDK提供的几种文档格式构建的新型权限规范。与最先进的规范相比,它包含2.5倍的受保护方法条目,并在超过两倍的应用程序中检测危险的权限使用。开发人员面临的第二个挑战是在哪里插入权限请求,可能的位置受到请求机制的限制。我们还介绍了DPerm,这是一种针对Android应用程序的静态分析,可以在代码中推荐权限请求的位置。它通过上下文敏感性实现高精度,并通过通用的调用图增强算法对不完整的代码提高召回率。我们对32个应用程序的实证评估显示,准确率为96%,召回率为89%。
2017-06-15 cs.SE
Runtime Permission Issues in Android Apps: Taxonomy, Practices, and Ways Forward
Android引入了新的权限模型,允许应用在运行时请求权限,而不是在6.0(Marshmallow,API级别23)之后的安装时请求权限。虽然这种运行时权限模型为用户提供了更大的灵活性来控制应用对敏感数据和系统功能的访问,但它也给应用开发带来了新的挑战。首先,由于用户可以在使用应用程序时随时授予或撤销权限,因此开发人员需要确保应用程序在调用任何受权限保护的API之前正确检查并请求所需的权限。其次,Android的权限机制不断发展,并由设备制造商定制。开发人员需要在不同的Android版本和设备型号上全面测试他们的应用程序,以确保在所有情况下都能正确请求权限。不幸的是,这些要求对开发人员来说往往是不切实际的。在实践中,许多Android应用程序都会遇到各种运行时权限问题(ARP问题)。虽然现有的研究已经探讨了ARP问题,但对这些问题的理解仍然是初步的。为了更好地描述ARP问题,我们使用135个讨论ARP问题的Stack Overflow帖子和GitHub上流行的开源Android项目中存档的199个真实ARP问题进行了实证研究。通过分析数据,我们观察到了Android应用中常见的11种ARP问题。此外,我们对从业人员进行了实地调查和深入访谈,以获得行业实践的见解,并了解从业人员对有助于解决ARP问题的工具的需求。我们希望我们的研究结果可以阐明未来的研究,并为从业者提供有用的指导。
2021-06-24 cs.SE
Enabling Mutation Testing for Android Apps
变异测试已被广泛用于评估测试套件的故障检测有效性,以及指导测试用例生成或优先级排序。经验研究表明,虽然突变体通常代表真实故障,但突变测试的有效应用需要为程序设计语言设计的“传统”运算符用特定于应用领域和/或技术的运算符来扩充。本文提出了MDroid+,一个有效的Android应用程序的突变测试框架。首先,我们通过手动分析来自不同来源的2,023个软件工件(例如,错误报告、提交)。然后,我们确定了一组38个变异算子,并实现了一个基础设施,用其中的35个算子在Android应用程序中自动播种变异。的分类和建议的运营商进行了评估方面的死产/平凡的突变体产生和他们的能力,代表真正的故障在Android应用程序中,相比其他众所周知的突变工具。
2017-08-01 cs.SE
MobiCoMonkey - Context Testing of Android Apps
许多移动应用程序的功能取决于各种上下文、外部因素。根据不可预见的情况,移动应用程序甚至可能出现故障或崩溃。在本文中,我们介绍了一种自动化工具,允许开发人员针对自定义或自动生成的上下文场景测试应用程序,并通过模拟器帮助检测可能的错误。此外,它还报告了错误和上下文因素之间的联系,以便以后可以重现错误。它利用Android SDK和logcat提供的工具来注入事件并捕获应用程序执行的痕迹。
2018-04-07 cs.SE
Deep Reinforcement Learning for Black-Box Testing of Android Apps
Android应用程序的状态空间是巨大的,在测试期间对其进行彻底的探索仍然是一个重大挑战。事实上,最佳的探索策略高度依赖于被测应用程序的功能。强化学习(RL)是一种机器学习技术,它通过尝试和错误来学习解决任务的最佳策略,由积极或消极的奖励引导,而不是由明确的监督。深度RL是RL的最新扩展,它利用了神经网络的学习能力。这些功能使Deep RL适合复杂的探索空间,例如Android应用程序。然而,最先进的公开可用工具仅支持基本的表格式RL。我们已经开发了ARES,这是一种用于Android应用程序黑盒测试的深度RL方法。实验结果表明,它实现了更高的覆盖率和故障揭示比基线,其中包括最先进的基于RL的工具,如TimeMachine和Q-Testing。我们还定性地研究了这种性能背后的原因,并确定了Android应用程序的关键功能,这些功能使Deep RL对它们特别有效,即存在链式和阻塞活动。
2021-01-15 cs.SE
An Android Application Risk Evaluation Framework Based on Minimum Permission Set Identification
Android利用要求应用请求访问敏感用户数据的权限的安全机制,例如,联系人和SMS,或某些系统特征,例如,摄像头和互联网接入。然而,Android应用程序往往过于特权,即,他们经常请求比必要的更多的许可。这引起了过度特权的安全问题。为了缓解过度权限问题,本文提出了MPDroid,它结合了静态分析和协同过滤,根据应用描述和API使用情况来确定Android应用的最小权限。给定一个应用,MPDroid首先通过协同过滤来确定应用的初始最小权限,然后通过静态分析来确定应用真正需要的最终最小权限。最后,它通过检查应用程序的额外特权来评估过度特权风险,即,应用程序请求的不必要的权限。实验在从Google Play收集的16,343个流行应用程序上进行。结果表明,MPDroid的性能明显优于最先进的方法。
2020-01-23 cs.SE
What do all these Buttons do? Statically Mining Android User Interfaces at Scale
我们介绍了FRONTMATTER:一个高精度、大规模地自动挖掘Android应用程序的用户界面模型和行为的工具。给定一个应用,FRONTMATTER静态提取所有声明的屏幕、用户界面元素、它们的文本和图形特征,以及通过与它们交互而调用的Android API。FRONTMATTER在数万个真实世界的应用程序上执行,为全面挖掘移动用户界面打开了大门,大规模启动了实证研究,解决了诸如“有多少旅行应用程序需要注册?“、“哪些应用程序不遵循辅助功能指南?“,“用户界面是否与描述相符?”,还有更多。FRONTMATTER和挖掘的数据集在开源许可证下可用。
2021-05-07 cs.SE
PersisDroid: Android Performance Diagnosis via Anatomizing Asynchronous Executions
Android应用程序(apps)近年来急剧增长。应用程序通常以用户界面(UI)为中心。快速的UI响应是应用程序开发人员的关键考虑因素。然而,我们仍然缺乏一个方便的工具来分析应用程序的性能,以诊断性能问题。本文介绍了PersisDroid,一个专门为这项任务设计的工具。PersisDroid的关键概念是UI触发的异步执行也会影响UI性能,因此应该正确捕获其性能以便于性能诊断。然而,Android允许以多种方式启动异步执行,这对分析此类执行构成了巨大的挑战。本文认为,它们可以分为六类。因此,可以根据每个类别的具体情况,使用专为Android量身定制的动态检测方法对它们进行跟踪和分析。PersisDroid可以在任务粒度上正确地分析异步执行,这使其具有低开销和高兼容性的优点。最重要的是,分析数据可以极大地帮助开发人员检测和定位性能异常。我们编码并开源发布PersisDroid。应用该工具对20个开源应用进行了性能诊断,发现其中11个存在潜在的性能问题,说明该工具在Android应用性能诊断中的有效性。
2015-12-25 cs.SE
Automated Test Input Generation for Android: Are We There Yet?
移动应用程序,通常简称为“应用程序”,越来越普遍,我们每天都使用它们来执行许多活动。像所有软件一样,应用程序必须经过充分的测试,以确保它们的行为正确。因此,近年来,研究人员和从业人员都开始研究自动化应用程序测试的方法。特别地,由于Android的开源性质及其大的市场份额,已经对用于在Android操作系统上运行的应用的输入生成技术进行了大量研究。在这个时间点上,实际上在文献中有许多这样的技术,它们在生成输入的方式,用于探索被测应用程序行为的策略以及它们使用的特定策略方面有所不同。为了更好地了解这些现有方法的优点和缺点,并了解如何使它们更有效,在本文中,我们对Android现有的主要测试输入生成工具进行了全面的比较。在我们的比较中,我们根据四个指标评估这些工具及其相应技术的有效性:代码覆盖率,检测故障的能力,在多个平台上工作的能力和易用性。我们的研究结果为Android应用程序的输入生成提供了一个清晰的图像,并确定了未来的研究方向,如果进行适当的调查,可能会导致更有效和更高效的Android测试工具。
2015-03-31 cs.SE
Evolutionary Fuzzing of Android OS Vendor System Services
Android设备由100多家制造商合作伙伴以多种形式提供,这些合作伙伴通过新的系统服务扩展了Android“香草”操作系统,并修改了现有的系统服务。这些专有扩展会使Android设备面临可靠性和安全性问题。在本文中,我们提出了一个基于进化算法的覆盖率引导模糊平台(Chizpurfle)来测试专有的Android系统服务。该平台的一个关键特性是能够利用动态二进制重写技术,在实际的未修改的Android设备上分析覆盖率。我们在三款高端商用Android智能手机上应用了该解决方案。结果证实,进化模糊能够比盲目模糊更有效地测试Android OS系统服务。此外,我们评估了不同选择的适应度函数和选择算法的影响。
2019-06-03 cs.CR cs.SE
Characterizing Sensor Leaks in Android Apps
虽然手机传感器对于实现高级功能非常有价值,但攻击者可能会滥用手机传感器在Android应用程序中实施恶意活动,正如许多最先进的研究所证明的那样。因此,迫切需要规范移动传感器的使用,以防止它们被恶意攻击者利用。然而,尽管为实现这一目标作出了各种努力,检测Android应用程序中的隐私泄漏,我们还没有找到自动检测Android应用程序中传感器泄漏的方法。为了填补这一空白,我们设计并实现了一个新颖的原型工具SEEKER,它扩展了著名的FlowDroid工具,以检测Android应用程序中基于传感器的数据泄漏。SEEKER直接对Android应用程序的字节码进行以传感器为中心的静态污点分析,不仅报告传感器触发的隐私泄露,还报告泄露中涉及的传感器类型。使用超过40,000个真实Android应用程序的实验结果表明,SEEKER可以有效地检测Android应用程序中的传感器泄漏,恶意应用程序比良性应用程序对泄漏传感器数据更感兴趣。
2022-01-17 cs.CR cs.SE
Understanding and Detecting Platform-Specific Violations in Android Auto Apps
Louisiana State University(路易斯安那州立大学)
本文提出AutoComply,一个用于检测Android Auto应用平台特定合规问题的静态分析框架,通过构建Car-Control Flow Graph识别媒体播放、UI渲染和语音命令集成等违规行为,有效提升应用合规性检查效率。
2026-01-27 cs.PL cs.SE
Dependability Assessment of the Android OS through Fault Injection
移动设备的可靠性对供应商来说是一个挑战,因为移动软件堆栈的复杂性显著增加。本文研究了如何通过故障注入来评估Android移动操作系统中故障对用户体验质量的影响。我们首先解决的问题,确定一个现实的故障模型的Android操作系统,提供给开发人员一套轻量级的和系统的故障建模的指导方针。然后,我们提出了一个可扩展的故障注入工具(AndroFIT),实际上,商业Android设备上应用这样的故障模型。最后,我们提出了一个大型的故障注入实验上的三个主要供应商的Android产品,并指出了几个可靠性问题和机会,以改善Android操作系统。
2019-12-07 cs.OS cs.SE
An Empirical Study of Code Obfuscation Practices in the Google Play Store
University of New South Wales (UNSW)(新南威尔士大学);University of Sydney(悉尼大学)
本文对 Google Play 商店八年内超 50 万个 Android APK 进行大规模实证分析,提出分类器检测混淆代码与工具,揭示混淆使用率增长 13% 的趋势及其在热门应用和游戏类中的更高普及度。
2025-02-07 cs.AI cs.CR cs.SE
Ghera: A Repository of Android App Vulnerability Benchmarks
移动应用程序的安全性影响其用户的安全。这推动了自动检测移动应用程序中的漏洞并帮助开发人员保护其应用程序的技术的发展;特别是在Android平台的背景下,由于平台的开放性和普遍性。尽管在这一领域进行了大量的研究工作,但没有包含大多数已知Android应用程序漏洞的最新和精简基准的综合存储库,因此,可以用于严格评估现有和新的漏洞检测技术,并帮助开发人员了解Android应用程序漏洞。在本文中,我们描述了Ghera,一个开源的基准测试库,它捕获了Android应用程序中的25个已知漏洞(作为被利用/良性和利用/恶意应用程序对)。我们还介绍了我们在创建Ghera时发现的漏洞基准和存储库的理想特征。
2017-08-08 cs.CR cs.SE
Towards Automated Android App Collusion Detection
Android OS支持多种应用之间的通信方式。这为以协作方式实施威胁提供了可能性,参见。2011年的Soundcomber示例。在本文中,我们提供了一个简洁的定义,共谋和报告的自动检测方法,与英特尔安全合作开发。
2016-03-07 cs.CR cs.SE
Ripple: Reflection Analysis for Android Apps in Incomplete Information Environments
尽管反射在Android应用程序中广泛使用,但它给静态安全分析带来了严重的问题。目前,字符串推理被应用于处理反射,导致严重遗漏的安全漏洞。在本文中,我们提出了Android应用程序的不完整信息环境(IIE)的普遍性,其中一些关键的数据流在静态分析过程中丢失,并需要解决IIE下的反射调用。我们介绍了Ripple,这是第一个针对Android应用程序的IIE感知静态反射分析,它比字符串推理更好地解决了反射调用。使用Google Play中的17个流行Android应用程序进行验证,证明了Ripple在发现反射目标方面的有效性,误报率较低。因此,Ripple启用了FlowDroid,这是一种针对Android应用程序的污点分析,可以找到数百个敏感数据泄漏,否则这些数据可能会被遗漏。作为一种基础分析,Ripple对许多安全分析客户端都很有价值,因为现在可以在IIE下分析更多的程序行为。
2016-12-16 cs.CR cs.SE
Static Analysis for Android GDPR Compliance Assurance
许多Android应用程序收集用户的数据。当他们这样做时,他们必须根据当前的法律框架保护这些收集的数据。自欧盟推出《通用数据保护条例》(GDPR)以来,这种数据保护变得更加重要。应用程序开发人员在整个应用程序开发过程中对数据保护的推理工具支持有限。虽然许多Android应用程序都声明了隐私策略,但隐私策略合规性检查目前是手动的,成本高昂,并且容易出错。隐私审计的主要挑战之一是法律隐私声明(英文文本)与Android应用程序用于保护用户隐私的技术措施之间存在巨大差距。在这篇论文中,我们将探讨在多大程度上我们可以使用静态分析来回答有关数据保护的重要问题。我们的主要目标是设计一种基于工具的方法,帮助应用程序开发人员和审计人员确保基于自动静态程序分析的Android应用程序中的数据保护。
2023-03-16 cs.CR cs.SE
Security Code Smells in Android ICC
Android组件间通信(ICC)非常复杂,在很大程度上不受约束,开发人员很难理解。因此,ICC是Android应用程序中安全漏洞的常见来源。为了促进安全编程实践,我们回顾了相关研究,并确定了Android设备中可避免的ICC漏洞以及指示其存在的安全代码气味。我们解释了漏洞及其相应的气味,并讨论了如何在开发过程中消除或减轻它们。我们在Android Lint之上提供了一个轻量级的静态分析工具,它可以分析开发中的代码,并在IDE中提供有关代码中是否存在此类气味的即时反馈。此外,在这个工具的帮助下,我们研究了700多个开源应用程序中安全代码气味的流行程度,并手动检查了大约15%的应用程序,以评估识别这些气味发现ICC安全漏洞的程度。
2018-12-10 cs.CR cs.SE
Evaluating LLMs for Obfuscation Detection and Classification in Android Apps
IMT School for Advanced Studies Lucca(卢卡高等研究学院);Interdisciplinary Centre for Security, Reliability and Trust(安全、可靠性和信任跨学科中心);University of Verona(维罗纳大学);University of Genoa(热那亚大学)
本研究通过大规模实验评估大型语言模型(LLMs)在无需手工规则或训练的情况下,通过语义推理检测Android应用中的代码混淆,并与现有SAST方法对比。
2026-06-15 cs.CR cs.SE
Platform-Centric Android Monitoring---Modular and Efficient
我们为Android平台提供了一个附加组件,能够拦截应用程序之间或应用程序与平台之间的几乎所有交互,包括以人类可读格式调用方法的参数。初步的性能评估表明,我们的解决方案的性能损失大致相当于该领域的类似工具。然而,我们的解决方案的优点是,它是真正的模块化,我们实际上并没有修改Android平台本身,甚至可以将其包含在已经运行的系统中。这样的附加组件的可能用途是多种多样的,我们讨论一个从该地区的运行时验证,旨在提高系统的安全性。
2014-06-08 cs.CR cs.SE
BenchPress: Analyzing Android App Vulnerability Benchmark Suites
近年来,开发了各种基准套件来评估Android安全分析工具的有效性。工具评估中使用的基准套件的选择通常基于套件的可用性和流行性,而不是基于它们的特性和相关性。作出这种选择的原因之一是缺乏关于成套基准的特点和相关性的信息。在这种情况下,我们根据经验评估了四个Android特定的基准测试套件:DroidBench,Ghera,IccBench和UBCBench。对于每个基准测试套件,我们确定了在Android应用程序开发的背景下在Stack Overflow上讨论的套件所使用的API,并在227 K真实世界应用程序的样本中测量了这些API的使用情况(覆盖率)。我们还比较了每对基准套件,以确定它们在API使用方面的差异。最后,我们确定了在真实世界的应用程序中使用的安全相关API,但没有在上述任何基准测试套件中使用,以评估扩展基准测试套件的机会(差距)。本文中的发现可以帮助1)Android安全分析工具开发人员选择最适合评估其工具的基准套件(通过覆盖率和成对比较获得信息); 2)Android应用漏洞基准创建者开发和扩展基准套件(通过差距获得信息)。
2019-09-19 cs.CR cs.SE
Visualizing Privacy-Relevant Data Flows in Android Applications
Paderborn University(帕德博恩大学);Fraunhofer IEM(弗劳恩霍夫应用研究促进协会工业工程研究所)
研究安卓应用中隐私相关数据流,利用静态程序切片和软件可视化,开发SliceViz工具,经用户研究证明其能有效帮助开发者识别相关属性,表明程序切片可用于分析此类数据流,改进可用性将助力开发者处理隐私敏感信息。
2026-07-23 cs.CR cs.SE
Analyzing Confidentiality and Privacy Concerns: Insights from Android Issue Logs
上下文:发布后的用户反馈在提高软件质量和提供新功能方面起着不可或缺的作用。鉴于其日益重要性,关于加强安全的反馈尤其值得注意。在考虑Android的快速发展时,我们研究了其利益相关者报告的Android安全威胁的规模和严重性。目的:我们系统地挖掘Android问题日志,以深入了解利益相关者对某些Android安全问题的看法和经验。方法:我们采用上下文分析技术来研究最近三个主要Android版本中提出的有关机密性和隐私的问题,考虑利益相关者评论的协方差以及用户偏好和优先级的一致性水平。结果:保密和隐私问题的严重程度各不相同,最普遍的果冻豆释放。在保密方面提出的问题主要涉及访问、用户凭证和许可管理,而对隐私的关切主要涉及电话锁定。社区用户对新的安全功能也表达了不同的偏好,从更宽松到非常严格。结论:支持对新旧Android版本采取持续纠正措施的策略可能会保持利益相关者的信心。一种为用户提供基本默认安全设置的方法,但如果需要,可以配置额外的安全功能,这将为Android的广泛利益相关者群体提供最佳平衡。
2021-02-24 cs.CR cs.SE
On The (In)Effectiveness of Static Logic Bomb Detector for Android Apps
超过85%的移动设备使用Android,这使其成为恶意软件的主要目标。恶意代码正变得越来越复杂,并且依赖于逻辑炸弹来隐藏自己以躲避动态分析。在本文中,我们进行了大规模的研究TSOPEN,我们的开源实现的最先进的静态逻辑炸弹扫描仪TRIGGERSCOPE,超过500k的Android应用程序。结果表明,该方法的规模。此外,我们调查了差异,并表明该方法可以达到非常低的假阳性率,0.3%,但需要付出特定的代价,例如,删除90%的敏感方法。因此,依靠这种方法来自动检测大型数据集中的所有逻辑炸弹可能是不现实的。然而,它可以用来加速恶意代码的定位,例如,在逆向工程应用程序时。我们还向研究社区提供了TRIGDB,一个包含68个Android应用程序的数据库,其中包含基于用户的行为作为基础事实。
2021-08-25 cs.CR cs.SE
I know what leaked in your pocket: uncovering privacy leaks on Android Apps with Static Taint Analysis
Android应用程序可能会无意或恶意泄露隐私数据。在这项工作中,我们执行组件间数据流分析来检测Android应用程序组件之间的隐私泄露。与目前所有的方法不同,我们的工具,称为IccTA,传播组件之间的上下文,这提高了分析的精度。IccTA在DroidBench上的准确率达到95.0%,召回率达到82.6%,优于所有其他可用工具。我们的方法检测147个组件间的隐私泄漏在14个应用程序中的一组3000个真实世界的应用程序,精度为88.4%。在ApkCombiner的帮助下,我们的方法能够检测基于应用程序间的隐私泄露。
2014-04-29 cs.CR cs.SE
Automated Deobfuscation of Android Native Binary Code
随着Android应用程序的普及,已经提出了不同的技术来增强应用程序保护。混淆技术作为防止逆向工程的一种有效方法,可以用于良性和恶意目的。近年来,由于Java字节码的局限性,越来越多的敏感逻辑或数据被实现为混淆的本机代码。因此,本机代码混淆成为安全分析理解复杂逻辑的一大障碍。在本文中,我们提出了DiANa,一个自动化系统,以促进Android应用程序中的本地二进制代码的去混淆。具体来说,给定由Obfuscator-LLVM(最流行的本机代码混淆器)混淆的二进制文件,DiANa能够恢复原始的控制流图。据我们所知,DiANa是第一个旨在解决Android原生二进制去混淆问题的系统。我们已经在不同的场景中应用DiANa,实验结果表明,DiANa的通用相似性比较指标的基础上的有效性。
2020-03-16 cs.CR cs.SE
SeMA: A Design Methodology for Building Secure Android Apps
UX(用户体验)设计师通过故事板直观地捕捉应用程序的UX。这种方法也用于Android应用程序开发,以概念化和设计应用程序。最近,安全性已成为Android应用程序UX不可或缺的一部分,因为移动应用程序用于执行银行、通信和健康等关键活动。因此,保护用户信息在移动应用程序中至关重要。在这种情况下,故事板工具提供了有限的能力来捕获和推理应用程序的安全需求。因此,安全性不能在设计时融入应用程序。因此,由设计缺陷引起的漏洞经常会出现在应用程序中。为了解决这个问题,在本文中,我们提出了一个基于故事板的设计方法,使规范和验证的Android应用程序的安全属性在设计时。
2019-09-20 cs.CR cs.PL cs.SE