LLMs Meet Library Evolution: Evaluating Deprecated API Usage in LLM-based Code Completion
针对基于大语言模型的代码补全中因库演化导致的废弃API使用问题,首次评估7个先进LLM在8个Python库相关任务中的表现,揭示现状与原因,提出两种轻量级修复方法并提供研究启示。
2025-02-13 cs.SE
Quantifying the benefits of code hints for refactoring deprecated Java APIs
本研究量化了Javadoc代码提示对自动重构已弃用Java API的益处,构建符号与神经引擎,实验显示代码提示显著提升重构成功率,从无提示的14%提升至有提示的71%。
2025-04-21 cs.SE
Don't Use a Cannon to Kill a Fly: Lightweight Model Editing for LLMs to Correct Deprecated API Recommendations
Department of Computer Science, City University of Hong Kong(香港城市大学计算机系);The State Key Laboratory of Blockchain and Data Security, Zhejiang University(浙江大学区块链与数据安全国家重点实验室);Hangzhou High-Tech Zone (Binjiang) Institute of Blockchain and Data Security(杭州高新技术开发区(滨江)区块链与数据安全研究院);Midea Group(美的集团)
本文提出AdaLoRA-L方法,通过区分通用API层和特定API层,提升LLMs生成最新API的能力。
2026-08-04 cs.SE
A First Look at the Deprecation of RESTful APIs: An Empirical Study
表示状态转移(REST)被认为是一种标准的软件架构风格,用于构建可以通过互联网集成软件系统的Web API。然而,在连接系统时,RESTful API也可能在引入破坏性更改时破坏依赖其服务的依赖应用程序,例如,不再支持旧版本的API。为了及时警告开发人员,从而防止对下游应用程序的严重影响,应遵循弃用-删除模型,并列出与弃用相关的信息,如替代方法。虽然API弃用分析作为一个主题并不新鲜,但大多数现有的工作都集中在非Web API上,例如Java和Android提供的API。为了研究RESTful API弃用,我们提出了一个名为RADA(RESTful API弃用分析器)的框架。RADA能够自动识别弃用的API元素,并从OpenAPI规范中分析受影响的操作,OpenAPI规范是用于描述RESTful Web服务的机器可读配置文件。我们将RADA应用于从最大的OpenAPI规范目录APIs.guru收集的1,368个RESTful API中的2,224个OpenAPI规范。基于RADA挖掘的数据,我们进行了一项实证研究,以调查RESTful API中如何遵循弃用-删除协议,并描述RESTful API弃用中的实践。我们的研究结果揭示了现有RESTful API中存在的几个严重的弃用相关问题。我们的RADA实现和详细的经验结果可供未来的智能工具公开使用,这些工具可以自动识别和迁移客户端代码…
2020-08-28 cs.SE
Towards Knowledge Alignment in Code LLMs: Contrastive Unlearning for Evolving APIs
Hanoi University of Science and Technology(河内科技大学)
提出对比性遗忘方法CURE,在抑制废弃API的同时鼓励正确替代,使代码LLM适应演化库,实验表明该方法优于现有基线。
2026-07-01 cs.SE
Evolution of Deprecated APIs and Their Replacements in Python Libraries
College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics(南京航空航天大学计算机科学与技术学院);Key Laboratory for Safety-critical Software Development and Verification, Nanjing University of Aeronautics and Astronautics(南京航空航天大学安全关键软件开发与验证重点实验室);State Key Laboratory for Novel Software Technology, Nanjing University(南京大学软件新技术国家重点实验室)
本研究通过分析33个Python库的830个废弃API映射,揭示了替代关系受粒度、版本和生命周期影响,为演化感知的API迁移提供支持。
2026-09-29 cs.SE
AndroEvolve: Automated Android API Update with Data Flow Analysis and Variable Denormalization
Android操作系统经常更新,每个版本都会带来一组新的API。新版本可能涉及API弃用;使用弃用API的Android应用需要更新,以确保应用与旧版本和新版本的Android兼容。更新过时的API是一项耗时的工作。因此,自动更新Android API对开发人员来说是有益的。CocciEvolve是这种自动化的最先进方法。然而,它有几个限制,包括它无法解决超出方法边界的变量,以及由于添加临时变量而导致其更新的低代码可读性。为了进一步提高自动化Android API更新的性能,我们提出了一种名为AndroEvolve的方法,该方法通过增加数据流分析和变量名称反规范化来解决CocciEvolve的局限性。数据流分析使AndroEvolve能够解析文件范围内任何变量的值。变量名称反规范化将CocciEvolve更新中可能存在的临时变量替换为目标文件中的适当值。我们已经评估了AndroEvolve的性能及其在360目标文件上更新的可读性。与CocciEvolve相比,AndroEvolve产生的正确更新实例多26.90%。此外,我们的手动和自动评估表明,AndroEvolve更新比CocciEvolve更新更具可读性。
2020-11-10 cs.SE
A3: Assisting Android API Migrations Using Code Examples
Android API的快速发展给Android应用开发人员带来了挑战。为了利用Android频繁发布的API,开发人员必须经常在API迁移上花费大量精力。之前的研究和Android官方文档通常提供足够的信息来指导开发人员识别必须迁移的API调用以及更新版本的Android中相应的API调用(迁移什么)。然而,API迁移仍然是一项具有挑战性的任务,因为开发人员缺乏如何迁移API调用的知识。有一些代码示例(如Google Samples)可以说明API的用法。通过分析代码示例中API使用的变化,我们可以了解API迁移模式,以帮助开发人员进行API迁移。在本文中,我们提出了一种从代码示例中学习API迁移模式的方法,将这些模式应用于Android应用程序的API迁移源代码,并将结果作为潜在的迁移解决方案呈现给用户。为了评估我们的方法,我们通过从代码示例中学习API迁移模式来迁移开源Android应用程序中的API调用。我们发现,我们的方法可以成功地学习API迁移模式,并在80个案例中的71个案例中提供API迁移帮助。我们的方法可以迁移API调用,几乎不需要额外的修改,或者提供指导来帮助迁移。通过用户研究,我们发现采用我们的方法可以减少迁移API所花费的时间,平均减少29%。此外,我们与应用程序开发人员的访谈突出了我们在寻求API迁移时的方法的好处。我们的方法证明了利用软件存储库中包含的知…
2021-03-26 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
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
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
A Large-scale Investigation of Semantically Incompatible APIs behind Compatibility Issues in Android Apps
针对Android API语义更改引发的兼容性问题,提出结合静态分析和预训练大语言模型的统一检测框架,发现5481个不兼容API,F1分数达0.83,有效补充现有方法检测范围提升92.3%。
2024-06-26 cs.SE
Bamboo: LLM-Driven Discovery of API-Permission Mappings in the Android Framework
针对Android官方API权限文档不完善、现有映射发现方法适应性差等问题,本文提出基于大语言模型、结合双角色提示与API驱动代码生成的Bamboo工具,能高效发现API-权限映射,性能远超现有基线。
2025-10-05 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
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
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
A First Step Towards Detecting Values-violating Defects in Android APIs
人类价值是生活的一个重要方面,应该在移动应用程序(app)等无处不在的技术中得到支持。人们一直专注于解决某些违反人类价值观的问题,特别是隐私,可访问性和安全性,而其他价值观,如快乐,传统和谦卑却很少受到关注。在本文中,我们研究人类价值观和Android API服务之间的关系,并开发算法来检测这些价值观的潜在违规行为。我们使用手动策划的地面真值集评估了我们的算法,结果显示性能很高,并将算法应用于10,000个应用程序。我们的研究结果表明,违反价值观和病毒的存在之间的相关性。我们的研究结果还表明,安装次数最少的应用程序包含更多违反价值观的行为,违反价值观的频率在社交应用程序中最高。
2021-09-29 cs.SE
FILO: FIx-LOcus Localization for Backward Incompatibilities Caused by Android Framework Upgrades
移动操作系统发展迅速,经常更新应用程序开发人员用于构建其应用程序的API。不幸的是,API更新并不总是保证向后兼容性,导致应用程序在更新的系统上运行时无法正常工作,甚至崩溃。FILO是一个帮助Android开发人员解决API升级所带来的向后兼容性问题的工具。FILO既建议了应用程序中需要修改的方法,以使应用程序适应升级的API,又报告了在失败执行中观察到的关键症状,以促进修复活动。通过对12个实际升级问题的分析和早期工具采用者的反馈,我们得到的结果表明,FILO实际上可以支持Android开发人员。FILO可以从https://gitlab.com/learnERC/filo下载,其视频演示可以在https://youtu.be/WDvkKj-wnlQ上获得。
2020-12-31 cs.SE
Automating Release of Deep Link APIs for Android Applications
与Web不同,每个网页都有一个全局URL可供访问,移动应用程序中的特定“内容页面”无法打开,除非用户从着陆页通过几个操作探索应用程序。最近,大公司提倡使用深度链接,以便通过可访问的统一资源标识符(URI)在外部定位和打开应用程序的特定页面。为了实证调查采用深度链接的实践状况,在本文中,我们对超过20,000个Android应用程序的深度链接进行了最大规模的实证研究,发现深度链接在当前的Android应用程序中没有得到广泛采用,并且应用程序开发人员需要付出不小的手工努力来支持深度链接。为了解决这个问题,我们提出了阿拉丁方法和支持工具,以释放深层链接来访问现有应用程序的任意位置。Aladdin实例化了我们新颖的合作框架,以协同地结合静态分析和动态分析,同时最小限度地吸引开发人员向框架提供输入以实现自动化,而不需要任何编码工作或额外的部署工作。我们用流行的应用程序来评估阿拉丁,并展示其有效性和性能。
2017-12-01 cs.SE
Automatically Detecting API-induced Compatibility Issues in Android Apps: A Comparative Analysis (Replicability Study)
碎片化是Android生态系统中的一个严重问题。这一问题主要是由于系统本身的快速演进以及不同智能手机制造商独立维护的各种定制造成的。许多努力都试图通过自动查明Android应用程序中的兼容性问题的方法来减轻其影响。不幸的是,在现阶段,这一目标是否已经实现仍然是未知的,现有的方法确实可以复制和可靠地利用来查明野外的兼容性问题。因此,我们建议填补这一空白,首先进行文献综述,确定所有可用的方法。在所确定的九种方法中,我们尽最大努力根据原始数据集再现它们。在此之后,我们更进一步,将这些方法与常见数据集和包含兼容性问题的真实应用程序进行经验比较。实验结果表明,现有的工具确实可以复制,但它们的能力是相当不同的,证实了这一事实,即只有一个小的重叠所选择的工具报告的结果。这一证据表明,我们的社区应该付出更多的努力来实现声音兼容性问题的检测。
2022-05-31 cs.SE
CrySL: Validating Correct Usage of Cryptographic APIs
各种研究经验表明,大多数Java和Android应用程序滥用加密库,导致破坏性的数据安全漏洞。因此,在开发过程的早期发现此类误用至关重要。事实上,不安全的使用并不是例外,而是规范,这排除了基于属性推断和异常检测的方法。在本文中,我们提出了CrySL,一种定义语言,使密码学专家能够指定他们提供的密码库的安全使用。CrySL将方法调用序列和数据流约束的一般概念与与加密算法及其参数相关的特定于域的约束相结合。我们已经实现了一个编译器,将CrySL规则转换为上下文和流敏感的需求驱动的静态分析。分析会自动检查给定的Java或Android应用程序是否违反了CrySL编码的规则。我们通过分析10,001个Android应用程序来实证评估我们的规则。我们的研究结果表明,加密API的滥用仍然很普遍,96%的应用程序至少包含一个滥用。然而,我们观察到较少的误用,在以前的工作中报告。
2017-10-02 cs.SE
Web APIs in Android through the Lens of Security
Web通信已成为移动应用程序不可或缺的特性。然而,目前尚不清楚这些应用程序传输了哪些数据,传输给了谁,以及这种传输会产生什么后果。我们从安全的角度分析了移动应用程序中的Web通信。我们首先手动研究了160个Android应用程序,以确定常用的通信库,并了解它们在这些应用程序中的使用方式。然后,我们开发了一个工具来静态识别应用程序中使用的Web API URL,并恢复JSON数据模式,包括每个参数的类型和值。我们提取了3,376个应用程序中使用的9,714个不同的Web API URL。我们发现开发人员经常使用java.net包进行网络通信,但是,许多应用程序中也使用了OkHttp等第三方库。我们发现,不安全的HTTP连接在闭源应用程序中的普遍程度是开源应用程序的七倍,并且嵌入式SQL和JavaScript代码在500多个不同的应用程序中用于Web通信。这一发现是毁灭性的;它使数十亿用户和API服务提供商容易受到攻击。
2020-06-01 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
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
Scalable Online Vetting of Android Apps for Measuring Declared SDK Versions and Their Consistency with API Calls
Android一直是最受欢迎的智能手机系统,市场上活跃着多个平台版本。为了管理应用与一个或多个平台版本的兼容性,Android允许应用在其清单文件中声明受支持的平台SDK版本。在本文中,我们对这种现代软件机制进行了系统的研究。我们的目标是衡量真实应用程序中声明的SDK版本(我们以后称之为DSDK版本)的当前做法,以及DSDK版本与其主机应用程序的API调用之间的一致性。为了成功分析22,687个流行应用程序的现代数据集(平均应用程序大小为25 MB),我们设计了一种可扩展的方法,该方法在Android字节码级别上运行,并采用轻量级字节码搜索进行应用程序分析。这种方法实现了适用于应用程序市场在线审查的良好性能,平均只需要大约5秒来处理应用程序。除了揭示DSDK在野外的特性外,我们的研究还定量测量了不适当的DSDK版本的两个副作用:(i)大约35%的应用程序低于最低DSDK版本并可能导致运行时崩溃,但幸运的是,只有11.3%的应用程序可能在Android 6.0及以上版本中崩溃;(ii)约2%的应用程序,由于未充分声明目标DSDK版本,可能会被远程代码执行利用,其中一半通过嵌入式第三方库调用易受攻击的API。这些结果表明了正确声明DSDK的重要性和困难,我们的工作可以帮助开发人员实现这一目标。
2020-08-31 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
AndroScanner: Automated Backend Vulnerability Detection for Android Applications
Georgia Institute of Technology(佐治亚理工学院)
本文提出AndroScanner,通过静态与动态分析结合的方法,检测Android应用后端漏洞,发现5个漏洞,包括一个未报告的零日漏洞。
2026-04-15 cs.CR cs.NI cs.SE
A Systematical Study on Application Performance Management Libraries for Apps
能够自动检测应用程序中的性能问题可以显着提高应用程序的质量,并对用户满意度产生积极影响。应用程序性能管理(APM)库用于定位应用程序的性能瓶颈、监控其运行时行为并识别潜在的安全风险。虽然应用程序开发人员一直在利用应用程序性能管理(APM)工具来捕获这些潜在的性能问题,但他们中的大多数人并不完全了解这些APM工具的内部原理及其对应用程序的影响。为了填补这一空白,在本文中,我们进行了第一次系统的研究,通过审查25个广泛使用的APMs的Android应用程序,并开发了一个名为APMHunter的框架,探索APMs在Android应用程序中的使用。使用APMHunter,我们对50万个Android应用程序进行了大规模的实证研究,以探索APM的使用模式,并发现APM的潜在误用。我们得到两个主要发现:1)一些APM仍然使用过时的权限和方法,这使得APM无法按预期执行; 2)不当使用APM可能导致隐私泄露。因此,我们的研究表明,APM供应商和开发人员都应该谨慎地设计和使用APM。
2021-03-21 cs.SE
A Large Scale Analysis of Android-Web Hybridization
许多Android应用程序通过WebView组件嵌入网页,并在Android中执行JavaScript代码。混合应用程序利用专用API加载资源并在WebView中呈现。此外,Android对象可以与JavaScript世界共享。然而,桥接Android和JavaScript世界的接口也可能招致严重的安全威胁:潜在不受信任的网页及其JavaScript可能会干扰Android环境及其对本地功能的访问。目前还没有一般性的分析来评估这种连接两个世界的混合应用程序的影响。为了理解混合应用程序的语义和效果,我们对混合API的使用进行了大规模的研究。我们分析并分类了7,500个随机选择的混合API的参数和196个来自Google Play商店的最流行的应用程序以及1000个恶意软件样本。我们的研究结果促进了对混合应用程序的普遍理解,以及对潜在程序分析和当前安全状况的影响:我们发现了数千个从Android到JavaScript的敏感数据流,其中绝大多数可能流向潜在的不可信代码。我们的分析确定了许多网页嵌入漏洞,我们示范性地利用了这些漏洞。此外,我们发现了大量的应用程序,其中潜在的不受信任的JavaScript代码可能会干扰(受信任的)Android对象,无论是在良性还是恶性应用程序中。
2020-08-05 cs.CR cs.PL cs.SE
Automating API Documentation with LLMs: A BERTopic Approach
École de Technologie Supérieure(高等技术学院)
针对官方API文档冗长复杂的问题,提出利用BERTopic从360万条Stack Overflow帖子中提取主题并生成摘要,用户研究显示该方法提升了开发者生产力。
2025-09-06 cs.LG cs.SE
Leveraging Unsupervised Learning to Summarize APIs Discussed in Stack Overflow
Carleton University(卡尔顿大学)
自动源代码摘要是一项任务,它生成有关方法和类的目的、用法和/或实现的摘要信息,以支持对这些代码实体的理解。针对代码摘要中的监督学习和无监督学习,已经提出了多种方法和技术,然而,它们大多集中于为一段代码生成摘要。此外,很少有作品利用非官方文档。本文提出了一种自动和新颖的方法来总结堆栈溢出中讨论的Android API方法,我们认为这是本研究中的非官方文档。我们的方法将API方法的名称作为输入,并基于该API方法的Stack Overflow讨论生成一个自然语言摘要。我们对16位Android开发人员进行了一项调查,以评估我们自动生成的摘要的质量,并将其与官方Android文档进行比较。我们的研究结果表明,虽然开发人员发现官方文档更有用的一般,生成的摘要也有竞争力,特别是提供实施细节,并可以用作指导开发人员在软件开发和维护任务的补充来源。
2021-11-27 cs.LG cs.SE
Learning API Usages from Bytecode: A Statistical Approach
在开发移动应用程序时,程序员严重依赖标准API框架和库。然而,由于移动系统API框架的快速变化性质、API使用的复杂性、文档的不足以及源代码示例的不可用,学习和使用这些API通常具有挑战性。在本文中,我们提出了一种新的方法来学习Android移动应用程序的字节码API的使用。我们的核心贡献包括:i)ARUS,API使用场景的基于图的表示; ii)HAPI,API使用的统计生成模型;以及iii)三种算法,用于从应用的字节码提取ARUS,基于从ARUS提取的方法调用序列训练HAPI,以及使用训练的HAPI在代码完成引擎中推荐方法调用。我们的实证评估表明,我们的方法可以学习有用的API使用模型,可以提供比基线n-gram模型更高准确度的建议。
2015-07-27 cs.SE
Mining API Interactions to Analyze Software Revisions for the Evolution of Energy Consumption
随着Android等移动平台的广泛使用和采用,出现了一个新的软件质量问题-能耗。然而,开发节能软件和应用程序需要知识和适当的工具来支持移动开发人员。为此,我们提出了一种方法来检查能源演变的软件版本的基础上,他们的API的相互作用。该方法源于这样一个假设,即API的利用率对运行时消耗的能量有直接影响。基于实证评估,我们展示了初步结果,即API交互可以作为一种灵活、轻量级且有效的方式来比较软件版本的能量演变。鉴于我们的初步结果,我们设想,在未来使用我们的方法,移动开发人员将能够获得的能源影响的变化,在软件开发生命周期的过程中的源代码的见解。
2021-03-21 cs.SE
Recover as It is Designed to Be: Recovering from Compatibility Mobile App Crashes by Reusing User Flows
提出 RecoFlow 框架,通过 API 和可视化工具编写用户流,自动重放 UI 操作并利用 Android OS 虚拟化技术以兼容模式运行,有效解决 Android 应用兼容性崩溃问题。
2024-06-03 cs.HC cs.OS cs.SE
FILO: FIx-LOcus Recommendation for Problems Caused by Android Framework Upgrade
应对操作系统的演变对于移动应用程序的开发人员来说是一项挑战,他们必须处理频繁的升级,其中通常包括底层API框架的向后不兼容更改。作为框架升级的结果,应用程序可能会在进化的环境中执行后显示错误行为和意外崩溃。识别应用程序中必须修改以在新发布的操作系统上正确执行的部分可能具有挑战性。虽然在应用程序与其执行环境之间的交互级别上可以看到不兼容性,但要更改的实际方法通常位于不直接与任何外部元素交互的类中。为了方便调试活动的问题所引入的向后不兼容升级的操作系统,本文提出了FILO,一种技术,可以建议的方法,必须改变一个单一的执行失败的分析,以实现修复。FILO还可以选择关键的有症状的异常事件,这些事件可以帮助开发人员了解故障原因并促进修复的实施。我们对Android升级引入的多个已知兼容性问题的评估表明,FILO可以有效地识别应用程序中的错误方法。
2019-11-21 cs.SE
Evaluating Large Language Models in detecting Secrets in Android Apps
本文提出基于 LLM 的 SecretLoc,利用上下文与结构线索检测 Android 应用硬编码机密,在基准和 5000 个 Google Play 应用中发现大量既有方法遗漏的新型机密。
2025-10-21 cs.CR cs.SE
Black-box Adversarial Example Attack towards FCG Based Android Malware Detection under Incomplete Feature Information
基于函数调用图(FCG)的Android恶意软件检测方法因其良好的性能而受到越来越多的关注。然而,这些方法容易受到对抗性示例(AE)的影响。在本文中,我们设计了一种新的黑盒AE攻击对FCG的恶意软件检测系统,称为BagAmmo。为了误导其目标系统,BagAmmo故意通过将“从未执行”的函数调用插入恶意软件代码来扰乱恶意软件的FCG功能。主要挑战有两方面。首先,恶意软件的功能不应该被对抗性扰动改变。第二,目标系统的信息(例如,图特征粒度和输出概率)不存在。为了保留恶意软件的功能,BagAmmo使用try-catch陷阱插入函数调用来扰乱恶意软件的FCG。在没有关于特征粒度和输出概率的知识的情况下,BagAmmo采用生成对抗网络(GAN)的架构,并利用多种群协同进化算法(即,Apoise)以产生所需的扰动。Apoise中的每个种群代表一个可能的特征粒度,当Apoise收敛时才能达到真正的特征粒度。通过对超过44 k个Android应用程序和32个目标模型的广泛实验,我们评估了BagAmmo的有效性,效率和弹性。BagAmmo在MaMaDroid、APIGandroid和GCN上的平均攻击成功率超过99.9%,在概念漂移和数据不平衡的场景下仍然表现良好。此外,BagAmmo在攻击成功率方面优于最先进的攻击SRL。
2023-03-15 cs.SE
Negative Results of Fusing Code and Documentation for Learning to Accurately Identify Sensitive Source and Sink Methods An Application to the Android Framework for Data Leak Detection
移动电话上的应用程序操纵各种数据,包括敏感数据,导致与隐私相关的担忧。最近的法规,如欧洲GDPR,为处理个人和敏感数据提供了规则,例如未经用户同意,不得泄露此类数据。研究人员提出了复杂的方法来跟踪移动应用程序中的敏感数据,所有这些方法都依赖于敏感源和接收器API方法的特定列表。数据流分析结果在很大程度上取决于这些列表的质量。以前的方法要么使用不完整的手写列表,很快就会过时,要么依赖于机器学习。然而,正如我们所展示的,后者会导致许多误报。本文介绍了CoDoC,这是一种旨在恢复机器学习方法以精确识别与隐私相关的源和汇API方法的工具。与以前的方法相比,CoDoC使用了深度学习技术,并将源代码与API方法的文档相结合。首先,我们提出了新的定义,澄清了敏感的源和汇方法的概念。其次,基于这些定义,我们构建了一个新的Android方法的基础事实,表示敏感的源,汇,和两者都没有(即,无源或汇)方法,这些方法将用于训练我们的分类器。我们评估了CoDoC,并表明在我们的验证数据集上,它在10倍交叉验证中实现了91%的精度,召回率和F1得分,在相同数据集上使用时优于最先进的SuSi。然而,类似于现有的工具,我们表明,在野外,即,对于看不见的数据,CoDoC性能很差,并产生许多假阳性结果。我们的研究结果,以及之前方法经过时间考验的结果表明,尽管实验室结果良好,但用于隐私等抽象概念的机器学习模型在实践中失…
2023-01-11 cs.CR cs.SE
Dealing with Variability in API Misuse Specification
API是开发人员访问外部定义的服务和工具的主要机制。然而,以前的研究表明,违反API合同的API滥用是普遍的。这种滥用可能会产生有害的后果,特别是在加密库的上下文中。已经提出了各种API误用检测器来解决这个问题,包括CogniCrypt,这是最通用的检测器之一,它使用CrySL语言来指定加密API使用合同。尽管如此,现有的检测API滥用的方法并不是为了系统的重用而设计的,忽略了一个事实,即不同版本的库、不同版本的平台以及不同的建议或指南可能会在API的正确使用中引入差异。然而,很少有人知道这种可变性如何影响正确的API使用规范。本文通过分析各种可变性来源对广泛使用的Java加密库(包括JCA,Bouncy Castle和Google Tink)的影响来研究这个问题。我们的调查结果表明,新版本的API和安全标准等可变性来源会显著影响规范。然后,我们使用从我们的调查中获得的见解来激励扩展名为MetaCrySL的CrySL语言,它建立在Meta编程概念的基础上。我们通过为一系列Android版本指定使用规则来评估MetaCrySL,并说明MetaCrySL可以对我们确定的所有形式的可变性进行建模,并大大减少了正确使用加密API的规范系列的大小
2021-05-17 cs.CR cs.SE
Contract Usage and Evolution in Android Mobile Applications
本文首次对Android应用中契约的使用与演化进行大规模实证研究,分析2,390个F-Droid应用,揭示契约采用率低、注解方式最流行、方法增长快于契约增长以及规范稳定性不足等问题,并提出标准化库与检测工具的建议。
2024-01-25 cs.LO cs.PL cs.SE
Automatic Qiskit Code Refactoring Using Large Language Models
LIFIA UNLP(UNLP LIFIA学院)
针对量子软件框架API快速迭代带来的代码兼容难题,提出基于大语言模型的Qiskit代码自动重构方法,通过提取官方文档迁移场景分类引导模型识别重构,验证了其有效性并提供相关工具与评估方法。
2025-06-17 cs.AI cs.ET cs.SE