Repository navigation
v1.1.0
重大变化
项目拆分为两层
ShaderRipper(src/ShaderRipper,程序集ShaderRipper.dll)——解析/反编译核心库,可被其它工具引用ShaderRipper.Application(src/ShaderRipper.Application)——命令行前端,发布时 apphost 改名为ShaderRipper.exe
输出固定为 AssetRipper 导出树
<out>/Assets/Shader/<名字>.shader
<out>/Assets/Resources/<原资源路径>.shader
<out>/Disassembly/<shader>/ 反汇编在 Assets 之外
可直接整体复制覆盖 ExportedProject。无法确定容器路径时打印 [ar] no container path: ... 并回退到 Assets/Shader/。
新功能
--file支持多输入:可重复、逗号/分号分隔、通配符、以及 rm/cp 风格ShaderRipper.exe a.assets b.bundle c.apk --out D://out- APK / ZIP 支持:直接从 apk 解包扫描;APK 内 GUID 命名、无扩展名的数据文件也能识别
- 输入按内容嗅探:PK 头 → zip/apk,
UnityFS→ bundle,合法序列化头 → SerializedFile;扩展名可省(下载后被改名成.1也能直接读) - LZMA 压缩的 UnityFS 块已支持(LZ4 / LZ4HC / LZMA / 未压缩,块级混用均可);LZHAM 给出明确报错
- Resources 路径还原:读取
globalgamemanagers里的 ResourceManager 表(m_Container),把Resources.Load资源还原到Assets/Resources/原路径.shader;Windows / Linux 构建格式一致,APK 从 zip 内读取 - 资源路径重名时追加
_<pathID>,不再静默覆盖 - 诊断开关:
--dump-objects <file>、环境变量SHADERRIPPER_DEBUG_RESMAP(_FILE)
实测
| 输入 | 结果 |
|---|---|
| 某匿名商业游戏 APK(Unity 6000.3,GLES3) | 452 shaders → 405 导出(333 落 Assets/Resources/,72 落 Assets/Shader/),0 未翻译指令 |
| 某匿名商业游戏(Unity 2022.3,d3d11) | 63 shaders → 47 Resources + 16 Shader,0 未翻译指令 |
| 合成 LZMA bundle(70 MB payload) | 解码正确,65 shaders 正常导出 |
下载
ShaderRipper.exe:Windows NativeAOT 单文件(约 32 MB)ShaderRipper:Linux 单文件(自包含运行时,约 41 MB)
均内嵌 schema/数据资源,下载即用。