Closed Alpha · 预计 2099 年开放使用 · 永不开源

从 QQ 的内存里,
把消息捞出来。

LunaFox 是一套 QQ NT 内存消息捕获 → OneBot v11 协议端 框架。 不碰数据库、不改 QQ 文件,在 QQ 自己的线程上只读序列化参数, 落盘为任何语言都能消费的 JSONL 分段流,并提供身份库、 机器人框架、WebUI 总控制台与真实发送能力。

* 全称 Lunatic Fox。命名过程经过了充分的头脑风暴,共耗时 4 秒。 ** 「只读」指我们主观上只读;客观上发生了什么,以 QQ 的心情为准。 *** 「0 反检测」是精确值,不是夸大宣传。

wrk/stream/pid-28948/msg-000013.jsonl
// QQ 主进程内存 → 纯文本,落盘即协议
{
  "msgId": "7462910853010072318",
  "chatType": 2,  "peerUid": "u_24MLn8kZI...",
  "elements": [
    { "type": "text", "content": "在吗" },
    { "type": "at",   "uin": 1395837585 }
  ]
}
// 575 个单测表示它们很满意
8 MB 自动轮转 · 只 append
不 rename · 不问为什么
Numbers don't lie

用数字说话*

每一个数字都来自真实的开发过程,可以在仓库里逐一复核。 我们坚信数据驱动,正如我们坚信别的东西驱动不了。

0
单元测试 · 全绿
绿在作者本机,换台机器概不负责。
0
人工代码行数
100% AI 生成,包括这条脚注。
0
安全防护等级
安全预算已全数用于购买显示器。
0
反检测措施
0 反检测 = 必封号。我们把它写在小字里,这样它就是小字了。
0
统一消息字段
规范化后字段数量,多一个都不给。
0MB
分段轮转阈值
单段超过即切新文件,磁盘表示情绪稳定。
* 以上统计不含水分、不含虚荣指标、不含加班时长。 ** 「0 人工代码」为营销口径,实际情况是人工只负责按下回车键。 *** 「0 反检测」的完整读法是:必封号。我们没写在标题里,是为你的心情着想。
Capabilities

六个模块,各司其职

从内存捕获到协议输出的完整链路。每个模块都可以单独跑, 但它们更喜欢一起跑,显得热闹。

纯内存只读 Hook

在 QQ 主进程内 Hook N-API 调用,运行时遍历导入表定位 napi_call_function,只读序列化参数。不改 QQ 文件、不碰 QQdata。

「只读」是一项长期承诺,有效期至下次冲动为止。

文件即协议

hook ↔ Python 之间只交换 wrk/ 下的文件:JSONL 流、req/res 请求桥、心跳日志。进程崩溃可恢复,重启可续传。

没有网络协议,就没有网络协议的漏洞。这是减法安全。

多账号完全隔离

一个账号一个 pid、一套 stream / send / hook_config 目录。WebUI 发送强制按账号路由,多账号未选目标直接拒绝。

账号之间不会互相打扰,除非它们在同一个群里。

真实发送

主进程发送泵读取 req-*.json,调用 msgService 发送文本 / @ / 图片 / 文件,并写回结果。发送结果还支持 hook 流回读二次确认。

发送有风控风险。默认限流 30 条/分钟,请把刷屏的热情留给水群。

OneBot v11 协议端

仅 WebSocket:正向服务端 + 反向客户端,数组消息段,多账号多实例。发送、群信息、群成员、群禁言等 action 已落地。

不解析 CQ 码。CQ 码是上个时代的眼泪,我们的眼泪已经够用了。

WebUI 总控制台

Vue 3 + Element Plus:控制台 / 聊天调试 / Hook 管理 / OneBot 配置 / 机器人管理。一键启动、一键注入、一键停止,一键都不用打开命令行。

仅监听 127.0.0.1 且无鉴权。如果你把它暴露到公网,那是行为艺术。
Architecture

一条消息的旅程

从 QQ 内存里的一个回调,到你 OneBot 应用收到的事件,全程不超过四个环节。 每个环节都有心跳、自愈和日志,出问题时至少知道该怪谁。

QQ 主进程 · x64 wrapper.node (IAT) hook_cap11.dll wrk/stream/ msg / event / trace .jsonl 8MB 轮转 · append-only wrk/send/ req / res / claim 文件桥 请求可重试 · 结果可审计 Python 消费层 qqbot.stream qqbot.identity qqbot.normalize qqbot.bot / webui qqbot.onebot 仅标准库 · 无第三方依赖 OneBot v11 WS 正向 / 反向 WebUI 127.0.0.1:8766 Bot 插件 命令 / 权限 / 冷却 发送泵:wrk/send/pid-<pid>/req → QQ 主进程执行 → res 回执 + hook 流回读双确认
01

注入

唯一 DLL 副本 + 按 pid 的 ini 配置,提权代理远程线程加载。DLL 先缓存自身路径,再从 PEB 摘链隐身。

02

捕获

IAT 补丁进回调,只序列化 fire 事件,按 msgId+elements 判定消息,写入分段 JSONL,每 5 次心跳自检 IAT。

03

消费

身份库学习 uid↔uin↔昵称,规范化为 23 字段结构,喂给机器人、WebUI 与 OneBot 实例。

04

发送

Python 写 req 文件,QQ 主进程里的发送泵执行真实发送并写回 res。全程可重试、可审计。

深入架构文档 →
Comparison

和别的方案比一比

我们做了一次严谨的竞品分析,分析方法是认真列了一张表。

维度 LunaFox 直接读数据库 截图 + OCR
对 QQ 文件的改动 0 没有改动,但也没有边界感 0以及 0 条有用数据
版本脆弱性 中升级后跑 compat_check.py 再说话 高表结构一变就当场去世 不存在脆弱性,因为根本没在工作
消息完整度 文字/图片/表情/@/回复/ark/合并转发/撤回 看命 取决于显示器分辨率
部署难度 双击 launcher.cmd,一次 UAC 破解加密,祝你好运 需要先有一台电脑
封号风险 必封0 反检测的忠实兑现;诚实是我们最后的反检测 大概率没有但你会先输给加密 基本没有,也没什么用
开发者剩余发量 茂密因为 0 人工代码 稀疏 浓密,但精神状态存疑
FAQ

常见问题

诚实回答每一个问题,包括不该诚实的那些。

即将可用,预计 2099 年开放使用。当前处于 Closed Alpha 阶段,只对想象力开放。 「即将」是一个弹性很强的词,「2099」也是。两个词组合使用时弹性会相乘。
那肯定的。看看首页那行小字:0 反检测,意味着我们什么都没做。什么都不做,就是必封。 本框架默认不自动注入、不自动启动 QQ、发送自带限流,能帮你把「必」往后挪一挪; 但请只在自己的账号和设备上使用,不要刷屏,并且做好这个账号只是暂住的心理建设。 上一版答案是「不会」。后来我们把 0 反检测印在了首页,逻辑就闭环了。
当前已验证的是 9.9.33-51802(x64)。9.9.36 尚未验证,升级后请先运行 tools/compat_check.py, 它能定位「注入成功但其实没捕获」的静默假成功,FAIL 时会附修复建议。 我们的兼容性承诺是:我们会承诺努力。
不能。x86 版 QQ 可以正常登录,但 hook 完全不可用。注入前会通过 IsWow64Process2 明确识别并拒绝,不会浪费你的时间。 拒绝得很干脆,比大多数面试官都干脆。
不是。hook 没有 FreeLibrary / 卸载接口,框架停止只能让工作线程停止采集(写 wrk/hook_disabled 立即生效), 彻底移除内存里的 DLL 必须重启 QQ(launcher 菜单 [4] 或 [6])。 嫁出去的女儿泼出去的水,DLL 也一样。
指项目从 C hook 到 Vue 前端全部由 AI 生成,人工只负责提出需求、验收结果,以及在测试挂掉时表达情绪。 575 个单测全绿 = 575 个 AI 写的测试同意了 AI 写的代码。这很公平。
不会。整个框架没有任何遥测、统计上报和联网依赖;WebUI 只监听 127.0.0.1,Python 侧仅用标准库。所有数据都在你自己的 wrk/ 目录里。 我们不使用 Cookie,因为连数据库都不碰。

即将可用,敬请期待。

预计 2099 年 开放使用。 届时你将可以双击 launcher.cmd, 在那之前,你可以反复阅读本页,它的更新频率和开放进度保持一致。

本项目永不开源,但承诺永远免费——两者互为因果。
客服也是 AI,且它也在排队等 2099 年。