GSoD 2023 项目构想

本页为社区译文;如有疑义,请以英文原文为准。 英文原文

Frida 文档更新规划

规划如何改进 Frida 文档

本文审视 Frida 文档的现状,并讨论如何加以改进。

文档与支持的当前状态

当前可用的文档

  1. Frida 官方文档(frida.re/docs) TODO:说明文档当前包含的内容。
  2. Learn Frida 和 Frida Handbook,作者为 Fernando Diaz。 该网站提供在线文档(HTML),书籍也可从同一网站和 NowSecure Academy 网站自由访问。
  3. 还有其他位置吗?

用户支持

  1. 用户可以在 Telegram 上获得 Frida 支持。目前有 2720 名成员,Frida OffTopic 有 457 名成员。
  2. 用户可以在 IRC/Freenode #frida 上获得 Frida 支持。频道中不到十人,可能因 Freenode 与 Libera 分裂而已不再活跃。
  3. Libera Chat 上有一个 #frida 频道。我访问时该频道有 13 名用户。frida.re 网站尚未列出此频道。
  4. github/frida/frida 上的 GitHub Issues。GitHub Issues 被(滥)用作求助渠道。
  5. Frida Discord 服务器。我上次访问时有 180 名成员、40 人在线(欧洲时区)。

更新 Frida 文档的理由

每个自由/开源项目都应该让人们知道并理解它的用途。这有助于增强项目的可持续性,也可能为项目带来更多贡献者。

维护项目最困难的部分是软件开发。文档维护和社区发展相对容易,因此不应被忽视。

本文档的受众类型

文档应服务于以下用户群体:

  1. 熟悉其他计算机相关任务,并希望进一步学习 Frida 的高级用户。 文档在解释 Frida 时应联系他们已有的知识。
  2. 已有 Frida 使用经验,希望把文档作为某项任务快速备忘的用户。 文档不应只采用屏幕录像,还应提供文本,以便轻松复制粘贴复杂命令。命令应该易于辨认。选择一行命令时,不应连 Unix 提示符一起选中。
  3. 计算机经验较少,但愿意投入精力学习的用户。 他们应该充分理解 Frida 的作用,能够成功配置 Frida,并至少完成一项简单任务。
  4. 对 Frida 的应用感兴趣,但会请其他人承担相关任务或工作的用户。 他们应该充分理解 Frida 的作用,并能粗略评估任务或工作的难度。

文档的目的

  • 避免支持渠道中反复出现相同问题。
  • 展示常见任务的最佳实践。
  • 涵盖在各种操作系统上首次成功安装的过程,包括故障排除,以及用于确认安装成功的简单验证任务。
  • 文档应能被搜索引擎访问。大多数用户会使用搜索引擎查找信息,常见搜索应将用户引导至文档。这些内容也会被 AI 搜索引擎收录。

新文档应包含的内容

  • 讨论文章:Frida 究竟是什么?可从“访问运行中软件的地址空间”这一角度说明,并以 Cheat Engine 为例。Cheat Engine 通过读取、写入或设置数据段来修改生命数或金币数量。较新版本的 Cheat Engine 还可以使用汇编进行代码注入!
  • 讨论文章:Frida 究竟是什么?使用 Greasemonkey/Tampermonkey/Violentmonkey 作直观解释。实际应采用仍在积极开发的 Violentmonkey。
  • 安装:提供 Windows/Linux/OSX 通用说明,并为各主要操作系统版本编写独立文章;包含故障排除章节和确认安装成功的验证示例。设置独立文章是为了便于搜索引擎收录并供新用户使用。
  • 参考文章:说明发布资源中的不同软件包分别是什么,参见 https://github.com/frida/frida/releases(例如 code devkit、gum devkit 等)。
  • Android:如何在已取得 root 权限的手机上配置 Frida。
  • Android:如何把 Gadget 注入 APK,以及最初如何从手机获取 APK。使用 apk.sh。
  • CodeShare:说明如何使用 https://codeshare.frida.re/,以及如何贡献内容。
  • 桌面端:展示如何在三大桌面平台上使用 Frida。
  • TODO

TODO

  • 用户在 https://github.com/frida/frida/issues 新建 Issue 时,提供相关文档。指导用户如何收集更完善的错误报告信息,并说明这里不是支持求助渠道。
  • 是否使用论坛软件?或许不应选择 Discord,因为它是封闭平台,搜索引擎无法访问。可以像 StackExchange 一样托管,或使用 Discourse 自行托管。

Google Season of Docs 组织提案

创建组织提案的一般说明。

我们采用 https://developers.google.com/season-of-docs/docs/org-proposal-template 中的模板。

提案正文如下:

更新 Frida 网站文档

关于贵组织

Frida(当前版本为 16.0.11,首次发布于 2013 年)是一套采用 wxWindows Library Licence 许可的动态代码插桩软件工具包。它会附加到运行中的软件,让你访问其执行流程和数据。你可以注入自己用 JavaScript 编写的代码,从而修改软件的运行方式。Frida 常用于计算机安全领域的逆向工程,例如 Google Project Zero 的这个案例。对于 Android 和 iOS 移动应用逆向工程,Frida 是首选工具。此外,Frida 还用于软件测试、调试和软件开发。目前 Frida 支持九种操作系统和三个体系结构系列(Intel、ARM、MIPS)。最后,Frida 是其领域中最受欢迎的软件。

关于贵项目

Frida 官方文档需要重构和扩充。它由高级用户编写,对于新用户而言过于简略。新用户最终会在项目的 GitHub Issues 中提问(每周约十个问题)。Telegram 频道有 2730 名用户,但很难在其中提供支持;即使有人给出答案,下一位提出相同问题的人也很难找到它。

项目需要创建摩擦日志,帮助识别知识缺口,并提供故障排除文档。用例应涵盖在多个受支持操作系统上配置 Frida,并提供验证配置正常工作的步骤。还应面向技术经验和背景不同的受众,提供解释 Frida 功能的讨论文档。

Frida 是安全研究人员使用的工具之一。此类开源安全工具已经形成一个生态,其中包括 AFL++(安全模糊测试)和 Ghidra(反编译)。安全研究人员会使用其中一种工具,或混合使用多种工具来完成任务。改进文档后,Frida 将能更好地支持这一生态,并发展自己的社区。

项目范围

Frida 项目将:

  • 审核现有文档,并为三大主要用例创建摩擦日志:在不同操作系统上配置 Frida、使用 Frida Gadget 配置 Frida,以及使用 Frida 执行常见任务。
  • 以摩擦日志为指南,理解文档中的缺口,并为主要用例创建更新后的文档。
  • 创建一份快速“速查表”,帮助新用户快速、有效地安装和使用 Frida。
  • 吸收文档测试人员(项目志愿者)和更广泛 Frida 社区的反馈。
  • 与发布团队合作更新 Frida 网站上的文档,并建立一个流程,使文档今后与工具更新保持同步。
  • 为 GitHub Issues 创建 Issue 模板:用户提出支持问题时,将其引导至官方文档和支持网站;同时添加错误报告和功能请求模板。
  • 检查 1300 个 GitHub Issues,对其中属于支持请求的问题添加适当标签,并将其作为文档输入。
  • 说明 GitHub Releases 中不同类型的资源及其使用方式。
  • 将 https://codeshare.frida.re/ 纳入 Frida 文档。

不属于本项目范围的工作:

  • 本项目不会制作有关为 Frida 贡献代码的详细文档。

我们已有一位很有实力的技术写作候选人,预计这项工作需要六个月完成。@simos 已承诺支持该项目。

衡量项目是否成功

新文档发布后,如果达到以下标准,我们将认为项目取得成功:

  • 覆盖 90% 的新用户问题。
  • 实际属于支持请求的 GitHub Issues 数量降至每周两个。

时间线

项目本身大约需要六个月完成。聘用技术作者后,我们将用一个月帮助其熟悉项目,随后开始审核并编制摩擦日志,最后几个月专注于创建文档。

日期 行动项目
五月 熟悉项目
六月至七月 审核现有文档并创建摩擦日志
八月至十月 创建文档
十一月 完成项目

项目预算

预算项目 预算(美元) 实际(美元) 备注
技术作者 $12,000 $12,000  
志愿者津贴(3 × $500) $1,500 $13,500 用于为项目密切提供信息和/或审阅交付成果的志愿者
志愿者 T 恤 $200 $13,700 为参与文档贡献的志愿者印制并寄送 T 恤
总计   $13,700