Tip
这是一个注意力惊人的项目
从正在运行、已登录的 QQ NT 客户端进程内存中,提取 NTQQ 主数据库密钥 并可选地解密 QQ 的本地数据库。
本工具对 QQ 是只读的:只读取进程内存、只以只读方式打开登录锁、只复制数据库文件出来,绝不修改、注入或调试 QQ 进程。
比起常规的hook手段更方便 和 安全。 几乎不可能有被QQ检测到的风险
- 只登录一个 QQ 账号。工具会提取当前登录账号的密钥,多开会导致无法确定目标。
- QQ 保持登录、保持运行。密钥只存在于运行中的进程内存里,扫描时 QQ 必须活着。
- 若运行失败,尝试提权运行:
- Windows:在管理员终端中运行。
- Linux:用
sudo运行(或授予CAP_SYS_PTRACE)。若仍失败,检查/proc/sys/kernel/yama/ptrace_scope。 - macOS:用
sudo运行。若sudo仍失败,通常是目标启用了强化运行时(hardened runtime),该系统版本无法授予任务端口,此时无法扫描内存。
下载自己平台的release文件
# 默认:检测账号、扫描内存、打印验证过的 raw_key。
sudo ./x_key_scanner # macOS / Linux
x_key_scanner.exe # Windows cmd/powershell输出中的 raw_key (hex) 就是你要的主密钥。
加上 --output 会在打印密钥后,把 login.db 和该账号的数据库解密到指定目录:
sudo ./x_key_scanner --output ./plain解密数据库建议先关闭 QQ:运行中的 QQ 可能在读取过程中改写数据页,导致解密结果损坏。因此加了 --output 后:
- 若 QQ 仍在运行,工具会暂停等待——你关闭 QQ 后它会自动继续;
- 或直接按回车忽略警告,立即解密(QQ 仍运行,结果可能不完整)。
若不想要这个等待环节,加 --force 直接跳过、立即解密:
sudo ./x_key_scanner --output ./plain --force工具会自动定位 QQ 数据目录。若失败,用 --data-root 手动指定(指向包含各账号目录的文件夹,Windows 上通常是 .../Tencent Files):
./x_key_scanner --data-root "/path/to/QQ"也可以在工具提示时直接输入路径。
| 参数 | 说明 |
|---|---|
--output <目录> |
将 login.db 及账号数据库解密到该目录(不加则只打印密钥后停止)。 |
--data-root <目录> |
手动指定数据目录,跳过自动检测。 |
--force |
配合 --output:跳过“等待 QQ 退出”的暂停,立即解密。 |
每次发布都会提供以下 6 个目标的预编译二进制:
| 系统 | x86_64 | arm64 |
|---|---|---|
| Windows | x86_64-pc-windows-msvc |
aarch64-pc-windows-msvc |
| Linux | x86_64-unknown-linux-gnu |
aarch64-unknown-linux-gnu |
| macOS | x86_64-apple-darwin |
aarch64-apple-darwin |
cargo build --release