你现在是一个精通 Tauri (Rust 后端 + Vue3/React 前端) 和 Windows 底层 API 的专家开发者。
我需要你帮我编写一个基于 Tauri 的游戏修改器。这个修改器需要能够解析 Cheat Engine 的 CT 文件（XML格式），并在前端展示修改器列表，后端负责通过“基址+多级偏移”读取和修改目标进程的内存。

请按照以下架构和步骤给我提供完整的实现代码和指导：

### 1. 核心功能需求
- **CT 文件解析**：Rust 后端需要能够解析 CT 文件（XML），提取 `<CheatEntry>` 中的 `Description`、`Address`（基址）、`Offsets`（偏移链）和 `Type`（数据类型，如 4字节、浮点数等）。
- **进程附加与内存读写**：使用 `windows` crate (或 `ilhook`/`mem-rs` 等) 实现 `OpenProcess`、`ReadProcessMemory`、`WriteProcessMemory`。
- **多级指针解析**：实现标准的“基址 -> 读指针 -> 加偏移 -> 读指针 -> ... -> 最终地址”的寻址逻辑。
- **数值冻结 (冻结/锁定)**：提供一个后台线程或定时器机制，能够将特定地址的数值“冻结”在固定值。

### 2. Tauri 后端 (Rust) 设计要求
- 推荐使用 `windows` crate 调用 Win32 API。
- 推荐使用 `quick-xml` 或 `serde-xml-rs` 来解析 CT 文件。
- 定义以下 `#[tauri::command]` 函数并暴露给前端：
  - `attach_process(process_name: String) -> Result<u32, String>`：通过进程名获取 PID 并附加进程。
  - `load_ct_file(file_path: String) -> Result<Vec<CheatEntry>, String>`：解析 CT 文件并返回修改项列表。
  - `write_memory(base_address: String, offsets: Vec<String>, value_type: String, new_value: String) -> Result<(), String>`：解析多级指针并写入内存。
  - `read_memory(...) -> Result<String, String>`：读取当前内存数值（用于前端显示）。
- 结构体 `CheatEntry` 包含：id, description, base_address, offsets, value_type, current_value。

### 3. Tauri 前端 (Web UI) 设计要求
- 使用 **Vue 3 + Tailwind CSS**（或 React，根据你的习惯选择）。
- **界面风格**：暗黑风，类似现代游戏修改器或 CMD 黑客风，带有一点霓虹色边缘。使用毛玻璃效果和圆角卡片。
- **UI 布局**：
  - 顶部栏：显示当前附加的进程名、CT 文件导入按钮、刷新数值按钮。
  - 列表区：展示从 CT 解析出来的条目。每个条目包含一个复选框（用于冻结数值）、描述文字、当前数值显示框（可编辑，回车确认修改）。
  - 底部状态栏：显示操作日志（如“附加成功”、“修改生命值为 999”）。
- 交互逻辑：导入 CT 文件后调用后端解析并渲染列表；在输入框输入数值并失去焦点或回车时，调用 `write_memory` 命令。

### 4. 输出要求
请分步骤输出代码：
步骤 1：项目初始化命令及 `Cargo.toml` 依赖配置。
步骤 2：Rust 后端的内存读写核心逻辑（多级指针处理模块）。
步骤 3：Rust 后端的 CT 文件解析模块及 Tauri commands 定义。
步骤 4：前端 UI 代码（组件结构、Tailwind 样式和调用逻辑）。
步骤 5：如何处理“数值冻结”功能的后台循环逻辑。

请注意处理 Rust 中的 `unsafe` 代码块和错误处理，确保程序不会因为读取空指针而崩溃。偏移和基址在前端以十六进制字符串（如 "0x140000000"）传递，在 Rust 中解析为 usize。
