GSoD 2023 项目构想
Frida 文档更新规划
规划如何改进 Frida 文档
本文审视 Frida 文档的现状,并讨论如何加以改进。
文档与支持的当前状态
当前可用的文档
- Frida 官方文档(frida.re/docs) TODO:说明文档当前包含的内容。
- Learn Frida 和 Frida Handbook,作者为 Fernando Diaz。 该网站提供在线文档(HTML),书籍也可从同一网站和 NowSecure Academy 网站自由访问。
- 还有其他位置吗?
用户支持
- 用户可以在 Telegram 上获得 Frida 支持。目前有 2720 名成员,Frida OffTopic 有 457 名成员。
- 用户可以在 IRC/Freenode #frida 上获得 Frida 支持。频道中不到十人,可能因 Freenode 与 Libera 分裂而已不再活跃。
- Libera Chat 上有一个 #frida 频道。我访问时该频道有 13 名用户。frida.re 网站尚未列出此频道。
- github/frida/frida 上的 GitHub Issues。GitHub Issues 被(滥)用作求助渠道。
- Frida Discord 服务器。我上次访问时有 180 名成员、40 人在线(欧洲时区)。
更新 Frida 文档的理由
每个自由/开源项目都应该让人们知道并理解它的用途。这有助于增强项目的可持续性,也可能为项目带来更多贡献者。
维护项目最困难的部分是软件开发。文档维护和社区发展相对容易,因此不应被忽视。
本文档的受众类型
文档应服务于以下用户群体:
- 熟悉其他计算机相关任务,并希望进一步学习 Frida 的高级用户。 文档在解释 Frida 时应联系他们已有的知识。
- 已有 Frida 使用经验,希望把文档作为某项任务快速备忘的用户。 文档不应只采用屏幕录像,还应提供文本,以便轻松复制粘贴复杂命令。命令应该易于辨认。选择一行命令时,不应连 Unix 提示符一起选中。
- 计算机经验较少,但愿意投入精力学习的用户。 他们应该充分理解 Frida 的作用,能够成功配置 Frida,并至少完成一项简单任务。
- 对 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 |