Files
tianmo 2e7ab7c33c 阶段四:Spine 3.8.99 编辑器里挂上自建视图面板
目标:在 Spine 编辑器窗口内部加一个自己的视图面板(按钮 + 文字显示),
点击读取场景对象,并像原生面板一样出现在 Views 菜单、可停靠可折叠。

本轮打通:
1. 编辑器在我们自己的进程里完整启动
   - 类加载器必须是 URLClassLoader 本身(自检要求)
   - Editor.main 必须在 AWT EDT 上调用
   - jvm.cfg 第 21 行要以两个空格结尾 + -DSpineJava
   - Editor.D:I 版本号、fonts/、/tzax 资源、Java8 版 launcher.Launcher 替身
2. 3.8.99 全量解密 → 可读源码
   - 字符串 17251/17461(伪造同名调用帧对齐 key)
   - 混淆动态派发还原 53871 处(调引导方法取 MemberName)
3. 自建视图
   - agent 在内存里给 us 枚举加 spineView 常量(不改磁盘,避开完整性自检)
   - 面板 Actor 由外部反射填进 us.spineView.D
   - 复用已有图标做别名(不新建图片资源)
   最终 "Spine View" 出现在 Views 菜单,可与 Tree 并排停靠、折叠展开

另外:
- ViewPatcher/ViewAgent:视图枚举与面板挂载的字节码插桩
- DecAll/ObMap/rewrite_source:字符串解密、派发还原、可读源码生成
- 阶段四-视图面板挂载.md:完整记录做法与踩过的坑

不纳入版本管理:rea/(独立仓库)、tools 下的 JDK/Ghidra 工具链、
Spine.app 与 spine-lab 副本、从载荷派生的批量产物。
2026-10-16 13:34:18 +08:00

2 lines
2.7 KiB
JSON

{"evidence_id":"ev_8db26c98ef5a365354f5fc68ff26d5c8d0ab4d3ab273b09aba70753a958a5087","subject":{"name":"Spine","digest":{"sha256":"fea6e69af72dc5a3f38195f293b8af3d61b3bf4b3845b1069b6c3603384340f2"},"local_path":"/Users/tianmokeji/Desktop/临时/spine加功能/Spine.app/Contents/MacOS/Spine","format":"mach-o","architecture":"arm64"},"provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"analysis_profile":null,"predicate_type":"rea.analysis","operation":"inspect_signature","parameters":{},"raw_result":null,"normalized_result":{"signed":true,"identifier":"Spine","team_identifier":null,"format":"Mach-O thin (arm64)","cdhashes":["e47d518d37f960a2e45a1b738056b57b00f885c7"],"hash_algorithms":["sha256"],"authorities":[],"designated_requirement":"cdhash H\"e47d518d37f960a2e45a1b738056b57b00f885c7\"","entitlements":{},"timestamp":null,"hardened_runtime":false,"provenance":[{"tool":"codesign","command":["/usr/bin/codesign","-d","--verbose=4","$ARTIFACT"],"tool_version":null,"version_reason":"Tool exposes no uniform stable version flag; executable SHA-256 is a prelaunch file sample and does not prove atomic OS image binding.","executable_sha256":"6f92f630759f1a7f3faa0bebe1b27b3565a44d5d44c15cc4ddead6b3af373f40","exit":{"code":0,"signal":null},"stdout_bytes":0,"stderr_bytes":832},{"tool":"codesign","command":["/usr/bin/codesign","-d","-r-","$ARTIFACT"],"tool_version":null,"version_reason":"Tool exposes no uniform stable version flag; executable SHA-256 is a prelaunch file sample and does not prove atomic OS image binding.","executable_sha256":"6f92f630759f1a7f3faa0bebe1b27b3565a44d5d44c15cc4ddead6b3af373f40","exit":{"code":0,"signal":null},"stdout_bytes":67,"stderr_bytes":95},{"tool":"codesign","command":["/usr/bin/codesign","-d","--entitlements",":-","$ARTIFACT"],"tool_version":null,"version_reason":"Tool exposes no uniform stable version flag; executable SHA-256 is a prelaunch file sample and does not prove atomic OS image binding.","executable_sha256":"6f92f630759f1a7f3faa0bebe1b27b3565a44d5d44c15cc4ddead6b3af373f40","exit":{"code":0,"signal":null},"stdout_bytes":184,"stderr_bytes":183}],"limitations":["Entitlements and designated requirements require separate bounded commands.","Inspected a digest-verified Mach-O byte snapshot; filesystem-bound signing context and trust validation are not examined."]},"confidence":"observed","authority":"shipped-artifact","environment":null,"limitations":["Entitlements and designated requirements require separate bounded commands.","Inspected a digest-verified Mach-O byte snapshot; filesystem-bound signing context and trust validation are not examined."],"relationship_coverage":null,"locations":[],"evidence_links":[]}