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>