# Addressable Reverse **Repository Path**: lithtech123_admin/addressable-reverse ## Basic Information - **Project Name**: Addressable Reverse - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-12 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Addressable Reverse - Addressable逆向破解工具 一个强大的Unity编辑器插件,用于解析和逆向分析Unity Addressables系统的catalog.bin文件。该工具可以帮助开发者从已构建的Addressables资源中提取信息、分析打包配置,并恢复AddressableAssetGroup配置。 ## 功能特性 ### 🔍 核心功能 - **Catalog解析**:解析Addressables的catalog.bin文件,不依赖Unity Addressables程序集 - **GUID提取**:自动从catalog中提取所有资源的GUID信息 - **分组分析**:智能分析资源分组,识别Bundle打包模式和标签 - **打包配置恢复**:根据解析结果自动生成AddressableAssetGroup资产文件 ### 📊 分析工具 - **概览面板**:显示Catalog的基本信息、统计数据和资源分布 - **Keys列表**:浏览所有资源键值,支持搜索和分页 - **Locations列表**:查看所有资源位置信息,包括InternalId、ProviderId等 - **资产列表**:显示所有提取的GUID及其对应的资源信息 ### 🛠️ 实用工具 - **GUID修复**:根据资源路径自动修复或更新.meta文件中的GUID - **打包配置恢复**:一键恢复AddressableAssetGroup配置,包括: - 分组信息 - 打包模式(PackTogether/PackSeparately/PackTogetherByLabel) - 资源标签 - 资产条目 ## 使用方法 ### 安装 1. 将插件文件夹放置到Unity项目的`Assets`目录下 2. 确保Unity版本为2019.4或更高版本 3. 插件会自动注册到Unity编辑器菜单 ### 基本使用流程 #### 1. 打包分析 1. 在Unity编辑器中,点击菜单 `Tools > Addressable Reverse > 打包分析` 2. 在打开的窗口中选择catalog.bin文件 3. 插件会自动解析并显示以下信息: - **概览**:Catalog基本信息、资源统计 - **Keys列表**:所有资源键值,支持搜索 - **Locations列表**:资源位置详情 - **资产列表**:GUID和资源路径映射 #### 2. 资产GUID修复 1. 点击菜单 `Tools > Addressable Reverse > 资产GUID修复` 2. 选择项目的基础目录(通常是Assets文件夹) 3. 插件会自动扫描并修复.meta文件中的GUID 4. 支持批量修复和预览修复结果 #### 3. 打包配置恢复 1. 点击菜单 `Tools > Addressable Reverse > 打包配置恢复` 2. 在分组分析视图中查看所有分组信息 3. 点击"生成分组清单"按钮 4. 插件会自动创建AddressableAssetGroup资产文件 ## 代码API ### 核心API ```csharp using AddressableReverse; using UnityEngine; // 解析catalog.bin文件 string catalogPath = "path/to/catalog.bin"; var catalogData = CatalogParser.ParseCatalog(catalogPath); // 获取所有keys var allKeys = CatalogParser.GetAllKeys(catalogPath); Debug.Log($"Total keys: {allKeys.Count}"); // 根据key查找资源位置 foreach (var key in allKeys) { var locations = CatalogParser.Locate(catalogPath, key); if (locations != null) { foreach (var location in locations) { Debug.Log($"Key: {key}"); Debug.Log($" InternalId: {location.InternalId}"); Debug.Log($" ProviderId: {location.ProviderId}"); } } } ``` ### 编辑器API ```csharp using AddressableReverse.Editor.Core; // 获取解析管理器实例 var manager = CatalogParserManager.Instance; // 解析Catalog文件 bool success = manager.ParseCatalog("path/to/catalog.bin"); // 访问解析结果 var parserCore = manager.ParserCore; var guidExtractor = manager.GuidExtractor; var groupAnalyzer = manager.GroupAnalyzer; // 获取所有GUID var allGuids = guidExtractor.AllGuids; // 获取分组信息 var groupInfoMap = groupAnalyzer.GroupInfoMap; ``` ## 窗口说明 ### 打包分析窗口 提供四个标签页: 1. **概览**:显示Catalog的基本信息和统计数据 2. **Keys列表**:所有资源键值列表,支持搜索和分页(每页100条) 3. **Locations列表**:资源位置详情,包括InternalId、ProviderId、依赖关系等 4. **资产列表**:GUID和资源路径的映射关系 ### 资产GUID修复窗口 - 选择项目基础目录 - 自动扫描并修复.meta文件中的GUID - 显示修复结果和统计信息 - 支持预览修复内容 ### 打包配置恢复窗口 - 显示所有分组信息 - 支持搜索和筛选 - 一键生成AddressableAssetGroup资产文件 - 自动恢复打包模式和标签配置 ## 技术特性 ### 轻量级设计 - ✅ 不加载Unity Addressables程序集 - ✅ 不读取脚本类型(所有类型返回typeof(object)) - ✅ 纯解析功能,无运行时依赖 - ✅ 使用反射动态创建AddressableAssetGroup ### 性能优化 - Keys和Locations列表使用分页显示(每页100条) - Locations列表采用延迟加载 - 搜索功能实时过滤 - 大文件解析进度显示 ## 文件结构 ``` Addressable Reverse/ ├── Editor/ │ ├── CatalogParserEditor.asmdef # Editor程序集定义 │ ├── Core/ │ │ ├── CatalogParser.cs # 主要API类 │ │ ├── CatalogParserCore.cs # 解析核心 │ │ ├── CatalogParserManager.cs # 解析管理器(单例) │ │ ├── GroupAnalyzer.cs # 分组分析器 │ │ ├── GuidExtractor.cs # GUID提取器 │ │ ├── GuidFixer.cs # GUID修复器 │ │ ├── GroupAssetGenerator.cs # 分组资产生成器 │ │ └── Utils.cs # 工具类 │ ├── Data/ │ │ ├── BinaryStorageBuffer.cs # 二进制存储缓冲区 │ │ ├── ContentCatalogData.cs # Catalog数据类 │ │ ├── ObjectInitializationData.cs # 对象初始化数据 │ │ └── AssetBundleRequestOptions.cs # AssetBundle请求选项 │ ├── Interfaces/ │ │ ├── IResourceLocator.cs # 资源定位器接口 │ │ └── IResourceLocation.cs # 资源位置接口 │ ├── Models/ │ │ ├── AssetInfo.cs # 资产信息模型 │ │ ├── GroupInfo.cs # 分组信息模型 │ │ ├── GuidInfo.cs # GUID信息模型 │ │ ├── GuidFixResult.cs # GUID修复结果模型 │ │ ├── KeyLocationInfo.cs # Key位置信息模型 │ │ └── Enums.cs # 枚举定义 │ └── UI/ │ ├── PackAnalysisWindow.cs # 打包分析窗口 │ ├── PackConfigRestoreWindow.cs # 打包配置恢复窗口 │ ├── GuidFixWindow.cs # GUID修复窗口 │ └── [其他UI视图文件] ├── package.json # 包配置 └── README.md # 本文档 ``` ## 注意事项 1. **类型信息**:由于不加载程序集,所有ResourceType都返回`typeof(object)`,而不是实际的资源类型 2. **InternalId解析**:简化版不执行Addressables的InternalId解析,直接返回原始InternalId 3. **只读解析**:插件只用于解析catalog.bin文件,不支持序列化/写入 4. **依赖要求**:需要Unity 2019.4或更高版本(使用Unity.Collections.LowLevel.Unsafe) 5. **Addressables包**:打包配置恢复功能需要安装Unity Addressables包 ## 许可证 本插件基于Unity Addressables的代码简化而来,遵循原项目的许可证。 ## 更新日志 ### v1.0.0 - 初始版本 - 支持catalog.bin文件解析 - 支持GUID提取和修复 - 支持分组分析和配置恢复 - 提供完整的编辑器UI界面