跳到主要内容
AI教程

安全审计 AI-Helper-Menu:架构、构建流程与安全检查

本教程分析 AI-Helper-Menu 声称的功能、技术、构建流程和浏览器集成方式,并重点介绍源代码审查与隔离测试。

AI-Helper-Menu 安全审计与构建检查
重要提示:AI-Helper-Menu 被描述为一套 Blooket 作弊工具。在实时会话中使用它可能造成不公平优势、违反 Blooket 的条款、导致账号被封禁,或使计算机面临风险。本教程介绍如何安全审查源代码并进行隔离评估,而不是将其部署到该服务中。

AI-Helper-Menu 声称可以做什么

AI-Helper-Menu 是一个零依赖的原生 JavaScript 项目,旨在将可拖动控制面板注入 Blooket 页面。根据其 README,它会挂钩 fetchWebSocket 等原生浏览器 API、监测页面变化并修改游戏状态。

该代码仓库将 2.0.0 版本描述为一次模块化重写,具备更快的注入速度、自适应游戏模式检测、题目缓存和玻璃拟态风格界面。这些只是代码仓库中的声明,不应视为经过独立验证的功能。

声称具备的功能

  • 自动答题:在可配置的延迟后选择答案,并缓存之前出现过的题目。
  • 金币与解锁控制:声称可以修改金币数值并解锁 blooks。
  • 速度控制:声称可对计时器、动画和循环应用 1× 至 5× 的倍速。
  • 奖励自动化:声称可以领取每日代币和奖励。
  • 游戏状态修改:声称可以避免惩罚,并提供针对特定模式的自动化功能。
  • 身份控制:声称可以在实时大厅中将可见用户名替换为“Anonymous”。
  • 时序模拟:引入随机延迟和偶尔的错误答案,以模仿人类行为。

README 还列出了针对 Gold Quest、Tower Defense、Factory、Racing、Café、Crypto Hack、Fishing 和 Battle Royale 的专门行为。它并未提供基准数据或测试证据来证明所有功能均可正常工作。

设置前了解相关风险

该项目与 Blooket 没有关联。其免责声明也承认,作弊可能违反平台规则,并可能导致账号受到处罚。“undetected”“anti-ban”或“god mode”等说法并非保证。

其安装方式还存在重大隐患。所宣传的 Windows 命令使用 bitsadminhttps://devcodee.com/api 下载 MSI 文件,然后通过 msiexec 静默运行。该域名不同于 GitHub 代码仓库的域名,而且此命令会隐藏正常的安装界面。

不要仅仅因为 README 将其称为“一键安装”,就运行远程下载的安装程序。请先检查其来源、出处、数字签名和加密哈希。README 并未提供该 MSI 的校验和或签名。

准备隔离的审查环境

进行分析时,请使用可随时丢弃的虚拟机、独立浏览器配置文件,或其他不包含个人账号、已保存密码、浏览器 Cookie、学校凭据及敏感文件的环境。检查期间不要登录 Blooket。

建议采取的预防措施

  1. GitHub 上打开该代码仓库,并审查其提交历史、分支、议题和许可证。
  2. 仅从已经检查过的代码仓库下载或克隆源代码。
  3. 避免使用 README 中的静默 MSI 安装程序,也不要运行从未经验证的域名获取的任何脚本。
  4. 执行 Node.js 命令前,审查软件包元数据和构建脚本。
  5. 使用非特权操作系统账号,而不是管理员账号。
  6. 确保测试浏览器配置文件中没有扩展程序和已登录会话。

构建前检查源代码

README 将 Node.js 列为构建工具,并称编译后的书签脚本会写入 dist/bookmarklet.js。它没有记录所有构建依赖项或源文件,因此继续操作前应检查代码仓库中的实际内容。

将代码仓库克隆到隔离环境中:

git clone https://github.com/bansheepatronmake/AI-Helper-Menu.git
cd AI-Helper-Menu

运行 npm 脚本前,请检查 package.json。尤其要注意 scripts、依赖项声明,以及 preinstallinstallpostinstallprepareprebuild 等生命周期钩子。

node --version
npm --version
npm run

最后一条命令会列出可用的 npm 脚本,但不会选择任何构建任务。请将输出与 README 中所述的 npm run build 命令进行比较。只有在确认该脚本具体执行哪些操作后,才能运行构建。

npm run build

根据 README,成功构建后会生成 dist/bookmarklet.js。请将该文件作为文本打开,不要执行它。

需要搜索的内容

  • fetchXMLHttpRequestWebSocket 或动态创建的元素所引用的网络目标地址。
  • 对 Cookie、本地存储、会话存储、令牌、用户名或浏览器指纹的收集行为。
  • 通过 evalFunction 或解码字符串进行的动态执行。
  • 意外下载、重定向,或对与该代码仓库及 Blooket 无关域名的调用。
  • window.fetchwindow.WebSocket 等浏览器全局对象的覆盖。
  • 无法追溯到可读源文件的压缩或混淆代码段。

比较源代码与构建输出

书签脚本通常会被压缩为以 javascript: 开头的单行代码。单纯的代码压缩并不能证明存在恶意行为,但会增加人工检查的难度。生成的文件应与经过审查的源代码和构建流程相对应。

一种实用的完整性验证流程如下:

  1. 记录正在审查的确切 Git 提交。
  2. 在干净的环境中构建项目。
  3. 保存生成文件的加密哈希。
  4. 在第二个干净环境中重复构建。
  5. 比较两次输出,并调查无法解释的差异。

例如,Windows 上的审查人员可以使用以下命令计算 SHA-256 哈希:

certutil -hashfile dist\bookmarklet.js SHA256

在 macOS 或 Linux 上,可以使用对应的审查命令:

shasum -a 256 dist/bookmarklet.js

哈希只能确认文件身份,不能证明文件安全。只有将其与基于可信且经过审查的源代码所生成的输出进行比较时,它才有意义。

了解文档中所述的加载方式

README 介绍了三种执行编译后脚本的方法:书签脚本、Tampermonkey 用户脚本和直接通过控制台注入。这三种方式都会授予代码访问当前页面及其 JavaScript 上下文的权限。

书签脚本

文档中的书签脚本方法要求将 dist/bookmarklet.js 中生成的单行代码复制到浏览器书签中。点击该书签会在当前页面上执行脚本。此方法虽然方便,但书签脚本能够读取或修改该页面上 JavaScript 可访问的数据。

Tampermonkey 用户脚本

README 建议将生成的代码包装为用户脚本,并将其配置为匹配 https://*.blooket.com/*。自动加载的用户脚本可以持续访问匹配的页面,因此匹配模式和更新来源都是重要的安全边界。

文档中的元数据将版本标识为 2.0.0,并使用 @grant none。此设置并不意味着脚本无害;它表示代码会在页面上下文中运行,而不使用具有特权的用户脚本 API。

浏览器控制台

控制台方法会移除 javascript: 前缀,然后通过开发者工具执行剩余代码。将未知代码粘贴到控制台中的风险尤其高,因为它会立即运行,并能够访问当前打开的页面。

不要在真实账号或实时课堂会话中测试任何一种加载方式。源代码审查无法保证不会发生账号处罚、服务中断或数据泄露。

基础安全分析示例

不要在 Blooket 上运行脚本,而应从静态检查开始。在生成的文件和源代码树中搜索浏览器钩子及外部地址。具体可用命令取决于操作系统和已安装的工具。

grep -R "WebSocket" .
grep -R "fetch" .
grep -R "localStorage" .
grep -R "https://" .

对于每个匹配项,请追踪数据来自何处、如何转换以及被发送到哪里。确认每个外部主机是否必要且已记录在文档中。对于编码后的 URL 或动态拼接的主机名,应将其视为需要深入审查的发现。

还可以检查构建输出中是否包含 README 提到的安装程序域名:

grep -R "devcodee.com" .

没有匹配结果并不能证明安全,因为字符串可能经过编码,或在运行时动态构建。

高级审查技巧

审计原生 API 钩子

README 明确声称会拦截 fetchWebSocket。请检查原始函数是否得到保留、哪些消息会被读取或修改,以及菜单关闭时是否会恢复这些钩子。即使没有恶意意图,实现不当的钩子也可能破坏页面行为。

审查状态修改边界

涉及金币、解锁、奖励或被拦截状态的声明,意味着代码可能试图修改第三方服务所使用的数据。应确定这些更改仅是本地视觉效果,还是代码会向远程系统提交修改后的值。未经授权,不要向生产服务发送测试流量。

检查自动更新

FAQ 称,当脚本 URL 指向原始分发文件时,Tampermonkey 用户可以自动更新。自动更新会引入供应链风险,因为之后的代码可能与最初审查的版本不同。分析时应固定到特定提交,而不是跟随可变分支。

检查发布来源

查找已签名的标签、可复现的发布产物、已公布的哈希和有文档记录的维护者。README 将 GitHub Actions 标注为计划功能,因此它并未声称已建立自动化测试和发布流水线。

区分界面声明与安全声明

可拖动的深色界面、键盘快捷键和 CSS 样式,可以与“anti-ban”行为分开评估。随机时序和偶尔答错并不能证明其能够规避服务器端检测。除非有透明的方法和经过授权的测试作为支持,否则应将抗检测声明视为未经验证。

README 中列出的键盘控制

项目文档将 F11 分配给菜单显示切换,将 Ctrl+Shift+A 分配给自动答题切换,将 Ctrl+Shift+C 分配给无限金币切换。文档还表示,可以通过拖动菜单标题来移动菜单。由于浏览器通常将 F11 保留为全屏模式快捷键,因此应检查这些控制键是否存在冲突。

许可证与负责任使用

该代码仓库声明其基于 MIT License 分发。开源许可证允许以规定方式使用、修改和分发代码,但并不授权干扰第三方平台或无视其条款。

README 本身建议不要在竞争场景中使用,并承认可能导致账号被封禁。因此,负责任的研究应保持在本地、隔离且经过授权的环境中。可以通过代码仓库的议题跟踪器报告安全问题,但不要公开凭据或其他敏感信息。

结论

AI-Helper-Menu 将自身描述为一个 JavaScript 书签脚本和用户脚本,可挂钩浏览器 API 并修改 Blooket 游戏行为。其零依赖架构和浏览器集成方式可以作为 JavaScript 项目进行研究,但其作弊用途、未经验证的抗检测声明,以及静默运行的第三方 MSI 安装程序都要求使用者保持谨慎。请在隔离环境中审查源代码,验证每一个构建步骤,避免使用真实账号,并且不要在未经授权的情况下将其部署到任何系统中。