# 2026-05-07 ## maqt-backend 项目 ### 项目背景 - 逆向分析「码枪堂」(MaQiangTang v7.0.4) 游戏优化工具,自建后端替换原版 API - 软件为 Electron + React 架构,反编译产物在 Windows 机器上 - 无源码,只有编译后的 JS 文件,通过修改 minified JS 来替换 API URL ### 技术栈选型 - **后端**: Express + Prisma + PostgreSQL - **数据库**: PostgreSQL 16-alpine (Docker) - **镜像拉取**: 国内环境需用 DaoCloud 镜像 `docker.m.daocloud.io`(Docker Hub 超时) - **认证**: JWT (`maqt-jwt-secret-key-2026-change-in-production`) - **加密**: `maqt-encryption-key-32bytes!` ### 基础设施 - **后端地址**: `http://localhost:3001` (Mac 本机) - **Tailscale 访问**: Mac `100.105.17.52` → Windows `100.99.186.30` - **Windows 远程**: `nplx@100.99.186.30` (SSH 端口 22) - **后端项目路径**: `/Users/guchen/.openclaw/workspace/maqt-backend/` - **Docker 容器**: `maqt-postgres` → `postgresql://maqt:maqt123456@localhost:5432/maqt` - **后端运行**: `tsx watch src/index.ts`(开发模式,热重载) ### 数据库结构 Prisma Schema 11 张表:User, VipCard, Scheme, SchemeAob, FilterShare, Favorite, Like, Category, UserLog, DeviceBinding 种子数据:14 个分类 + 170 张 VIP 卡密 ### API 端点(已验证) - `POST /api/login` ✅ 正常(testuser/123456 返回 JWT) - `POST /api/register` - `POST /api/activate-vip` - `GET /api/session-status` - `GET /api/vip-status` ### 前端改动 - 替换 `CfKCgw5l.js` 中 API URL:`https://maqt.top` → `http://100.105.17.52:3001` - 变量 `Te` 定义为新地址 - 其他 JS 文件(`2rOwIVQn.js`, `BFRCeBkE.js`, `BShhLx-D.js`)无 API URL 引用 - 前端需在 Windows 上通过 `npm install electron --save-dev` 运行 ### 关键问题与解决 - **CORS 跨域**: Electron 使用 `file://` 协议,默认 CORS 拒绝 → 改为 `app.use(cors({ origin: true, credentials: true }))` 允许所有来源 - **网络错误**: 用户登录时遇到「网络错误」,已修复 CORS 配置(待验证) - **Windows 编码**: 启动脚本必须用 GBK 编码避免中文乱码 - **`$PLUGINSDIR`**: 是批处理变量名,不是真实文件夹名 ### 学习记录 - **Windows minified JS 替换**: 远程 SSH grep `findstr` 比 `Select-String` 更稳定 - **Electron 调试**: `Ctrl+Shift+I` / `F12` 打开开发者工具查看 Console - **tsx watch 模式**: 文件修改后自动重启,适合开发迭代 --- ## 桌面端复刻构想(待实施) ### 背景 反编译的代码高度混淆,修补困难。建议从零重写 Electron 桌面端,复用核心优化程序。 ### 可复用的核心资产 **原生程序(位于 `$PLUGINSDIR/app-64/resources/`):** | 文件 | 用途 | |------|------| | `MaqiangTangh1.exe` | 主优化程序 | | `MaqiangTangh2.exe` | 辅助优化程序 | | `MaqiangTangHardwareMonitor.exe` | 硬件监控 | | `nvidiaProfileInspector.exe` | NVIDIA 显卡配置 | | `apply-gamma-force.ps1` | Gamma 校准脚本 | | `restore-gamma-force.ps1` | Gamma 恢复脚本 | | `Delta Force.nip` | 游戏优化配置 | | `Argyll/` | 色彩管理工具 | | `icc-profiles/` | ICC 配置文件 | | `CustomSettingNames.xml` | 设置名称映射 | | `Reference.xml` | 参考配置 | | `bin/` | 其他工具 | | `xixi-haha-media/` | 媒体资源 | ### 新项目结构 ``` maqt-desktop/ ├── electron/ # 主进程(新写) │ ├── main.ts # 窗口管理、IPC │ ├── preload.ts # 干净的 electronAPI │ └── ipc/ # IPC 处理器 ├── src/ # React UI(新写) │ ├── App.tsx # 主应用 │ ├── components/ # macOS 风格组件 │ ├── pages/ # 各功能页面 │ └── hooks/ # 状态管理 ├── native/ # 复用原版程序 │ ├── MaqiangTangh1.exe │ ├── nvidiaProfileInspector.exe │ └── ... ├── package.json └── electron-builder.yml ``` ### 实施阶段 **阶段 1:基础框架 + UI(需新写)** - Electron 主进程:窗口管理、IPC、原生功能 - React 前端:macOS 风格桌面 UI、导航、Dock - preload 脚本:干净的 electronAPI 接口 - 登录/VIP 状态管理 **阶段 2+:功能对接(复用现有)** - 调用 `MaqiangTangh1.exe` 执行优化 - 调用 PowerShell 脚本做 Gamma 校准 - 使用现有的 maqt-backend API ### 技术栈 - **Electron**: 最新稳定版 - **React**: Vite + TypeScript - **UI**: Tailwind CSS + macOS 风格组件 - **状态管理**: Zustand 或 Jotai(轻量) - **IPC**: electronAPI 暴露原生功能 # 2026-05-07 ## maqt-backend 项目 ### 项目背景 - 逆向分析「码枪堂」(MaQiangTang v7.0.4) 游戏优化工具,自建后端替换原版 API - 软件为 Electron + React 架构,反编译产物在 Windows 机器上 - 无源码,只有编译后的 JS 文件,通过修改 minified JS 来替换 API URL ### 技术栈选型 - **后端**: Express + Prisma + PostgreSQL - **数据库**: PostgreSQL 16-alpine (Docker) - **镜像拉取**: 国内环境需用 DaoCloud 镜像 `docker.m.daocloud.io`(Docker Hub 超时) - **认证**: JWT (`maqt-jwt-secret-key-2026-change-in-production`) - **加密**: `maqt-encryption-key-32bytes!` ### 基础设施 - **后端地址**: `http://localhost:3001` (Mac 本机) - **Tailscale 访问**: Mac `100.105.17.52` → Windows `100.99.186.30` - **Windows 远程**: `nplx@100.99.186.30` (SSH 端口 22) - **后端项目路径**: `/Users/guchen/.openclaw/workspace/maqt-backend/` - **Docker 容器**: `maqt-postgres` → `postgresql://maqt:maqt123456@localhost:5432/maqt` - **后端运行**: `tsx watch src/index.ts`(开发模式,热重载) ### 数据库结构 Prisma Schema 11 张表:User, VipCard, Scheme, SchemeAob, FilterShare, Favorite, Like, Category, UserLog, DeviceBinding 种子数据:14 个分类 + 170 张 VIP 卡密 ### API 端点(已验证) - `POST /api/login` ✅ 正常(testuser/123456 返回 JWT) - `POST /api/register` - `POST /api/activate-vip` - `GET /api/session-status` - `GET /api/vip-status` ### 前端改动 - 替换 `CfKCgw5l.js` 中 API URL:`https://maqt.top` → `http://100.105.17.52:3001` - 变量 `Te` 定义为新地址 - 其他 JS 文件(`2rOwIVQn.js`, `BFRCeBkE.js`, `BShhLx-D.js`)无 API URL 引用 - 前端需在 Windows 上通过 `npm install electron --save-dev` 运行 ### 关键问题与解决 - **CORS 跨域**: Electron 使用 `file://` 协议,默认 CORS 拒绝 → 改为 `app.use(cors({ origin: true, credentials: true }))` 允许所有来源 - **网络错误**: 用户登录时遇到「网络错误」,已修复 CORS 配置(待验证) - **Windows 编码**: 启动脚本必须用 GBK 编码避免中文乱码 - **`$PLUGINSDIR`**: 是批处理变量名,不是真实文件夹名 ### 学习记录 - **Windows minified JS 替换**: 远程 SSH grep `findstr` 比 `Select-String` 更稳定 - **Electron 调试**: `Ctrl+Shift+I` / `F12` 打开开发者工具查看 Console - **tsx watch 模式**: 文件修改后自动重启,适合开发迭代 --- ## 桌面端复刻构想(待实施) ### 背景 反编译的代码高度混淆,修补困难。建议从零重写 Electron 桌面端,复用核心优化程序。 ### 可复用的核心资产 **原生程序(位于 `$PLUGINSDIR/app-64/resources/`):** | 文件 | 用途 | |------|------| | `MaqiangTangh1.exe` | 主优化程序 | | `MaqiangTangh2.exe` | 辅助优化程序 | | `MaqiangTangHardwareMonitor.exe` | 硬件监控 | | `nvidiaProfileInspector.exe` | NVIDIA 显卡配置 | | `apply-gamma-force.ps1` | Gamma 校准脚本 | | `restore-gamma-force.ps1` | Gamma 恢复脚本 | | `Delta Force.nip` | 游戏优化配置 | | `Argyll/` | 色彩管理工具 | | `icc-profiles/` | ICC 配置文件 | | `CustomSettingNames.xml` | 设置名称映射 | | `Reference.xml` | 参考配置 | | `bin/` | 其他工具 | | `xixi-haha-media/` | 媒体资源 | ### 新项目结构 ``` maqt-desktop/ ├── electron/ # 主进程(新写) │ ├── main.ts # 窗口管理、IPC │ ├── preload.ts # 干净的 electronAPI │ └── ipc/ # IPC 处理器 ├── src/ # React UI(新写) │ ├── App.tsx # 主应用 │ ├── components/ # macOS 风格组件 │ ├── pages/ # 各功能页面 │ └── hooks/ # 状态管理 ├── native/ # 复用原版程序 │ ├── MaqiangTangh1.exe │ ├── nvidiaProfileInspector.exe │ └── ... ├── package.json └── electron-builder.yml ``` ### 实施阶段 **阶段 1:基础框架 + UI(需新写)** - Electron 主进程:窗口管理、IPC、原生功能 - React 前端:macOS 风格桌面 UI、导航、Dock - preload 脚本:干净的 electronAPI 接口 - 登录/VIP 状态管理 **阶段 2+:功能对接(复用现有)** - 调用 `MaqiangTangh1.exe` 执行优化 - 调用 PowerShell 脚本做 Gamma 校准 - 使用现有的 maqt-backend API ### 技术栈 - **Electron**: 最新稳定版 - **React**: Vite + TypeScript - **UI**: Tailwind CSS + macOS 风格组件 - **状态管理**: Zustand 或 Jotai(轻量) - **IPC**: electronAPI 暴露原生功能 --- ## Dock 消失问题调试(进行中) ### 问题现象 解包后的 Electron 桌面应用与原版相比,首页 dock(底部导航栏)消失了。 ### 已确认的代码逻辑 - **dock 组件**:`$t` 只在 `Ee = "home" !== t` 时渲染(即不在首页时才显示) - **状态定义**:`[j,N]=ye.useState("home")`,j 是当前页面,N 是设置函数 - **桌面图标数组**:包含"快速优化"、"画面滤镜"、"滤镜社区"、"改枪方案"等 - **点击处理**:每个图标有 `action: ()=>A(targetId,{vipRequired:!0})` - **登录检查**:`We()` 返回 token,`qe()` 返回是否已登录 - **VIP 上下文**:`gt()` 返回 `{isVip, vipExpireAt, refreshVipStatus}` ### 问题根因(待验证) - dock 不显示是**设计如此**:只在离开首页后才显示 - 真正问题:点击桌面图标后导航不工作,状态停留在 "home",导致 dock 永远不显示 - 导航函数 `A` 的完整实现尚未找到 ### 关键标识 - localStorage 键名:`Lt="desktop_custom_shortcuts_v1"`, `Dt="desktop_builtin_shortcuts_v1"` - VIP 检查集合:`vt=new Set(["game-crosshair","xixi-haha","forbidden-force","resolution","one-click-optimization"])` - 桌面图标 ID:`"desktop-one-click-optimization"`, `"desktop-exposure"`, `"desktop-filter-community"`, `"desktop-weapon"` 等 ### 下一步 1. 搜索正确的导航函数 `A`(处理 VIP/登录检查后调用 `N` 设置页面) 2. 检查为何点击图标后状态不更新 3. 对比原版打包应用和 `npx electron .` 运行环境的差异 --- ## MaqiangTang 原生程序详细分析 ### 程序概览 | 程序 | 大小 | 技术栈 | 功能 | |------|------|--------|------| | **MaqiangTangh1.exe** | 364 KB | 未知(C++/Go?) | 主优化程序 | | **MaqiangTangh2.exe** | 180 KB | 未知 | 辅助优化程序 | | **MaqiangTangHardwareMonitor.exe** | 5.2 MB | 较大,完整功能 | 硬件监控服务 | | **MaqiangTangXiXiOverlay.exe** | 152 KB | **.NET 8.0 + WebView2** | 游戏内 Overlay UI | ### Electron 服务架构 ``` main.js (Electron 主进程) │ ├── SystemOptimizationService │ ├── optimizeItem() → 执行优化 │ └── restoreItem() → 恢复默认 │ ├── HardwareMonitorService │ └── 调用 MaqiangTangHardwareMonitor.exe │ ├── XiXiOverlayNativeService │ └── 调用 MaqiangTangXiXiOverlay.exe(游戏内 Overlay) │ └── ResolutionService / PowerManagementService 等 ``` ### 工具程序(tools/ 目录) | 文件 | 用途 | |------|------| | **VibranceBridge.exe** (62MB) | 颜色振动控制,有对应 vibranceDLL.dll | | **DVChange.exe** | 分辨率切换 | | **nvidiaProfileInspector.exe** | NVIDIA 配置管理(含 CustomSettingNames.xml) | | **gsynctoggle.exe** | G-Sync 开关控制 | | **dbInstaller.exe** | 驱动安装工具 | ### 色彩管理工具 | 工具 | 功能 | |------|------| | **Argyll/bin/iccvcgt.exe** | ICC VCGT 工具,处理显卡 Gamma Tag | | **bin/x64/dispwin.exe** | Argyll CMS 显示窗口控制 | ### 配置文件 | 文件 | 用途 | |------|------| | **CustomSettingNames.xml** | NVIDIA 设置名称映射(含 3D Vision 等隐藏设置) | | **Reference.xml** | 参考配置 | --- ## 学习记录 ### Windows 远程调试技巧 - `findstr` 比 PowerShell `Select-String` 更稳定,适合在混淆 JS 中搜索 - Electron DevTools:`Ctrl+Shift+I` / `F12` 打开 - 远程 SSH 执行批处理脚本需注意编码(GBK) ### React 混淆代码分析技巧 - 搜索特征字符串(如 `"home"`, `"one-click-optimization"`)定位关键代码 - useState 返回的解构模式:`[state, setState]` → 通常 `N` 是 setter - 条件渲染模式:`condition && ` 或三元表达式 ## 后端部署完成(2026-05-08 凌晨) ### Git 仓库 - 仓库名: mqsrv - 地址: https://git.gch3n.online/gch3n/mqsrv - 代码已推送(含 API 分析文档) ### 生产环境 - 服务器: gch3n.online(腾讯云) - Docker 容器:maqt-postgres (PostgreSQL 16) + maqt-backend (Node.js) - 内部端口: 3002 - 公网代理: https://gch3n.online/delta/* → localhost:3002 - Caddy 反向代理已配置 ### 字段差异修复 - User 模型字段: favoritesCount(非 favoritedCount), downloadsCount(非 uses) - req.user 类型: userId(非 id) - 预存 jwt.ts 类型错误已修复(expiresIn 兼容) ### 桌面端复刻规划 - 完整开发规划文档: maqt-desktop/DEVELOPMENT_PLAN.md - 涵盖: 页面线框图、组件树、API 清单、UI 设计规范、7 阶段开发计划 - 设计风格: 军工战术风 HUD ## Fiddler 抓包关键发现 ### 关键 POST Body 格式 - 注册: {"username","password","email"} - 登录: {"username","password","installId","deviceHash","platform","osVersion","appVersion"} - VIP 激活: {"cardKey":"xxx"} ### 原版注册端点和数据 - POST /api/register → 字段: username, password, email - 示例: {"username":"sixteenth","password":"@WT65eijh10","email":"sixteenth@126.com"}