Skip to content

v1.1.0

Choose a tag to compare

@StArraySharp StArraySharp released this 21 Oct 02:26
· 92 commits to main since this release

重大变化

项目拆分为两层

  • 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/数据资源,下载即用。