Skip to content

Repository files navigation

QQNT_LiteLoader_Help — QQNT 9.9.33 插件化部署手册

适用环境:Windows x64 / QQNT 9.9.33-52230(wrapper.node 9.8.0.23961) 方案:QQNT.dll 文件校验绕过 + LiteLoaderQQNT 1.4.1(源码部署)+ QQNT-Toolbox(防撤回/本地贴纸) 部署日期:2026-08-25,已实测跑通(QQ 正常启动、插件加载、防撤回与贴纸模块就绪) 本仓库随附全套文件(加载器源码 + 插件安装包 + QQ 官方安装包),全程无需解压任何 zip


一、一键部署(严格按 0→1→2→3→4 顺序执行)

所有命令可直接复制到 PowerShell 执行;本仓库已部署完成时,此节仅用于换机/重装。

第 0 步:下载并安装 QQ 9.9.33

  • 64 位(本方案实测版本)https://qqdl.gtimg.cn/qqfile/QQNT/9.9.33/release/497e2f1f/QQ_9.9.33_260813_x64_01.exe
  • 32 位(备选,未实测)https://qqdl.gtimg.cn/qqfile/QQNT/9.9.33/release/497e2f1f/QQ_9.9.33_260813_x86_01.exe (文件确认存在于官方 CDN;但补丁/部署流程仅针对 x64 验证,32 位如需使用请先自行验证,见二.5)
  • 安装包已归档于本仓库 installers\ 目录(随仓库同步,可免下载
  • 安装完成后确认版本目录为 versions\9.9.33-52230

第 1 步:退出 QQ

Get-Process -Name "QQ*" -ErrorAction SilentlyContinue | Stop-Process -Force

第 2 步:打 QQNT.dll 补丁(跳过文件完整性校验)

pip install pefile capstone
python "E:\Github\QQNT_LiteLoader_Help\tools\AutoQQNTFileVerifyPatch-main\patch_qqnt.py" "I:\QQNT\versions\9.9.33-52230\QQNT.dll"
  • 特征码匹配恰好 1 处 = 成功;0 处或多处 = 版本不适用,勿强打(见二.3)
  • 自动备份 QQNT.dll.bak,可 --restore 还原
  • 脚本搜索约需 1 分钟,耐心等待

第 3 步:修改 QQ 入口(加载 LiteLoaderQQNT 源码)

加载器本体 = 本仓库 LiteLoaderQQNT\(源码形式,已含 store.js 修复与设置页定制)

$appDir = "I:\QQNT\versions\9.9.33-52230\resources\app"
$encNoBOM = New-Object System.Text.UTF8Encoding $false   # 必须无 BOM(见二.1)

New-Item -ItemType Directory -Force -Path "$appDir\app_launcher"
$content = "require(String.raw``E:\Github\QQNT_LiteLoader_Help\LiteLoaderQQNT``);"
[System.IO.File]::WriteAllText("$appDir\app_launcher\liteloader.h.js", $content, $encNoBOM)

Copy-Item "$appDir\package.json" "$appDir\package.json.ll.bak" -Force
$orig = Get-Content "$appDir\package.json" -Raw
$modified = $orig -replace '"main":\s*"[^"]*"', '"main": "./app_launcher/liteloader.h.js"'
[System.IO.File]::WriteAllText("$appDir\package.json", $modified, $encNoBOM)

第 4 步:启动 QQ 并安装插件

Start-Process "I:\QQNT\QQ.exe" -WorkingDirectory "I:\QQNT"
  1. QQ 出主窗口(8~10 个进程正常),设置页左侧出现「LiteLoaderQQNT」标签
  2. 验证:LiteLoaderQQNT\data\ 出现 qqnt_toolbox\ 目录 = 插件初始化成功
  3. 安装插件:设置页 → LiteLoaderQQNT → 插件 → 「安装新插件」→ 选择 plugins\ 下的 zip(如 QQNT-Toolbox-v0.10.12.zip)→ 列表即时刷新 → 重启 QQ 生效
  4. 卸载插件:设置页 → 插件 → 该插件「管理」→ 「卸载」按钮 → 确认后立即删除本体与数据

二、注意事项(踩坑记录)

2.1 BOM 坑(必读)

PowerShell 5.1 的 Set-Content -Encoding UTF8 会写 UTF-8 BOM,Node 的 JSON.parse 不认 → QQ 启动无窗口卡死(无报错)。必须用 [System.IO.File]::WriteAllText(..., $encNoBOM)。验证:文件前 3 字节不应是 EF BB BF

2.2 store.js 官方 bug(勿用官方 zip 覆盖源码)

官方 src\main\store.jsdirent.path bug(应为插件目录变量),会报: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined 本仓库已修复;若从官方重新下载源码需注意。

2.3 校验补丁特征码

  • 匹配 恰好 1 处 = 成功;0 处或多处 = 版本不适用,勿强打
  • 这是本地静态校验绕过(SHA256 哈希比对),不联网;与"封号检测"是两回事(见八)

2.4 插件冲突

  • 防撤回:QQNT-Toolbox「阻止撤回」为主力;xh321 qq-anti-recall 已停更,仅作备选,切勿同时启用(同类功能冲突)
  • 本地贴纸:Toolbox 与 lite-tools 同为文件夹方式,启用时只开其中一个

2.5 32 位(x86)未实测

官方 CDN 确认存在 32 位安装包(QQ_9.9.33_260813_x86_01.exe),但本方案的 QQNT.dll 补丁偏移(VA 0x180514D12 等)与 wrapper.node 均针对 x64 验证。32 位如需使用,请先自行验证补丁可用性,勿照搬 x64 步骤。

2.6 封号风险(摘要)

腾讯检测为三层组合、概率性触发。风险真实但非必然;建议小号测试、主号谨慎。切勿尝试反汇编/删除/patch TP 安全组件(详细见第八章)。

2.7 Git 同步说明

LiteLoaderQQNT\源码形式随仓库同步(免解压);.gitignore 仅排除用户本地运行状态:LiteLoaderQQNT\data\(插件配置、撤回记录、贴纸等,含个人路径)、LiteLoaderQQNT\plugins\(已安装的第三方插件)。installers\(QQ 安装包)与 plugins\*.zip(插件安装包)随仓库同步。


三、改动说明(本仓库对 LiteLoaderQQNT 的定制)

针对官方 1.4.1 终版的痛点做了两处体验优化 + 一处官方 bug 修复:

痛点/问题 官方行为 本仓库改动
安装插件后必须重启 QQ 才在列表显示 列表是启动时的静态快照,安装只解压文件 新增 refresh API(主进程重扫插件目录),安装成功自动重渲染列表;每次打开设置页也实时拉取最新数据(不再使用启动快照,关闭重开不丢变化);新装插件默认停用(在「管理」中启用后重启生效),缺依赖时弹窗提示(功能生效仍需重启,主进程注入在启动时加载)
插件没有"卸载"按钮 管理弹窗只有"删除本体/删除数据"两个开关,且要重启才真删 管理弹窗新增**「卸载」按钮**:确认后立即删除插件本体+数据、同步移除其左侧设置页面并刷新列表
插件扫描报错 store.js 使用 dirent.path(官方 bug) 已修复为插件目录变量

改动文件:

  • src/main/api.js — 新增 LiteLoader.api.plugin.refresh
  • src/preload/api.js — 桥接暴露 refresh
  • src/main/store.js — 修复 dirent.path + deletePlugin 支持立即删除(兼容原"重启后删除"流程)
  • src/renderer/settings/renderer.js — 列表可重渲染 + 安装后自动刷新 + 卸载按钮逻辑
  • src/renderer/settings/view.html — 管理弹窗新增「卸载」按钮

启用/停用插件仍按官方机制在下次启动时生效(架构限制,未改动)。


四、背景:为什么需要这套方案

新版 QQNT(9.9.2x 之后)收紧了文件完整性校验,并阉割了本地表情包编辑,导致传统方案全部失效:

传统方案 失效原因
RevokeMsgPatcher v2.1 补丁服务器只支持 wrapper.node 9.8.0.19000~19307(9.9.20 时代),9.9.33 的 9.8.0.23961 不支持(issue #1216 仍是 open)
NTQQAntiRecall 兼容表只测到 9.9.20-37625
LiteLoaderQQNT 官方 dbghelp.dll 绕过 官方项目已归档(1.4.1 终版);老式绕过 9.9.21+ 失效;新式 DLL 只在 TG 群分发

本方案通过静态补丁 QQNT.dll 跳过文件校验,在 9.9.33 上完整恢复插件能力,无需降级、无需 TG 群文件。


五、组件清单与项目地址

组件 版本 项目地址 用途
QQNT 9.9.33 安装包 9.9.33.52230 见第一章第 0 步 QQ 本体(x64/x86)
AutoQQNTFileVerifyPatch main (2026-08-08) https://github.com/771835/AutoQQNTFileVerifyPatch QQNT.dll 校验绕过补丁(Python,实测 9.9.32/9.9.33)
LiteLoaderQQNT 1.4.1(终版) https://github.com/LiteLoaderQQNT/LiteLoaderQQNT/releases 插件加载器
QQNT-Toolbox v0.10.12 (2026-08-18) https://github.com/MeiYongAI/QQNT-Toolbox/releases 防撤回 + 本地贴纸 + 工具箱(活跃维护)
lite-tools v4.0.3 (2026-08-08) https://github.com/xiyuesaves/lite-tools/releases 本地贴纸/表情 + 防撤回 + 界面调整(可选)
qwqnt-ipc-interceptor v1.2.1 (2025-11-09) https://github.com/qwqnt-community/qwqnt-ipc-interceptor/releases lite-tools 的前置框架插件
qq-anti-recall (xh321) 0.3.0 (2025-08-01 起停更) https://github.com/xh321/LiteLoaderQQNT-Anti-Recall/releases 备选防撤回(已停更,仅保留备用)

依赖:Python 3.x + pip install pefile capstone


六、改动详解(部署对 QQ 动了什么)

部署 = 修改了 QQ 安装目录(I:\QQNT)的 2 个文件 + 新增 1 个文件 + 外部放置加载器:

6.1 被修改的 QQ 文件

文件 改动 备份 还原方法
I:\QQNT\versions\9.9.33-52230\QQNT.dll 文件校验函数 call → jmp(VA 0x180514D12,e839c4ffff → e967010000),跳过完整性检查 QQNT.dll.bak(同目录) python patch_qqnt.py --restore "...\QQNT.dll"
I:\QQNT\versions\9.9.33-52230\resources\app\package.json "main"./application.asar/app_launcher/index.js 改为 ./app_launcher/liteloader.h.js package.json.ll.bak(同目录) 复制备份覆盖回去

6.2 新增的 QQ 文件

文件 内容
...\resources\app\app_launcher\liteloader.h.js require(String.rawE:\Github\QQNT_LiteLoader_Help\LiteLoaderQQNT); ——加载器入口

6.3 外部新增(不碰 QQ)

位置 内容
E:\Github\QQNT_LiteLoader_Help\LiteLoaderQQNT\ 加载器本体(源码随仓库同步,已含定制改动)
运行数据 自动创建于 LiteLoaderQQNT\data\(撤回记录、贴纸、插件配置,不随仓库同步)

6.4 QQNT.dll 补丁原理详解(跳过的到底是什么检测?)

跳过的检测 = QQNT 启动时的「文件完整性校验」(SHA256 哈希比对),纯本地静态校验,不联网。

原理(来自 QQNTFileVerifyPatch 原项目作者逆向笔记):

  1. QQ 启动时,用 SHA256 计算 QQNT.dllpackage.jsonlauncher.json 等关键文件哈希
  2. 与内置的官方哈希比对:if (memcmp(Buf1, Buf2a, Size)) —— 哈希一致返回 1(通过),不一致返回 0
  3. 若校验失败,WinMain 不加载 GUI,直接弹「文件损坏」拒绝启动(这就是为什么改了 package.json 后 QQ 会报损坏)
  4. 本补丁把校验函数入口的 call 校验函数 改成 jmp 跳过,让校验永远不执行,于是改过的 package.json、补丁过的 QQNT.dll 都能被接受
补丁前:
  0x180514D0A: 4c89f1        mov rcx, r14
  0x180514D12: e839c4ffff    call 0x180511150     ← SHA256 校验逻辑
  0x180514D19: 0f855f010000  jne 0x180514e7e
补丁后:
  0x180514D12: e967010000    jmp 0x180514e7e     ← 直接跳过校验

重要区分:这个校验 ≠ "检测你加载了什么插件"。它只是防文件篡改的本地静态检查。插件/内存层面的检测是另一套机制(见第八章「封号机制」)。

6.5 版本说明(安装包 vs 已装版本)

  • 官网安装包 QQ_9.9.33_260813_x64_01.exe 的版本信息 = 9.9.33.52230
  • 文件名里的 260813构建日期(2026-08-13),不是 build 号
  • 安装后 versions\9.9.33-52230 与安装包完全一致,没有偷偷更新
  • 补充:wrapper.node 文件版本 9.8.0.23961 与 QQ 文件夹版本 9.9.33-52230 是两套编号(前者是内部模块版本),不影响本方案

七、功能使用指南

7.1 防撤回(QQNT-Toolbox「阻止撤回」为主)

对比结论:现阶段装 QQNT-Toolbox 的防撤回就够了,不需要再装别的防撤回插件。

对比项 QQNT-Toolbox 阻止撤回 xh321 qq-anti-recall
最近更新 v0.10.12 (2026-08-18) 0.3.0(2025-08-01 后停更)
拦截撤回 ✅ 保留原消息+标记 ✅ 基础拦截
黑白名单(按好友/群)
拦截自己的撤回 可选
撤回记录持久化+独立查看器 ✅(搜索/预览/定位) 仅 DB 存储,无查看器
撤回图片恢复归档 ✅(CDN 回退拉图) 简单图片补全
群文件防撤回下载

xh321 版已停更一年多,仅保留在 plugins\qq-anti-recall.zip 作备选,切勿与 Toolbox 同时启用(同类功能冲突)。

使用:悬浮工具箱 / 设置页 →「阻止撤回」→ 启用。

7.2 本地贴纸/表情(Toolbox 与 lite-tools 都是文件夹方式,二选一启用)

重要说明:两个插件的"本地贴纸"都是「自定义文件夹 → 贴纸包 → 发送」模式,不是 QQ 原版表情包的 DB 存储集成(原版 DB 表情功能在新版 QQNT 已阉割,目前无插件能完整还原 DB 方式)。

A. QQNT-Toolbox「本地贴纸」(推荐先用)

  • 图片放 LiteLoaderQQNT\data\qqnt_toolbox\stickers\(png/jpg/gif/webp,按子文件夹分组)
  • 入口三选一:右键表情按钮 / 替换表情按钮 / 独立贴纸按钮;点击直发(Alt+单击)
  • 支持 Telegram 贴纸包下载(需 FFmpeg)

B. lite-tools「本地贴纸」(默认未安装;需要时先装前置 plugins\ipc_interceptor-v1.2.1.zip,再装 plugins\lite-tools.v4.0.3.zip

  • 同样文件夹方式:设置页选择贴纸目录、拖拽排序贴纸集、以图片形式发送、调整面板尺寸
  • 额外:解除商城表情限制、自定义背景、界面精简、阻止撤回(含"重定向撤回图片保存路径")
  • ⚠️ 作者实测版本 42086/49599(52230 未测,本次部署已确认加载正常,功能请按实际使用为准)

两个插件同类功能默认全关,启用时只开其中一个的贴纸/防撤回,避免冲突。

7.3 关于"图片不是原图 / 撤回后只有缓存"的问题

QQ 的图片机制:收到图片消息默认只下载缩略图缓存,原图要点开才下载。撤回时如果原图没下载过:

  • Toolbox 已内置解决方案:撤回时优先尝试 QQ 原生下载,并通过腾讯图片 CDN + rkeyrkey.furrycloud.top 服务)回退拉取原图,归档到插件数据目录,恢复后的图片可在撤回查看器中打开原图/原文件。
  • 天花板限制:如果 QQ 完全离线、消息压根没到客户端(人不在线),任何防撤回都无能为力——客户端方案只能救"已收到"的消息。建议保持 QQ 在线接收。
  • 专门的"自动下载原图"插件(qqnt-msg-autodownload)已废弃不可用;lite-tools 的"重定向撤回图片保存路径"(v5 开发版)可作补充。

八、封号机制与风险(回答"他怎么知道我加载了什么")

腾讯的检测是三层组合,机制不透明、概率性触发

  1. 本地文件完整性校验(已被本方案绕过):SHA256 哈希比对关键文件(见第六章),纯本地、不联网。失败=拒绝启动。
  2. 运行时行为/内存检测(TP 安全组件):QQ 内置安全组件(TSSafeEdit.datTPDataTransport.dll 等)会检测进程模块列表、hook 特征(Detours/MinHook 痕迹)、异常调用等。这就是为什么老式 dbghelp.dll 劫持/DLL 注入"可能被标记",而 LiteLoaderQQNT 的 JS 层 hook 相对隐蔽。检测结果可能经安全通道回传,也可能直接表现为登录后闪退/"文件损坏"提示。
  3. 服务端风控:异常行为模式(消息频率、设备指纹、自动回复特征等)触发,封号/封三天/限制社交由服务端决定。

为什么群友在用没事? 检测是触发式/概率性的,不是"用了必封"。触发条件不透明(可能与插件特征强度、账号价值、行为模式、是否被举报有关)。参考案例:RevokeMsgPatcher #892(安装后警告冻结)、LiteLoaderQQNT #864(封号警告,导致 v2.1 移除安装器)、#1063(封三天)、#1051(限制社交)。

⚠️ 重要警示:切勿尝试"干掉" TP 安全组件

看到上面提到 TP 组件(TSSafeEdit.datTPDataTransport.dll 等)会做运行时检测,千万不要试图去反汇编、删除、patch 或禁用它们!原因:

  1. 动了必出事:TP 深度集成在 QQ 启动与运行流程中,删除/破坏 = QQ 拒绝运行或闪退;而 TP 缺失本身就是一个比加载插件显眼一百倍的异常信号,等于主动告诉腾讯"我有问题"。
  2. 猫鼠游戏打不赢:TP 随 QQ 版本更新,今天 patch 明天失效,永远在追。
  3. 法律风险:绕过/破坏安全组件违反反规避条款,比用插件严重得多。
  4. 根本没必要:本方案的隐蔽性已经足够——LiteLoaderQQNT 是 JS 层 hook(代理 Electron 模块),不注入任何额外 DLL,TP 扫进程模块列表时看不到"可疑外挂 DLL";最容易暴露的静态文件痕迹(改过的 package.json / QQNT.dll)已被本方案的文件校验补丁处理掉。

正确姿势:只要不封号,TP 爱怎么检测、怎么汇报随它去——检测和汇报本身不产生风险,风控处罚(封号/冻结/限制)才是风险,而那取决于行为特征而非"被检测到"。保持低调使用(别开自动回复等行为特征明显的功能)、QQ 更新后重打补丁,就是最优策略。

结论:风险真实存在但非必然。建议小号测试、主号谨慎,别在 QQ 官方渠道露插件痕迹,更别去碰 TP


九、完整还原官方状态

  • python patch_qqnt.py --restore "…\QQNT.dll"
  • package.json.ll.bak 覆盖回去
  • 删除 app_launcher\liteloader.h.js
  • 即完全还原为官方原版

十、项目文件结构

📦 Git 同步策略LiteLoaderQQNT/源码形式随仓库同步(免解压)。.gitignore 只排除用户本地运行状态LiteLoaderQQNT/data/(插件配置、撤回记录、贴纸等,含个人路径)、LiteLoaderQQNT/plugins/(已安装的第三方插件)。installers\(QQ 安装包)与 plugins\*.zip(插件安装包)随仓库同步。

拿到项目即可直接用:clone 仓库后(无需解压任何 zip),按第一章第 0~4 步操作,再用设置页「安装新插件」按钮安装 plugins\ 下的 zip 即可。

E:\Github\QQNT_LiteLoader_Help\
├── README.md                              ← 本手册(部署/注意事项/改动说明)
├── .gitignore                             ← 只排除 data/ plugins/ 等本地运行状态
├── installers\                            ← QQ 官方安装包(随仓库同步)
│   └── QQ_9.9.33_260813_x64_01.exe        ← 官方安装包(9.9.33.52230,64 位)
├── tools\
│   ├── AutoQQNTFileVerifyPatch.zip        ← 补丁工具原包
│   └── AutoQQNTFileVerifyPatch-main\      ← 补丁工具源码(patch_qqnt.py)
├── plugins\                               ← 插件原包归档(设置页「安装新插件」用)
│   ├── QQNT-Toolbox-v0.10.12.zip
│   ├── lite-tools.v4.0.3.zip
│   ├── ipc_interceptor-v1.2.1.zip
│   └── qq-anti-recall.zip                 ← 备选(已停更)
└── LiteLoaderQQNT\                        ← 加载器本体(源码随仓库同步)
    ├── src\main\store.js                  ← 已修复 dirent.path bug + 支持立即卸载
    ├── src\renderer\settings\             ← 定制:安装后即时刷新 + 卸载按钮
    ├── data\                              ← 运行数据(.gitignore 忽略,不同步)
    └── plugins\                           ← 已安装插件(.gitignore 忽略,不同步)
        └── QQNT-Toolbox\                  ← 防撤回 + 本地贴纸(主力,经「安装新插件」安装)

换机/重装流程:装 QQ 9.9.33(installers\ 内或第一章第 0 步链接)→ clone/拷贝仓库(含 LiteLoaderQQNT 源码,无需解压)→ 第 0~4 步 → 设置页「安装新插件」安装 plugins\*.zip → 完成。

About

QQ 本地贴纸表情包 可落地方案

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages