diff --git a/README.md b/README.md new file mode 100644 index 0000000..238e9ac --- /dev/null +++ b/README.md @@ -0,0 +1,347 @@ +# Unity Tools + +> 2026.04.12 | Unity Game Hacking Tool +image + + +## 简介 + +Unity Tools 是一款基于 minihook 和 ImGui 开发的 Unity 游戏逆向工具,提供类浏览、内存操作、图形绘制、Shader 修改等多种功能。 + +## 技术架构 + +- **渲染引擎**: DirectX All (通过 minihook 库 Hook) +- **UI 框架**: ImGui (中文支持) +- **游戏框架**: Unity IL2CPP + +## 功能概览 + +### 主菜单栏 + +工具栏位于窗口顶部,包含以下功能入口: + +| 菜单项 | 说明 | +|--------|------| +| 全局管理 | 类结构浏览、变量编辑、方法查看 | +| 全局材质 | Unity 材质浏览、属性编辑、Keyword 管理 | +| 内存绘制 | 内存地址管理与图形绘制 | +| 着色器绘制 | Shader 全局属性修改 | +| 主题 | UI 主题切换 | +| 配置 | 语言、快捷键设置 | + +### 状态显示 + +菜单栏右侧显示实时信息: +- **FPS**: 帧率显示 (绿色 ≥100, 黄色 60-100, 红色 <60) +- **DateTime**: 当前系统时间 +- **Unity**: 游戏使用的 Unity 版本 + +--- + +## 功能详情 + +### 1. 全局管理 (Global Management) + +核心功能模块,提供完整的类结构分析能力。 + +#### 1.1 三列布局 + +``` +┌─────────────┬─────────────┬─────────────────────┐ +│ Assembly │ 类名 │ 变量 & 方法 │ +│ (程序集) │ (搜索+筛选) │ (实例搜索+编辑) │ +├─────────────┼─────────────┼─────────────────────┤ +│ Assembly-1 │ Class.A │ [变量表格] │ +│ Assembly-2 │ Class.B │ - 偏移 │ +│ Assembly-3 │ Class.C │ - 名称 │ +│ ... │ ... │ - 类型 │ +│ │ │ - 值 (可编辑) │ +│ │ │ [方法表格] │ +│ │ │ - 方法名 │ +│ │ │ - 返回值 │ +│ │ │ - 参数 │ +└─────────────┴─────────────┴─────────────────────┘ +``` + +#### 1.2 程序集列表 (第一列) + +- 显示所有已加载的 IL2CPP 程序集 +- 支持搜索过滤 +- 点击加载对应类的列表 + +#### 1.3 类名列表 (第二列) + +- 显示选定程序集中的所有类 +- **搜索框**: 模糊搜索类名 +- **类型筛选**: + - `All` - 显示全部 + - `System` - 系统类 + - `Unity` - Unity 类 + - `Custom` - 自定义类 + +#### 1.4 变量与方法 (第三列) + +##### 实例搜索 + +| 按钮 | 功能 | +|------|------| +| 编辑 | 手动输入实例地址 | +| 寻找 | 自动搜索类的实例 | + +##### 变量表格 + +支持编辑以下类型: + +| 类型 | 编辑方式 | 说明 | +|------|----------|------| +| `int` / `uint` | 双击编辑 | 32位整数 | +| `float` | 双击编辑 | 单精度浮点 | +| `double` | 双击编辑 | 双精度浮点 | +| `bool` | 下拉框 | 布尔值 | +| `byte` | 双击编辑 | 字节 (0-255) | +| `string` | 双击编辑 | 字符串 | + +> **注意**: 静态方法以蓝色背景高亮显示 + +##### 其他功能 + +- **Tag 标签寻找**: 获取选中实例的 Tag +- **结构生成**: 复制类结构代码到剪贴板 (C# 格式) +- **Dump global-metadata.dat**: 导出 IL2CPP 元数据文件 + +##### Metadata Dump + +支持两种地址格式: +``` +格式1: GameAssembly.dll+0x1000 +格式2: 0x12345678 +``` + +--- + +### 2. 全局材质 (Global Material) + +材质浏览与编辑功能模块,提供完整的 Unity 材质管理能力。 + +#### 2.1 功能布局 + +``` +┌─────────────────┬─────────────────────────────────┐ +│ 材质列表 │ 材质属性 │ +├─────────────────┼─────────────────────────────────┤ +│ [搜索框] │ [选中材质名称] │ +│ [材质列表] │ │ +│ - 按名称排序 │ [Keywords 标签列表] │ +│ - 去重显示 │ - 显示所有激活的 Keyword │ +│ [刷新按钮] │ │ +│ │ [纹理属性列表] │ +│ │ - 纹理名称 │ +│ │ - 地址显示 (十六进制) │ +│ │ │ +│ │ [Float 属性表格] │ +│ │ - 属性名 / 值 (可编辑) │ +│ │ │ +│ │ [Int 属性表格] │ +│ │ - 属性名 / 值 (可编辑) │ +│ │ │ +│ │ [Vector 属性表格] │ +│ │ - 属性名 / X Y Z W 值 │ +└─────────────────┴─────────────────────────────────┘ +``` + +#### 2.2 材质列表 (第一列) + +- 显示所有已加载的 Unity 材质 +- 自动去重:同名材质自动添加序号后缀 +- 支持搜索过滤 +- 点击加载对应材质的属性 + +#### 2.3 材质属性 (第二列) + +##### Keywords 标签 + +- 显示材质所有激活的 Shader Keywords +- 以标签形式展示 + +##### 纹理属性 + +| 属性 | 说明 | +|------|------| +| 名称 | 纹理属性名 | +| 地址 | 纹理对象地址 (十六进制格式) | + +##### 可编辑属性 + +| 类型 | 编辑方式 | +|------|----------| +| Float | 双击编辑数值 | +| Int | 双击编辑整数值 | +| Vector | 显示 X/Y/Z/W 四分量 | + +--- + +### 3. 内存扫描 (Memory Scanner) + +> ⚠️ 功能开发中 + +--- + +### 4. 内存绘制 (Memory Drawer) + +内存地址管理与图形绘制工具。 + +#### 4.1 功能布局 + +``` +┌─────────────────┬─────────────────┐ +│ 内存地址 │ 绘制设置 │ +├─────────────────┼─────────────────┤ +│ [地址输入框] │ [类型选择] │ +│ - 添加地址 │ - 矩形 │ +│ - 移除地址 │ - 圆形 │ +│ [地址列表] │ - 线条 │ +│ │ - 文本 │ +│ │ [颜色选择] │ +│ │ [大小滑块] │ +│ │ [开始绘制] │ +│ │ [清除绘制] │ +│ │ [工具折叠栏] │ +└─────────────────┴─────────────────┘ +``` + +#### 4.2 地址管理 + +- 输入十六进制地址 (如 `0x7FF6A1234000`) +- 支持添加/移除地址 +- 地址列表可重复选择 + +#### 4.3 绘制设置 + +- **绘制类型**: 矩形、圆形、线条、文本 +- **颜色**: RGBA 颜色选择器 +- **大小**: 1-100 滑块调节 + +#### 4.4 工具选项 + +- 是否可视 (显示/隐藏绘制) +- 获取坐标 (3秒显示实体坐标) + +--- + +### 5. 着色器绘制 (Shader Drawer) + +Shader 全局属性修改工具。 + +#### 5.1 功能布局 + +``` +┌─────────────────┬─────────────────┐ +│ 着色器列表 │ 着色器属性 │ +├─────────────────┼─────────────────┤ +│ [搜索框] │ [着色器名称] │ +│ [着色器列表] │ │ +│ - 按字母排序 │ [设定全局] │ +│ - 搜索过滤 │ - 属性名输入 │ +│ [刷新按钮] │ - 类型选择 │ +│ │ • SetGlobalInt │ +│ │ • SetGlobalFloat │ +│ │ • SetGlobalVector │ +│ │ • SetGlobalColor │ +│ │ • SetGlobalMatrix │ +│ │ - 值输入 │ +│ │ [全局操作] │ +│ │ - 画质等级设定 │ +└─────────────────┴─────────────────┘ +``` + +#### 5.2 支持的属性类型 + +| 函数 | 参数类型 | +|------|----------| +| `SetGlobalInt` | Int32 | +| `SetGlobalFloat` | Single (float) | +| `SetGlobalVector` | Vector4 | +| `SetGlobalColor` | Color (RGBA) | +| `SetGlobalMatrix` | Matrix4x4 | + +#### 5.3 特性 + +- 实时搜索过滤 +- 刷新检测新着色器 (淡蓝色高亮) +- 属性值实时预览 + +--- + +### 6. 主题设置 (Theme Settings) + +UI 主题自定义功能。 + +#### 6.1 预设主题 + +| 主题 | 说明 | +|------|------| +| 默认 | ImGui 深色主题 | +| 明亮 | ImGui 浅色主题 | +| 紫色 | ImGui 经典主题 | +| 自定义 | 用户自定义颜色 | + +#### 6.2 自定义颜色选项 + +可自定义的 UI 元素: +- 窗口背景 +- 标题背景 / 活动标题 / 折叠标题 +- 标题栏 / 悬停 / 激活 +- 按钮 / 悬停 / 激活 +- 输入框背景 / 悬停 / 激活 +- 文本 / 禁用文本 + +--- + +### 7. 配置 (Configuration) + +#### 7.1 语言设置 + +| 选项 | 说明 | +|------|------| +| 中文 | 简体中文界面 | +| English | 英文界面 [暂未开放] | + +#### 7.2 快捷键设置 + +- **菜单显示/隐藏**: 默认 `Insert` +- 支持自定义按键 (F1-F12, Home, End, PageUp/Down 等) + +#### 7.3 配置保存 + +- 保存路径: `Cofig1.ini` +- 保存内容: 语言设置、快捷键 + +--- + +## 快捷键 + +| 按键 | 功能 | +|------|------| +| `Insert` | 显示/隐藏主菜单 | +| `鼠标左键` | UI 交互 | +| `鼠标右键` | UI 交互 | + +--- + +## 依赖库 + +- **kiero**: DirectX Hook 库 +- **ImGui**: GUI 框架 +- **FontAwesome**: 图标字体 + +--- + +## 注意事项 + +1. 本工具仅供学习交流,请勿用于商业 +2. 使用前请备份游戏数据 +3. 部分功能可能因引擎版本问题而失效 + +--- + +*文档更新于 2026.04.12*