GSoC 2015 项目构想
让 Android 成为 Frida 的一等公民
2015 年更新:感谢 NowSecure,此项目现已在 Frida 中实现。
简要说明: 虽然 Frida 目前已经支持 Android,但仍缺少两个部分,导致为 Android 应用进行插桩时存在许多不便。我们需要改进以下方面:
-
打包:将 frida-server 打包,并将其作为系统守护进程运行,或提供一个配套的启动器应用。
-
集成:添加 Android 后端,用于自动发现 USB 设备和转发端口。这类似于 Frida 的 iOS“Fruity”后端;后者与 iTunes 的 usbmuxd 集成,实现设备发现和 TCP 端口转发自动化,用户只需插入设备,几秒钟后便可开始为移动应用插桩。 从实现角度看,可以选择与 adb 集成,或嵌入 adb 的核心。该实现将:
- 枚举已连接的 Android 设备,并在发生热插拔事件时通知应用程序。
- 按需自动转发端口;用户每次附加到新进程时,无需再执行容易出错的
adb forward。
预期成果: Android 软件包、设备发现和自动端口转发。
知识要求: Vala、C
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
支持运行在 ART 虚拟机中的 Android 应用
简要说明: Frida 目前支持 Dalvik。虽然其中大部分代码只是在与虚拟机实现的 JNI API 交互,但仍有一些部分与特定虚拟机有关。当前代码可在这里查看。要支持 ART 虚拟机,应只需改进此实现,加入 ART 特有的部分,再公开一套统一 API。届时,现有 Dalvik 模块将仅作为已弃用的别名保留,直至 Frida 的下一个主要版本。
预期成果: 支持 ART 虚拟机。
知识要求: JavaScript、C
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
将 Stalker 移植到 ARM
简要说明: Frida 的 Stalker 是一个基于动态重编译、功能非常强大的代码跟踪引擎。目前它仅支持 x86。将其移植到 ARM 后,便可在移动应用上使用 CryptoShark。
想进一步了解它在 x86 上的实现方式?请阅读这篇文章。
预期成果: Stalker 能够在 ARM 上跟踪代码。
知识要求: C、汇编语言
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
将 Stalker 移植到 ARM64
简要说明: Frida 的 Stalker 是一个基于动态重编译、功能非常强大的代码跟踪引擎。目前它仅支持 x86。将其移植到 ARM64 后,便可在移动应用上使用 CryptoShark。
想进一步了解它在 x86 上的实现方式?请阅读这篇文章。
预期成果: Stalker 能够在 ARM64 上跟踪代码。
知识要求: C、汇编语言
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
支持在 Android 上启动应用:从第一条指令开始插桩
2015 年更新:感谢 NowSecure,此项目现已在 Frida 中实现。
简要说明: 请勿将此项目与启动进程支持混淆,后者已经存在于 Frida 中。这里要添加的是:Zygote 为运行应用而派生自身后,从所执行的第一条指令开始为 Android 应用插桩。
预期成果: 用于启动 Android 应用的 API。
知识要求: Vala、C
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
为主流发行版提供软件包
简要说明: 我们应该让 Linux 用户更容易上手,同时通过进入尽可能多的软件生态来提高 Frida 的知名度。
预期成果: 由 Frida 的 buildbot 自动发布适用于主流发行版的软件包。
知识要求: Python
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
将 Frida 移植到 Windows Phone
简要说明: Frida 目前支持 Windows、macOS、Linux、iOS、Android 和 QNX,但遗憾的是尚不支持 Windows Phone。添加 WP 支持需要:
-
一个注入器,用于把 Frida 的共享库注入目标进程
-
进程启动支持
-
一个能与 CLR 运行时动态交互的 JavaScript 运行时,类似于 Frida JS 环境内置的 Dalvik JS 运行时。
前两项可能与当前的 Windows 后端相似,不过应该会简单得多。
预期成果: 支持为 Windows Phone 应用插桩。
知识要求: JavaScript、C、CLR
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>
向 JavaScript 公开回溯器和符号解析 API
2015 年更新:感谢 NowSecure,此项目现已在 Frida 中实现。
简要说明: frida-gum 中目前已有 Backtracer 和符号解析 API,但它们尚未向 JS 运行时公开。
不过,符号解析 API 并非简单公开现有 API 即可。底层实现还需要一些调整,才能在注入另一个进程后正常工作。Windows 实现目前依赖已加载的 DbgHelp.dll,这项约束可能无法接受。
预期成果: JavaScript 运行时可以使用回溯器和符号解析 API。
知识要求: JavaScript、C
可能的导师: Ole André Vadla Ravnås <oleavr@gmail.com>、Karl Trygve Kalleberg <karltk@gmail.com>