Shinobu420/VRC-Shader-Deobfuscator
GitHub: Shinobu420/VRC-Shader-Deobfuscator
一款用 Go 编写的轻量级命令行工具,用于展开并还原 Unity/VRChat shader 中基于 `#define` 宏的标识符混淆,使源码恢复可读性。
Stars: 0 | Forks: 0
# VRC-Shader-Deobfuscator
一个使用 Go 编写的轻量级命令行工具,用于展开 Unity/VRChat HLSL shader 中基于 `#define` 的混淆。
许多市售的 Unity/VRChat shader 都采用了 `#define` 混淆技术进行分发,即通过 `#define` 预处理指令将变量、函数或字符的名称映射到随机生成的字符串。这使得调试、性能分析、优化和代码审计变得极其困难。
该工具([deobfuscator.go](deobfuscator.go))的作用类似于标准的 C 预处理器(如 `cpp` 或 `gcc -E`),它会解析 `#define` 宏映射,在整个文档中将其展开,并清理格式,从而使 shader 恢复可读性。
总有一天我会用 C# 重写这个工具,以便将其直接集成到 Unity 中。
## 用法
### 前置条件
* 你的系统上需要安装 Go 1.16 或更高版本。
### 运行反混淆器
要反混淆 shader 文件,请运行:
```
go run deobfuscator.go
```
该工具将会:
1. 解析所有映射混淆标识符的 `#define` 指令。
2. 移除这些 `#define` 行。
3. 将所有被混淆的名称替换为它们定义的对应项。
4. 清理空格,并格式化分号 (`;`) 和大括号 (`{`, `}`) 后的换行符,以提高可读性。
5. 将输出结果保存为 `_deob.shader`(与原文件位于同一目录下)。
## 法律声明与合规 (Rechtlicher Hinweis)
*请仔细阅读本节内容。如果您居住在德国,德国版权法适用于您对该软件的使用。*
本工具的开发和发布严格遵守德国版权法(**Urheberrechtsgesetz - UrhG**)。
### 1. 双重用途与预处理器等效性 (Standardwerkzeug)
从技术上讲,本程序只是一个简单的**宏展开器和文本格式化工具**。它执行的文本搜索与替换操作,与任何标准编译器(如 GCC、Clang 或 Unity shader 编译器本身)的预处理阶段完全相同。由于编译器预处理器是标准的、中立的开发者工具,因此本工具也属于中立的双重用途工具。
### 2. 不绕过访问控制/版权保护 (§ 95a UrhG)
根据 **§ 95a UrhG**,禁止绕过“有效的技术保护措施”。
* `#define` 混淆**并不属于**访问控制或版权保护机制。
* 被混淆的代码以明文形式分布在 shader 文件中,并且 GPU/编译器必须读取、解析和编译这些宏才能让 shader 运行。
* 由于本工具不涉及任何加密、解密或绕过数字版权管理 (DRM) 的行为,因此它**并没有**绕过 § 95a UrhG 规定的任何技术保护措施。
### 3. 授权用户的权利 (§ 69d & § 69e UrhG)
如果您持有使用该 shader 的有效许可,德国版权法赋予您一些不可通过合同排除的特定权利 (§ 69g Abs. 2 UrhG):
* **预期用途与错误修正 (§ 69d Abs. 1 UrhG):** 允许授权用户为计算机程序的预期用途进行必要的操作(如翻译、改编或复制),包括**错误修正**。
* **互操作性 (§ 69e UrhG):** 如果为了实现独立创建的计算机程序与其他程序的**互操作性**所必需,且此类信息尚未轻易获得,则允许对代码进行分析和修改。
* 这些权利适用于作为计算机程序的 shader (§ 69a UrhG)。
### 4. 用户的责任
* **许可合规性:** 本工具**不会**授予您任何分发、转售或共享修改后的 shader 代码的许可或权利。您必须确保您拥有所分析的任何 shader 的有效许可。
* **禁止分发:** 您有责任确保您对反混淆后 shader 代码的使用符合原始 shader 的许可协议。**严禁重新分发反混淆后的商业 shader**,除非原始许可明确允许。
* **预期受众:** 本工具旨在供个人对其合法拥有的 shader 进行调试、性能优化、安全审计和教育分析使用。
标签:EVTX分析, Go, Ruby工具, Unity, VRChat, 代码反混淆, 日志审计, 游戏开发, 着色器