# 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 && <Component />` 或三元表达式

## 后端部署完成（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"}
