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
A Benchmark of Data Loss Bugs for Android Apps
Android应用必须能够处理停止事件和启动事件,停止事件要求立即停止应用的执行而不丢失状态信息,启动事件要求在应用停止的同一点恢复应用的执行。对这类事件的支持必须由开发人员显式实现,不幸的是,开发人员经常无法实现用于保存和恢复应用程序状态的正确逻辑。因此,应用程序在移动到后台然后返回前台时可能会丢失数据(例如,以应答呼叫)或者当屏幕简单地旋转时。这些错误可能是恼人的可用性问题和意外崩溃的原因。本文介绍了Android应用程序中的110个数据丢失故障的公共基准,我们系统地收集了这些故障,以促进对这些问题的研究和实验。该基准测试可在GitLab上获得,包括错误的应用程序,修复的应用程序(可用时),自动重现问题的测试用例,以及可能有助于研究人员完成任务的其他信息。
2019-05-27 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
MobiCoMonkey - Context Testing of Android Apps
许多移动应用程序的功能取决于各种上下文、外部因素。根据不可预见的情况,移动应用程序甚至可能出现故障或崩溃。在本文中,我们介绍了一种自动化工具,允许开发人员针对自定义或自动生成的上下文场景测试应用程序,并通过模拟器帮助检测可能的错误。此外,它还报告了错误和上下文因素之间的联系,以便以后可以重现错误。它利用Android SDK和logcat提供的工具来注入事件并捕获应用程序执行的痕迹。
2018-04-07 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
Enabling Mutation Testing for Android Apps
变异测试已被广泛用于评估测试套件的故障检测有效性,以及指导测试用例生成或优先级排序。经验研究表明,虽然突变体通常代表真实故障,但突变测试的有效应用需要为程序设计语言设计的“传统”运算符用特定于应用领域和/或技术的运算符来扩充。本文提出了MDroid+,一个有效的Android应用程序的突变测试框架。首先,我们通过手动分析来自不同来源的2,023个软件工件(例如,错误报告、提交)。然后,我们确定了一组38个变异算子,并实现了一个基础设施,用其中的35个算子在Android应用程序中自动播种变异。的分类和建议的运营商进行了评估方面的死产/平凡的突变体产生和他们的能力,代表真正的故障在Android应用程序中,相比其他众所周知的突变工具。
2017-08-01 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
Detecting and Fixing Data Loss Issues in Android Apps
Android应用程序是事件驱动的,它们的执行经常被外部事件中断。这种中断可能会导致数据丢失问题,使用户感到烦恼。例如,当屏幕旋转时,当前应用程序页面将被破坏并重新创建。如果未正确保留应用程序状态,则用户数据将丢失。在这项工作中,我们提出了一种方法和工具iFixDataloss,可以自动检测和修复Android应用程序中的数据丢失问题。为了实现这一目标,我们确定了可能发生数据丢失问题的场景,制定了揭示数据丢失问题的策略,并设计了修补程序模板来修复它们。我们在66个Android应用程序上的实验显示,iFixDataloss检测到374个数据丢失问题(其中284个是以前未知的),并成功地为374个问题中的188个生成了补丁。在提交的20个补丁中,有16个已经被开发人员接受。与最先进的技术相比,iFixDataloss在检测到的数据丢失问题数量和生成的补丁质量方面表现得更好。
2022-09-19 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
Measuring the Declared SDK Versions and Their Consistency with API Calls in Android Apps
Android已经是最流行的智能手机系统,具有多个平台版本(例如,KITKAT和Lollipop)活跃在市场上。为了管理应用与一个或多个平台版本的兼容性,Android允许应用在其清单文件中声明受支持的平台SDK版本。在本文中,我们作出了第一次努力,研究这种现代软件机制。我们的目标是衡量真实应用中声明的SDK版本(我们以后称之为DSDK版本)的当前实践,以及DSDK版本与其应用API调用之间的一致性。为此,我们进行了三维分析。首先,我们解析Android文档以获得每个API与其相应平台版本之间的映射。然后,我们分析了超过24 K应用程序的DSDK-API一致性,其中我们通过Google Play分析预先排除了为不同Android版本提供不同应用程序二进制文件的1.3K应用程序。除了阐明当前的DSDK实践之外,我们的研究还定量地测量了不适当的DSDK版本的两个副作用:(i)大约1.8K应用程序具有在某些声明的SDK版本中不存在的API调用,这导致这些平台版本上的运行时崩溃错误;(ii)由于声称过时的目标DSDK版本,超过400个应用程序可能被远程代码执行利用。这些结果表明了正确声明DSDK的重要性和困难,我们的工作可以帮助开发人员实现这一目标。
2017-03-17 cs.SE
Feature Location Benchmark for Decomposing and Reusing Android Apps
软件重用使开发人员能够重用体系结构、程序和其他软件工件。在软件中实现系统的重用为涉众带来了大量的好处,包括更少的维护工作、更低的开发成本和更短的上市时间。不幸的是,目前在Android应用程序中实现大规模软件重用的框架仍然是一个巨大的问题,因为任务的复杂性以及缺乏来自工具或领域专家的实际技术支持。因此,为应用程序提出一个功能定位基准将有助于开发人员优化他们的功能定位技术,或者重用基准中创建的资产以进行重用。在本文中,我们发布了一个功能定位基准,它可以用于那些开发人员,谁打算组成软件产品线(SPL)和发布重用的应用程序。该基准不仅有助于研究社区的重用研究,而且还有助于行业参与者优化其体系结构和增强模块化。此外,我们还开发了一个名为caIDE的Android Studio插件,供开发者查看和操作基准测试。
2020-05-08 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
AnFlo: Detecting Anomalous Sensitive Information Flows in Android Apps
智能手机应用程序通常可以访问敏感的用户数据,如联系人、地理位置和帐户凭据,并且它们可能会通过Internet或与其他应用程序将此类数据共享给外部实体。如果易受攻击或恶意的应用程序处理敏感数据的方式存在异常,则可能会破坏用户数据的机密性。检测异常敏感数据流的现有方法在准确性方面具有限制,因为对于具有不同功能的不同应用,异常流的定义可能不同;“健康”应用通过互联网共享心率信息是正常的,但对于“旅行”应用是异常的。在本文中,我们提出了一种新的方法来检测Android应用程序中的异常敏感数据流,提高了准确性。为了实现这一目标,我们首先根据从功能描述中推断出的主题对受信任的应用程序进行分组。然后,我们了解与每组受信任应用程序相关的敏感信息流。对于分析中的给定应用程序,通过将应用程序中的敏感信息流与从分组在同一主题下的受信任应用程序了解到的那些流进行比较来识别异常。在评估中,信息流是从11,796个受信任的应用程序中学习的。然后,我们检查了596个新(良性)应用程序中的异常,并确定了2个与异常流量相关的先前未知的易受攻击应用程序。我们还分析了18个恶意软件应用程序,发现其中6个存在异常。
2018-12-19 cs.SE
Proactive Libraries: Enforcing Correct Behaviors in Android Apps
Android框架提供了一组丰富的API,开发人员可以利用这些API来构建他们的应用程序。然而,这些API的快速发展以及Android组件生命周期的特定特征给开发人员带来了挑战,他们可能会发布不正确使用API的应用程序。在这个演示中,我们介绍了主动库,这是一个可以用来装饰常规库的工具,它具有在运行时主动检测和修复API误用的功能。主动库将库与多个主动模块混合在一起,这些模块收集数据、检查API使用是否符合正确性策略,并在检测到可能违反策略时尽快修复执行。我们对27种可能的API误用进行了评估,结果显示了主动库在纠正API误用方面的有效性,而运行时开销可以忽略不计。
2022-02-24 cs.SE
DroidLink: Automated Generation of Deep Links for Android Apps
移动应用程序(app)已成为手持设备上访问互联网的主要入口。与Web不同,每个网页都有一个可直接访问的全局URL,应用程序的特定“内容页面”只能通过从着陆页使用几个操作来浏览应用程序才能打开。应用程序之间的互操作性相当固定,因此限制了应用程序之间的增值“链接数据”。最近,已经提出了深度链接,以使得能够利用可访问的统一资源标识符(URI)在外部定位和打开应用的特定页面。然而,为移动应用程序实现深度链接需要应用程序开发人员进行大量手动工作,这可能非常容易出错且耗时。在本文中,我们建议DroidLink为现有Android应用程序自动生成深度链接。我们设计了一个适合自动生成的深度链接模型。然后,我们探讨了页面的过渡,并建立了一个导航图的基础上静态和动态分析的Android应用程序。接下来,我们实现了一种更新机制,该机制可以不断重新访问目标应用并发现新页面,从而为应用的每个页面生成深度链接。最后,我们重新打包了支持深度链接的应用,但不需要额外的部署要求。我们为一些流行的应用程序生成深度链接,并证明了DroidLink的可行性。
2016-05-23 cs.SE
A Comparative Study of Full Apps and Lite Apps for Android
针对Android应用“一刀切”开发策略的弊端,研究者开展轻量与全量应用的多维度对比研究,发现多数轻量应用未达体积小、下载快、省流量的预期目标,且存在潜在安全风险。
2025-01-14 cs.SE
Native vs Web Apps: Comparing the Energy Consumption and Performance of Android Apps and their Web Counterparts
本研究实证比较Android平台上原生应用与Web应用的能耗和性能,发现原生应用能耗更低、资源占用更少,建议优先使用原生应用。
2023-08-31 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
LDMDroid: Leveraging LLMs for Detecting Data Manipulation Errors in Android Apps
Xiamen University(厦门大学)
本文提出利用LLM开发LDMDroid框架,通过状态感知过程生成UI事件序列以提高数据操纵功能触发成功率,并利用视觉特征识别数据状态变化,有效检测数据操纵错误。
2026-05-09 cs.SE
A Study of Using Multimodal LLMs for Non-Crash Functional Bug Detection in Android Apps
针对传统GUI测试难以检测非崩溃功能性(NCF)Bug的问题,本研究实证探索了利用多模态LLM作为测试预言机检测Android应用NCF Bug的有效性,发现其检测率达49%并新发现24个未知Bug,揭示了该方法的潜力与局限。
2024-07-26 cs.SE
Healing Data Loss Problems in Android Apps
Android应用程序应该设计为应对停止-启动事件,这些事件需要停止和恢复应用程序的执行,同时保持其状态不变。这些事件可能是由运行时配置更改(如屏幕旋转)和上下文切换(如从一个应用切换到另一个应用)引起的。当发生stop-start事件时,Android会保存应用的状态,处理事件,并最终恢复保存的状态。为了让Android正确保存和恢复状态,应用必须提供相应的支持。不幸的是,Android开发人员经常错误地实现这种支持,或者根本没有实现它。这种糟糕的做法使应用程序对停止-启动事件做出错误的反应,从而产生我们定义的数据丢失问题,即丢失用户数据的Android应用程序,由于程序变量丢失其值而导致意外行为和崩溃。数据丢失问题很难检测,因为只有当应用程序处于特定状态并具有特定输入时才可能观察到数据丢失问题。覆盖所有可能的测试用例可能需要大量的测试用例,这些测试用例的执行必须手动检查,以发现在每个停止-启动事件之后,测试中的应用程序是否已正确恢复。因此,重要的是要补充传统的内部测试活动与机制,可以保护应用程序,一旦在现场发生数据丢失问题。在本文中,我们提出了DataLossHealer,一种自动识别和修复数据丢失问题的技术,一旦发生在现场。DataLossHealer是一种在运行时检查状态是否正确恢复的技术,并在需要时修复应用程序。DataLossHealer可以从经验中学习,逐步减少引入的…
2017-01-19 cs.SE
Aper: Evolution-Aware Runtime Permission Misuse Detection for Android Apps
Android平台在6.0版中引入了运行时权限模型。新模式极大地改善了数据隐私和用户体验,但也给应用开发者带来了新的挑战。首先,它允许用户自由撤销授予的权限。因此,开发人员不能假设授予应用程序的权限将继续被授予。相反,他们应该让他们的应用程序在调用危险的API之前仔细检查权限状态。其次,权限规范不断发展,给生态系统带来了新的兼容性问题。为了了解这些挑战的影响,我们对13,352个流行的Google Play应用程序进行了实证研究。我们发现,86.0%的应用在权限管理后异步使用危险API,61.2%的应用使用正在演变的危险API。如果应用程序没有正确处理权限冲突或平台差异,可能会发生意外的运行时问题,甚至导致应用程序崩溃。我们把这种Android的ARP权限问题称为ARP错误。然而,现有的运行时权限问题检测工具不能有效地处理异步权限管理和权限规范演化所导致的ARP漏洞。为了填补这一空白,我们设计了一个静态分析器Aper,它对Android应用程序执行到达定义和支配者分析,以检测这两种类型的ARP错误。为了将Aper与现有工具进行比较,我们从60个真实的ARP错误中构建了一个基准测试ARPfix。我们的实验结果表明,Aper显着优于两个学术工具,ARPDroid和RevDroid,以及工业工具,Lint,在ARPfix上,平均提高了46.3%的F1分数。此外,Aper在214个开源An…
2022-01-29 cs.SE
Studying Eventual Connectivity Issues in Android Apps
移动应用程序已成为日常生活中不可或缺的,不仅对个人,而且对提供数字服务的公司/组织也是如此。由于设备的移动性,应用程序的使用位置或条件没有限制。例如,应用程序可以在没有互联网连接的情况下使用。因此,离线优先是移动应用程序的一个非常理想的质量。因此,连接问题的不适当处理和良好实践的错误实施导致错误和崩溃的发生,降低了用户对应用程序质量的信心。在本文中,我们提出了第一个研究最终连接(ECn)的Android应用程序所表现出的问题,通过手动检查971场景相关的50个开源应用程序。我们发现了304个ECn问题实例(平均每个应用程序6个问题),我们将其组织在10个类别中。我们发现,大多数ECn问题与使用未向用户提供有关连接状态的正确信息的消息以及不正确使用委托检查连接状态的外部库/应用程序有关。根据我们的研究结果,我们提炼出一系列的经验教训,为从业者和研究人员,指出未来的工作方向。
2021-10-17 cs.SE
Using Automatic Refactoring to Improve Energy Efficiency of Android Apps
移动电话的日益普及给软件开发生命周期带来了额外的挑战。移动应用程序(简称app)应该提供与传统软件相同的功能集,但资源有限:例如有限的处理能力、存储、屏幕以及同样重要的电源。虽然能源效率是一个有价值的要求,但开发人员往往缺乏最佳实践的知识。在本文中,我们研究自动重构是否可以帮助开发人员发布节能应用程序。我们利用一个工具,Leafactor,有五种能源代码气味,往往会被忽视。我们使用Leafactor分析了140个免费和开源应用程序中的代码气味。因此,我们在45个应用程序中检测并修复了代码气味,其中40%已成功将我们的更改合并到官方存储库中。
2018-03-15 cs.SE
Comprehension of Ads-supported and Paid Android Applications: Are They Different?
Android市场是开发人员向用户提供付费和/或免费应用程序的地方。免费应用程序对用户来说很有趣,因为他们可以立即尝试它们,而不会产生金钱成本。然而,与付费应用程序相比,免费应用程序通常功能有限,并且包含广告。因此,用户最终可能需要付费才能获得额外的功能和/或删除广告。虽然付费应用程序具有明确的市场价值,但它们的广告支持版本并不是完全免费的,因为广告会影响性能。在本文中,首先,我们对广告支持和付费应用程序进行了探索性研究,以了解它们在实施和开发过程方面的差异。我们分析了40个Android应用程序,我们观察到(i)广告支持的应用程序是用户首选的,尽管付费应用程序有更好的评级,(ii)开发人员通常不会提供没有相应免费版本的付费应用程序,(iii)广告支持的应用程序通常有更多的版本,并且比相应的付费版本发布得更频繁,(iv)关于开发者设置付费应用的价格的方式没有明确的策略,(v)付费应用通常不包括比其相应的广告支持版本更多的功能,(vi)开发者并不总是在其广告支持应用的付费版本中移除广告网络,以及(vii)付费应用比广告支持的应用需要更少的权限。其次,我们进行了一项实验研究,以比较广告支持和付费应用程序的性能,我们提出了四个方程来估计广告支持的应用程序的成本。我们得到:(i)广告支持的应用程序使用的资源比相应的付费版本更多,差异具有统计学意义;(ii)付费应用程序可以被认为是用户最具成…
2017-03-08 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
Large-Scale Analysis of Framework-Specific Exceptions in Android Apps
移动应用程序已经变得无处不在。对于应用程序开发人员来说,确保应用程序的正确性和可靠性是一个关键的优先事项。然而,许多应用程序仍然遭受偶尔或频繁的崩溃,削弱了它们的竞争优势。对真实世界应用崩溃的特征进行大规模深入分析可以提供有用的见解来指导开发人员,或帮助改进测试和分析工具。然而,这样的研究并不存在-本文填补了这一空白。经过四个月的努力,我们从2,486个开源Android应用程序中收集了16,245个独特的异常跟踪,并观察到特定于框架的异常占这些崩溃的大多数。然后,我们广泛地调查了8,243个特定于框架的异常(花费了六个人月的时间):(1)识别它们的特征(例如,表现形式位置、常见故障类别),(2)通过最先进的缺陷检测技术评估它们的表现形式,以及(3)检查它们的修复。除了这些发现提供的见解外,这些发现还激励并促进了对移动应用程序的后续研究,例如错误检测,故障定位和补丁生成。此外,为了证明我们的研究结果的实用性,我们优化了Stoat,一个动态测试工具,并实现了Experiment,一个异常本地化工具,用于Android应用程序。Stoat能够快速发现Gmail和Google+中三个以前未知的、已确认/已修复的崩溃; Experiment能够精确定位真实应用程序中已识别异常的根本原因。我们的大量数据集是公开的,与社区分享并使社区受益。
2018-03-10 cs.SE
RAICC: Revealing Atypical Inter-Component Communication in Android Apps
组件间通信(ICC)是Android中的一个关键机制。它使开发人员能够组合丰富的功能,并探索应用程序内部和跨应用程序的重用。不幸的是,正如大量文献所报道的那样,ICC相当“复杂且基本上不受约束”,这使得应用程序建模缺乏精确性。为了应对在应用程序内跟踪ICC的挑战,Epicc、IccTA和Amandroid等最先进的静态方法专注于记录的框架ICC方法(例如,startActivity)来构建其方法。在这项工作中,我们表明,在这些国家的最先进的工具推断ICC模型实际上可能是不完整的:框架提供了其他非典型的方式执行ICC。为了解决这一限制,在最先进的,我们提出了RAICC的静态方法建模新的ICC链接,从而提高以前的分析任务,如ICC漏洞检测,隐私泄漏检测,恶意软件检测等,我们已经评估了RAICC的20个基准应用程序,证明它提高了精度和召回的最先进的工具中发现的泄漏。我们还进行了一项大型的实证调查,显示非典型ICC方法主要用于Android应用程序,尽管不一定用于数据传输。我们还表明,RAICC在真实世界的恶意应用程序数据集中发现的ICC链接数量增加了61.6%,并且RAICC能够检测新的ICC漏洞。
2021-01-15 cs.SE
Characterizing the transition to Kotlin of Android apps: a study on F-Droid, Play Store and GitHub
Kotlin是一种新型语言,代表了Java的替代品,最近已被用作Android应用程序的一流程序设计语言。Kotlin在开发人员中实现了显著的扩散,一些研究强调了该语言与Java相比的各种优势。本文的目的是分析一组开源Android应用程序,评估它们在整个生命周期中向Kotlin程序设计语言的过渡,并了解Kotlin的采用是否对Android应用程序的成功产生影响。我们从Android开源应用程序的F-Droid存储库中挖掘了所有项目,并在官方Google Play商店和GitHub平台上找到了相应的项目。我们定义了一组八个指标来量化Kotlin代码在最新更新和应用程序所有版本中的相关性。然后,我们统计分析了项目中Kotlin代码的存在与从发布应用程序的平台中挖掘的流行度指标之间的相关性。在2017年10月之后更新的1232个项目中,近20%采用了Kotlin,约12%的Kotlin代码比Java多;大多数采用Kotlin的项目迅速从Java过渡到新语言。使用Kotlin的项目平均具有更高的流行度指标;在Kotlin的存在和GitHub存储库上的星星数量之间发现了统计学上的显著相关性。Kotlin语言似乎能够保证Android开发人员从Java无缝迁移。通过对大量开源Android应用程序的检查,我们观察到Kotlin语言的采用非常迅速(与Android项目的平均寿命相比),并且在…
2019-08-18 cs.SE
Datasets of Android Applications: a Literature Review
移动电话和平板电脑已经成为使用最广泛的计算设备,其中Android平台占很大优势。作为一种自然的进化,Android应用程序的开发已经激增,并已成为一个主要的研究领域,研究工作范围从能源效率,代码气味,性能,可维护性,安全性等,这些挑战要求专用的解决方案,工具和数据集。该调查确定并审查了31个现有的Android应用程序数据集,并根据关键特征对每个数据集进行分类,例如它包含的应用程序总数,应用程序的提交历史是否可用,它是否专注于应用程序的源代码或可执行二进制文件,用于构建数据集的源代码,这项研究可以使有经验的和有兴趣对Android应用程序进行研究的新手研究人员受益,他们可以使用我们的研究结果作为识别最适合其研究目标的数据集的地图。
2018-09-26 cs.SE
StoryDroid: Automated Generation of Storyboard for Android Apps
移动应用程序现在无处不在。在开发一个新的应用程序之前,开发团队通常会付出艰苦的努力来审查许多具有类似目的的现有应用程序。审查过程至关重要,因为它降低了市场风险,并为应用程序开发提供了灵感。然而,手动探索数百个现有的应用程序的不同角色(例如,产品经理,UI/UX设计师,开发人员)在开发团队中可能是无效的。例如,很难在短时间内完全探索应用程序的所有功能。受电影制作中故事板概念的启发,我们提出了一个系统StoryDroid,用于自动生成Android应用程序的故事板,并帮助不同的角色有效地审查应用程序。具体地说,StoryDroid提取活动转换图,并利用静态分析技术来呈现UI页面,从而使用呈现的页面可视化故事板。UI页面与对应的实现代码之间的映射关系(例如,布局代码、活动代码和方法层次结构)也被提供给用户。我们的综合实验表明,StoryDroid是有效的,确实有助于应用程序开发。StoryDroid的输出支持几个潜在的应用程序,例如UI设计和布局代码的推荐。
2019-02-15 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
Rebooting Research on Detecting Repackaged Android Apps: Literature Review and Benchmark
重新打包是对Android生态系统的严重威胁,因为它剥夺了应用程序开发人员的利益,有助于在用户设备上传播恶意软件,并增加了市场维护人员的工作量。在六年的时间里,围绕这一特定问题的研究产生了57种方法,这些方法不容易扩展到数百万个应用程序,或者只在私人数据集上进行评估,而通常没有社区可用的工具支持。通过对该主题的系统性文献综述,我们认为研究正在放缓,许多最先进的方法在封闭数据集上报告了高性能率,不幸的是,这些数据集很难复制和比较。在这项工作中,我们建议通过提供文献综述来重新启动重新包装应用程序检测的研究,该文献综述总结了检测重新包装应用程序的挑战和当前解决方案,并提供了一个大型数据集来支持现有解决方案的复制和新研究方向的影响。我们希望这些贡献将重新激活检测重新打包的应用程序的方向,并激发超越当前最先进技术的创新方法。
2018-11-20 cs.SE
Automatically Distilling Storyboard with Rich Features for Android Apps
在开发一个新的移动应用程序之前,开发团队通常会付出艰苦的努力来审查许多具有类似目的的现有应用程序。审查过程至关重要,因为它降低了市场风险,并为应用程序开发提供了灵感。然而,手动探索数百个现有的应用程序的不同角色(例如,产品经理,UI/UX设计师,开发人员和测试人员)可能是无效的。根据电影制作中故事板的概念,提出了一个StoryDistiller系统,通过逆向工程自动生成功能丰富的Android应用程序的故事板,并帮助不同的角色有效和高效地审查和分析应用程序。具体来说,我们(1)提出了一种混合的方法来提取相对完整的Activity转换图(ATG),即先通过静态分析方法提取Android应用的ATG,再利用动态组件探索来扩充ATG;(2)利用静态数据提取每个目标Activity所需的组件间通信(ICC)数据-流分析并通过使用应用程序插装以及提取的所需ICC数据来动态呈现UI页面;(3)获得丰富的特征,包括具有渲染的UI页面的综合ATG、语义活动名称、对应的逻辑和布局代码,等等(4)将情节串连图板可视化实现为具有所呈现的UI页面和对应的丰富特征的web服务。我们的实验表明,StoryDistiller是有效的,确实有助于应用程序的探索和审查。我们还进行了全面的比较研究,以证明IC 3,Gator,Stoat和StoryDroid的性能更好。
2022-03-12 cs.SE
Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs
Android应用程序是基于GUI的事件驱动软件,近年来变得无处不在。显然,功能正确性对于应用程序的成功至关重要。然而,除了崩溃错误之外,非崩溃功能错误(在本工作中简称为“非崩溃错误”),如无意的功能故障,无声的用户数据丢失和不正确的显示信息也很普遍,即使在流行的,经过良好测试的应用程序中也是如此。这些非崩溃功能错误通常由程序逻辑错误引起,并在图形用户界面(GUI)上表现出来。在实践中,这些错误在有效检测它们方面构成了重大挑战,因为(1)当前的实践严重依赖于昂贵的小规模手动验证(缺乏自动化);(2)现代全自动测试仅限于崩溃错误(缺乏测试预言机)。本文通过引入独立视图模糊来填补这一空白,这是一种用于检测Android应用程序中非崩溃功能错误的新颖的全自动方法。受变形测试的启发,我们的主要见解是利用Android应用程序的普遍独立视图属性,从一组验证某些应用程序属性的种子测试中制造属性保留突变测试。变异的测试有助于在额外的不利条件下测试测试应用程序。任何属性冲突都表明可能存在功能错误,需要进一步手动确认。我们已经实现了我们的方法作为一个自动化的,端到端的功能模糊工具,精灵。给定一个应用程序,(1)Genie自动检测非崩溃错误,而不需要人类提供的测试和预言(因此完全自动化);(2)检测到的非崩溃错误是多种多样的(因此是通用的,不限于特定的功能属性),这使Genie与以前的工作不同。
2021-10-05 cs.SE
Efficiently Manifesting Asynchronous Programming Errors in Android Apps
Android是排名第一的移动应用程序框架,它强制执行单GUI线程模型,其中单个UI线程管理GUI渲染和事件调度。由于这种模型,避免阻塞UI线程以获得响应是至关重要的。一种常见的做法是将长时间运行的任务卸载到Java线程中。为了实现这一点,Android提供了各种Android编程结构,并让开发人员自己遵守模型隐含的规则。然而,正如我们的研究所揭示的那样,超过25%的应用程序违反了这些规则,并引入了难以检测的故障停止错误,我们称之为aysnc编程错误(APE)。为此,本文介绍了APESTABILITY,一种自动和有效地表现APE的技术。其核心思想是将APE表征为特定的故障模式,并协同结合静态分析和动态UI探索来检测和验证此类错误。在40个真实世界的Android应用程序中,APEEE揭示并处理了61个APE,其中51个已确认(命中率为83.6%)。具体来说,APESTIM检测到的APE比最先进的测试工具(Monkey,Sapienz和Stoat)多3倍,并将测试时间从半小时缩短到几分钟。在一种特定类型的APE上,APEtron确认的错误是数据竞争检测工具EventRacer的5倍,并且几乎没有错误警报。
2018-08-09 cs.SE
Data Loss Detector: Automatically Revealing Data Loss Bugs in Android Apps
Android应用程序必须正常工作,即使它们的执行被外部事件中断。例如,即使接到电话,或者因为智能手机旋转而重新绘制布局后,应用程序也必须正常工作。由于这些事件可能需要在执行中断时销毁应用的前台Activity,并在执行恢复时重新创建应用的前台Activity,因此防止状态信息丢失的唯一方法是保存和恢复状态信息。此行为必须由应用开发人员显式实现,他们经常无法正确实现,从而释放受数据丢失问题影响的应用,即,应用程序在执行中断时可能会丢失状态信息。虽然有几种技术可用于自动生成Android应用程序的测试用例,但所获得的测试用例很少包括执行和显示数据丢失故障所需的交互和检查。为了解决这个问题,本文提出了数据丢失检测器(DLD),一个测试用例生成技术,集成了探索策略,数据丢失揭示行动,和两个定制的oracle策略,用于检测数据丢失故障。DLD已经能够在受110个已知数据丢失故障影响的54个Android应用程序版本的基准测试中发现75%的故障。DLD还揭示了未知的数据丢失问题,优于竞争方法。
2020-10-12 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
DroidWalker: Generating Reproducible Test Cases via Automatic Exploration of Android Apps
通过自动应用探索生成测试用例对于分析和测试Android应用非常有用。然而,当前应用程序探索工具生成的测试用例是不可复制的,即当重新执行生成的测试用例时,应用程序无法达到与探索的应用程序相同的状态。因此,应用程序开发人员无法重现探索期间报告的故障或崩溃,无法在修复错误后进行回归测试,也无法在不同的环境中执行相同的测试。在本文中,我们提出了DroidWalker,一个动态分析工具,以生成可重复的测试用例的Android应用程序。我们的工具的关键设计是一个动态自适应模型,它可以以适当的粒度抽象应用程序状态,以便之后可以到达模型中的每个状态。给定一个正在测试的应用程序,DroidWalker首先探索该应用程序以构建模型。然后,开发人员可以选择模型中要复制的状态。最后,DroidWalker执行所有生成的测试用例,应用程序可以达到与探索的状态完全相同的状态。我们将DroidWalker应用于三个实际使用场景,以展示其实际用途。我们的工具的视频在https://youtu.be/ndUD8Gxs800。
2017-10-24 cs.SE
Automatically Detecting API-induced Compatibility Issues in Android Apps: A Comparative Analysis (Replicability Study)
碎片化是Android生态系统中的一个严重问题。这一问题主要是由于系统本身的快速演进以及不同智能手机制造商独立维护的各种定制造成的。许多努力都试图通过自动查明Android应用程序中的兼容性问题的方法来减轻其影响。不幸的是,在现阶段,这一目标是否已经实现仍然是未知的,现有的方法确实可以复制和可靠地利用来查明野外的兼容性问题。因此,我们建议填补这一空白,首先进行文献综述,确定所有可用的方法。在所确定的九种方法中,我们尽最大努力根据原始数据集再现它们。在此之后,我们更进一步,将这些方法与常见数据集和包含兼容性问题的真实应用程序进行经验比较。实验结果表明,现有的工具确实可以复制,但它们的能力是相当不同的,证实了这一事实,即只有一个小的重叠所选择的工具报告的结果。这一证据表明,我们的社区应该付出更多的努力来实现声音兼容性问题的检测。
2022-05-31 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
An Exploratory Study on the Occurrence of Self-Admitted Technical Debt in Android Apps
技术债描述了开发人员编写的代码不符合项目里程碑的情况。然而,这种债务积累往往会导致未来的开发人员努力解决这些质量问题。为了更好地管理这种债务,开发人员可以将他们的次优代码记录为代码中的注释(即,自我承认的技术债务或SATD)。虽然先前的研究已经调查了SATD的发生和特征,但本研究主要集中在非移动系统上。随着数百万的移动应用程序(应用程序)在多种类型可供最终用户,有一个缺乏研究的次优代码开发人员故意实现在移动应用程序。在这项研究中,我们研究了15,614个开源Android应用程序中SATD的发生和特征。我们的研究结果表明,即使这些应用程序包含SATD的发生,每个应用程序的数量(中位数为4)低于非移动系统,大多数债务被归类为代码债务。此外,我们还确定了应用程序中容易出现故意次优实现的典型元素。我们设想我们的研究结果支持研究人员和工具供应商构建工具和技术,以支持应用程序开发人员进行应用程序维护。
2023-03-03 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
Concurrency-related Flaky Test Detection in Android apps
通过测试验证Android应用程序是困难的,因为存在测试。由于不确定的执行环境,一系列事件(测试)可能以不可预测的方式导致成功或失败。在这项工作中,我们提出了一种方法和工具FlakeShovel通过系统的探索事件顺序检测的测试。我们的主要观察是,对于移动应用程序中的测试,有一个测试框架线程创建测试事件,一个主用户界面(UI)线程处理这些事件,可能还有几个其他后台线程异步运行。对于任何事件e,其执行涉及潜在的非确定性,我们定位e必须发生的最早(最晚)事件之后(之前)。然后,我们有效地探索上/下限事件之间的时间表,同时将事件分组在单个语句中,以确定测试结果是否是错误的。我们还创建了一套名为DroidFlaker的主题程序来研究Android应用程序中的重复测试。我们在主题套件DroidFlaker上的实验证明了我们的测试检测的有效性。我们的工作是对现有的测试检测工具的补充,比如Deflaker,它只检查失败的测试。FlakeShovel可以在通过的测试中检测到重复测试,正如我们的方法和实验所示。
2021-05-21 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
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
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
Automated Test Input Generation for Android: Are We There Yet?
移动应用程序,通常简称为“应用程序”,越来越普遍,我们每天都使用它们来执行许多活动。像所有软件一样,应用程序必须经过充分的测试,以确保它们的行为正确。因此,近年来,研究人员和从业人员都开始研究自动化应用程序测试的方法。特别地,由于Android的开源性质及其大的市场份额,已经对用于在Android操作系统上运行的应用的输入生成技术进行了大量研究。在这个时间点上,实际上在文献中有许多这样的技术,它们在生成输入的方式,用于探索被测应用程序行为的策略以及它们使用的特定策略方面有所不同。为了更好地了解这些现有方法的优点和缺点,并了解如何使它们更有效,在本文中,我们对Android现有的主要测试输入生成工具进行了全面的比较。在我们的比较中,我们根据四个指标评估这些工具及其相应技术的有效性:代码覆盖率,检测故障的能力,在多个平台上工作的能力和易用性。我们的研究结果为Android应用程序的输入生成提供了一个清晰的图像,并确定了未来的研究方向,如果进行适当的调查,可能会导致更有效和更高效的Android测试工具。
2015-03-31 cs.SE
AndroLog: Android Instrumentation and Code Coverage Analysis
针对现有Android黑盒插桩覆盖率工具可靠性低、侵入性强的问题,本文提出基于Soot框架的AndroLog工具,支持多级别细粒度覆盖率分析,插桩成功率达98%,优于现有工具,且具备可扩展潜力,已开源并提供演示。
2024-04-17 cs.SE
Evaluating the impact of code smell refactoring on the energy consumption of Android applications
University of Tartu(塔尔图大学)
本文通过实验评估 Android 应用中常见代码异味重构对能耗和性能的影响,发现重复代码与类型检查重构最高可节能 10.8%,且重构顺序会影响能耗增减。
2025-09-30 cs.SE
Our fingerprints don't fade from the Apps we touch: Fingerprinting the Android WebView
大量研究表明,浏览器指纹识别对用户的安全和隐私是有害的。然而,人们对浏览器指纹识别对Android混合应用程序的影响知之甚少。在Android混合应用程序中,一个精简的Chromium浏览器被集成到一个应用程序中。这些应用程序通过在本地应用程序和网络之间进行双向通信来扩大攻击面。本文研究了浏览器指纹对这些嵌入式浏览器的影响。为此,我们使用Android框架来记录和提取用于指纹识别的信息。我们研究了超过20,000个应用程序,包括Google Play商店中最受欢迎的应用程序。我们排除了Instagram等流行应用程序中的安全漏洞和严重的信息泄露。我们的研究表明,混合应用程序中的指纹可能包含特定于帐户和特定于设备的信息,这些信息可以在多个设备上唯一地识别用户。此外,我们的研究结果表明,混合应用程序浏览器并不总是遵守标准的浏览器特定的隐私政策。
2022-08-03 cs.CR 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
ReuNify: A Step Towards Whole Program Analysis for React Native Android Apps
针对 React Native 应用分析不完整的问题,提出原型工具 REUNIFY,将 JavaScript 与原生端代码集成至 Soot 框架的中间语言,显著提升了静态分析覆盖率、调用图节点数及隐私泄露检测能力。
2023-09-07 cs.SE
AppAngio: Revealing Contextual Information of Android App Behaviors by API-Level Audit Logs
Android用户现在正遭受各种应用程序不必要行为的严重威胁。分析应用程序的审计日志是一些设备制造商揭示应用程序中潜在恶意的基本方法之一。我们提出并实现了AppAngio,一个新的系统,揭示了上下文信息的Android应用程序的行为API级审计日志。我们的目标是帮助设备制造商的分析师了解用户设备上发生了什么,并帮助识别应用程序中的恶意行为。AppAngio的关键模块是识别与应用程序控制流图(CFG)上的日志匹配的路径。然而,挑战在于,有限数量的日志可能在日志匹配中招致高计算复杂性,其中存在大量的候选者,这是由连续日志的耦合关系引起的。为了解决这一挑战,我们提出了一个分而治之的策略,精确地定位与日志记录相匹配的节点在相应的CFG和连接节点尽可能少的回溯。我们的实验表明,AppAngio揭示了真实世界应用程序中行为的上下文信息。此外,揭示的结果有助于分析人员识别恶意应用程序行为,并补充现有的分析方案。同时,AppAngio在Android设备上的性能开销可以忽略不计。
2020-11-28 cs.SE