← 最新论文
💻 computer science

Assessing the Forensic Viability of Android Memory Analysis Across Production Builds: A Cross-Version Study of Security Hardening and Structure Preservation

本研究评估了从 Android 8 到 15 的生产版本中 Android 内存分析的取证可行性,结果表明,尽管 Google 的安全加固措施已剥离了 libart.so 中的大部分静态符号和源码引用,但其底层的内存架构在结构上仍然保持完整,使得取证工具仍能利用版本匹配的开发构建版本来定位运行时入口点并解析数据结构。

原作者: Jayasimha Nannapanen, Sneha Sudhakaran

发布于 2026-07-16
📖 1 分钟阅读☕ 轻松阅读

原作者: Jayasimha Nannapanen, Sneha Sudhakaran

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你的智能手机是一座繁忙且戒备森严的城市。在这座城市里,你的应用程序就像忙碌的商店,而 RAM(内存)则是所有当前交易发生的临时工作空间。当你发送一条秘密信息或登录账户时,数据会在这个工作空间中存在片刻,然后被删除或移动到硬盘中。数字取证是一门潜入这个工作空间,在证据消失前将其抓取的艺术。但问题在于:这座城市的建筑师们(谷歌)一直在加高围墙并拆除路标。在过去,调查人员可以带着地图(调试符号)走进去,地图会准确告诉他们“秘密信息”商店的具体位置。现在,这座城市已经拆除了这些路标以增加黑客入侵的难度,导致调查人员只能盯着一面白墙,怀疑那些商店是否还在。

这篇论文是一个关于那些商店在路标消失后是否依然屹立的故事。研究人员提出了这样一个问题:“谷歌虽然从我们购买的手机中移除了地图,但他们也移动了建筑物吗?”他们将 Android 系统的“蓝图”版本(开发者使用的、拥有完整地图的版本)与“生产”版本(普通用户使用的、所有路标都被拆除的版本)进行了对比。他们发现,虽然路标确实消失了,但建筑物本身并没有移动。内存的布局仍然保持不变;它只是不再带有名称标签了。这意味着,通过一些额外的侦查工作——利用一个与该城市版本相匹配的蓝图——调查人员仍然可以在即使是最现代、防护最严密的手机上找到证据。

伟大的地图劫案

多年来,数字取证专家一直依靠一个名为 libart.so 的库文件来导航 Android 手机混乱的内存。把这个文件想象成一座巨大图书馆的总目录。在其中,它拥有一份完整的清单,列出了每一本书、每一个书架,以及每一段文字的具体位置。这些清单被称为“符号”。如果调查人员想要寻找特定的证据,比如一段解密的聊天信息,他们只需在目录中查找“聊天”符号,然后,噗的一声,工具就知道该去内存中的哪里寻找了。

但谷歌为了让手机更加安全,开始了一场“加固”运动。他们意识到,如果黑客拥有完整的目录,就能轻易找到系统中的弱点进行破坏。因此,他们开始从实际出货的手机中剥离这些目录。他们拿走了静态符号(主清单)、源文件引用(作者的笔记)以及大部分动态符号。这就像是把一个图书馆的目录卡片全部撤走,只在门上留下几个必要的标签,以便图书管理员仍能开门,但隐藏了其他一切。

大问题在于:他们只是移除了标签,还是也重新排列了书架?如果书架移动了,那么即使调查人员拥有旧版本图书馆的蓝图,也毫无用处。

侦探工作

为了解决这个问题,研究人员扮演了“穿越时空的图书管理员”的角色。他们获取了两个版本的 Android 系统:

  1. “开发者”构建版本: 一个拥有完整、未剥离目录的版本(即蓝图)。
  2. “生产”构建版本: 实际运行在 Google Pixel 7 手机上的版本(即被剥离后的现实)。

他们首先观察了数字。在旧的 Android 8 版本中,该库拥有 20,495 个静态符号。在新的 Android 15 版本中,这个数字降到了 。源文件引用(告知你某个函数来自哪个代码文件的信息)也完全消失了。动态符号(为了让手机正常运行而必须保留的少量标签)下降了约 60%,从 6,577 降至 2,614

这看起来像是取证工作的灾难。但随后,他们观察得更深。他们检查了内存的实际结构——即“书架”和“书籍”本身。他们对比了 Android 8 和 Android 15 手机的内存映射。他们发现核心结构,如“堆”(应用程序存储数据的地方)和“垃圾回收器”(清理旧数据的程序),依然存在。它们只是稍微更改了名称。例如,Android 8 中的一个内存空间 dalvik-allocspace main rosalloc 在 Android 15 中变成了 dalvik-allocspace non moving。建筑物移动了,但地址没变。

“魔法蓝图”技巧

这篇论文中最令人兴奋的部分是他们施展的“魔术”。既然手机本身没有地图,研究人员决定向一个匹配的版本“借”一张地图。

他们提取了 Android 15 的“开发者”构建版本(该版本仍保留完整地图),并利用它来找到特定结构的精确偏移量(以字节为单位的距离)。然后,他们转向那部没有任何地图的“生产”版 Pixel 7 手机,并应用了相同的距离。

过程如下:

  1. 他们利用一个为了让手机正常运行而必须保留的单一符号,找到了“运行时”(Runtime)对象(手机内存的主要管理器)。
  2. 他们使用“开发者”地图来寻找“堆”(数据存储区)在该运行时对象内部的具体位置。
  3. 他们将计算出的距离应用到“生产”版手机上。
  4. 结果: 完美运行。他们计算出的指针指向了真实手机上完全相同的有效内存地址。

他们在“线程列表”(Thread List)和“顶针指针空间”(Bump Pointer Space)上也重复了这一过程,每一次,来自开发者版本的蓝图都成功引导他们找到了生产版手机上的正确位置。

这对未来意味着什么

论文表明,虽然取证工作的“简单模式”已经结束,但游戏并未结束。安全加固并没有破坏内存架构;它只是隐藏了标签。

  • 好消息: 内存的内部布局得到了保留。如果你有一个与你正在调查的手机版本完全匹配的“开发者”构建版本,你可以利用它的地图来导航这个被剥离的手机。
  • 坏消息: 你不能直接使用旧的地图。论文指出,结构偏移量会在不同的 Android 版本之间发生变化(例如 Android 14 与 15 之间)。因此,你不能用 Android 8 的地图来解决 Android 15 的案件。你需要一个版本匹配的蓝图。
  • 代价: 这个过程现在变得更加手动化。调查人员不能仅仅运行一个说“寻找证据”的工具。他们必须找到手机的精确版本,提取匹配的开发者构建版本,提取特定的距离,然后手动应用它们。

研究人员还注意到,他们的测试仅限于 Google Pixel 设备。他们不确定其他手机制造商(如三星或小米)是否也采取了同样的做法,或者是否完全重新排列了书架。但在他们测试的设备上,结论是明确的:城市依然在那里,建筑物并未移动,但你需要自带地图才能找到路。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →