paperbot · PL 论文追踪

全部论文 待读 收藏

P2 JuCify

JuCify:统一 Android 应用中原生代码与字节码的代码模型
ICSE Proceedings of the 44th International Conference on Software Engineering2022匹配度 3/10 · 论文提出合并Android原生代码与字节码调用图的静态分析模型,属于传统程序分析与安全领域,但未涉及LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户核心的PL与AI交叉方向匹配度较低。引用 72 inbox
Jordan Samhi, Jun Gao, Nadia Daoudi, Pierre Graux, Henri Hoyez, Xiaoyu Sun, Kevin Allix, Tegawendé F. Bissyandé, Jacques Klein
crossref: 2026-09-12dblp: 2026-09-12arxiv: 2026-09-12

AI 速览

一句话:提出 JuCify,将 Android 原生代码与字节码调用图合并为统一模型,支撑静态分析发现跨原生代码的敏感行为与数据泄露。

Android 应用常通过 JNI 让 Dex 字节码与原生代码交互,但现有静态分析多忽略原生代码,导致可执行代码视图不完整。JuCify 旨在构建 Android 应用中所有代码的统一模型:提取原生代码与字节码的调用图,并在 Soot 中间表示上融合为统一调用图,使通用 Android 分析框架可直接使用。作者通过良性应用与恶意软件的实证研究发现,若缺少统一模型,大量由原生代码调用的 Java 方法在调用图中不可达。借助 JuCify,静态分析器能揭示恶意软件利用原生代码隐藏支付库或 Android 框架敏感代码调用,并提升对经原生代码数据泄露检测的精度与召回率,还能发现穿过原生代码的敏感数据泄露。

问题
现有 Android 静态分析常忽略 JNI 原生代码,导致调用图不完整,无法覆盖经原生代码执行的敏感或恶意行为。
方法
提取原生代码与 Dex 字节码的调用图,并在 Soot 内部中间表示上合并为统一模型,供通用 Android 分析框架使用。
评估
在良性应用与恶意软件上实证评估,展示未统一模型时大量 Java 方法不可达;使用 JuCify 后工具能发现经原生代码隐藏的支付/敏感调用,并提高数据泄露检测精度与召回率。
原文摘要(Abstract)

Native code is now commonplace within Android app packages where it co-exists and interacts with Dex bytecode through the Java Native Interface to deliver rich app functionalities. Yet, state-of-the-art static analysis approaches have mostly overlooked the presence of such native code, which, however, may implement some key sensitive, or even malicious, parts of the app behavior. This limitation of the state of the art is a severe threat to validity in a large range of static analyses that do not have a complete view of the executable code in apps. To address this issue, we propose a new advance in the ambitious research direction of building a unified model of all code in Android apps. The JUCIFY approach presented in this paper is a significant step towards such a model, where we extract and merge call graphs of native code and bytecode to make the final model readily-usable by a common Android analysis framework: in our implementation, JUCIFY builds on the Soot internal intermediate representation. We performed empirical investigations to highlight how, without the unified model, a significant amount of Java methods called from the native code are “unreachable” in apps' callgraphs, both in goodware and malware. Using JUCIFY, we were able to enable static analyzers to reveal cases where malware relied on native code to hide invocation of payment library code or of other sensitive code in the Android framework. Additionally, JUCIFY'S model enables state-of-the-art tools to achieve better precision and recall in detecting data leaks through native code. Finally, we show that by using JUCIFY we can find sensitive data leaks that pass through native code.

链接与引用

DOI 原文 · arXiv · PDF(开放获取) · DBLP

BibTeX
@inproceedings{Samhi0DGHSABK22,
  title = {JuCify},
  author = {Jordan Samhi and Jun Gao and Nadia Daoudi and Pierre Graux and Henri Hoyez and Xiaoyu Sun and Kevin Allix and Tegawendé F. Bissyandé and Jacques Klein},
  booktitle = {ICSE},
  year = {2022},
  doi = {10.1145/3510003.3512766}
}