阶段四: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 副本、从载荷派生的批量产物。
This commit is contained in:
commit
2e7ab7c33c
113 files changed
+25327
No files matched your search
@@ -0,0 +1 @@
|
||||
{"evidence_id":"ev_2bf6740d94a700c99b536f2ff28ac6fe4c13b72a9f4ce3405571cbfc65c0abd0","subject":{"name":"libspine-editorarm64.dylib","digest":{"sha256":"2549d0b07be0926995628e0e887e72cf0812c80438a7cfb9d1935c88cad28c57"},"local_path":"/private/var/folders/jl/m50cxy0d7zzfd0448wzhj2bc0000gn/T/.spine/tianmokeji/4.3.26/libspine-editorarm64.dylib","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_macho","parameters":{},"raw_result":null,"normalized_result":{"format":"mach-o","selected_architecture":{"name":"arm64","container_file_offset":0},"endian":"little","word_size":64,"file_type":"6","flags":["0x00118085"],"uuid":"C6696447-82AC-3DFF-837E-AA32C12F4C53","entrypoints":{"items":[],"total":0,"exhaustive":true,"limitations":[]},"architectures":{"items":[{"name":"arm64","cpu_type":null,"cpu_subtype":null,"file_offset":null,"size":null,"alignment":null}],"total":1,"exhaustive":true,"limitations":[]},"build_metadata":{"items":[{"platform":"MACOS","minimum_os":"10.7","sdk":"13.0","tools":[{"name":"LD","version":"820.1"}]}],"total":1,"exhaustive":true,"limitations":[]},"load_commands":{"items":[{"index":0,"kind":"LC_SEGMENT_64","fields":{"cmd":"LC_SEGMENT_64","cmdsize":872,"segname":"__TEXT","vmaddr":0,"vmsize":1146880,"fileoff":0,"filesize":1146880,"maxprot":5,"initprot":5,"nsects":10,"flags":0}},{"index":1,"kind":"LC_SEGMENT_64","fields":{"cmd":"LC_SEGMENT_64","cmdsize":712,"segname":"__DATA","vmaddr":1146880,"vmsize":49152,"fileoff":1146880,"filesize":49152,"maxprot":3,"initprot":3,"nsects":8,"flags":0}},{"index":2,"kind":"LC_SEGMENT_64","fields":{"cmd":"LC_SEGMENT_64","cmdsize":72,"segname":"__LINKEDIT","vmaddr":1196032,"vmsize":1867776,"fileoff":1196032,"filesize":1851408,"maxprot":1,"initprot":1,"nsects":0,"flags":0}},{"index":3,"kind":"LC_ID_DYLIB","fields":{"cmd":"LC_ID_DYLIB","cmdsize":64,"name":"target/libspine-editorarm64.dylib (offset 24)","time stamp":"1 Thu Jan 1 08:00:01 1970","current version":"0.0.0","compatibility version":"0.0.0"}},{"index":4,"kind":"LC_DYLD_INFO_ONLY","fields":{"cmd":"LC_DYLD_INFO_ONLY","cmdsize":48,"rebase_off":1196032,"rebase_size":40,"bind_off":1196072,"bind_size":1512,"weak_bind_off":1197584,"weak_bind_size":676544,"lazy_bind_off":1874128,"lazy_bind_size":2656,"export_off":1876784,"export_size":343640}},{"index":5,"kind":"LC_SYMTAB","fields":{"cmd":"LC_SYMTAB","cmdsize":24,"symoff":2229264,"nsyms":4525,"stroff":2337560,"strsize":671400}},{"index":6,"kind":"LC_DYSYMTAB","fields":{"cmd":"LC_DYSYMTAB","cmdsize":80,"ilocalsym":0,"nlocalsym":1,"iextdefsym":1,"nextdefsym":4423,"iundefsym":4424,"nundefsym":101,"tocoff":0,"ntoc":0,"modtaboff":0,"nmodtab":0,"extrefsymoff":0,"nextrefsyms":0,"indirectsymoff":2301664,"nindirectsyms":8973,"extreloff":0,"nextrel":0,"locreloff":0,"nlocrel":0}},{"index":7,"kind":"LC_UUID","fields":{"cmd":"LC_UUID","cmdsize":24,"uuid":"C6696447-82AC-3DFF-837E-AA32C12F4C53"}},{"index":8,"kind":"LC_BUILD_VERSION","fields":{"cmd":"LC_BUILD_VERSION","cmdsize":32,"platform":1,"minos":"10.7","sdk":"13.0","ntools":1,"tool":3,"version":"820.1"}},{"index":9,"kind":"LC_LOAD_DYLIB","fields":{"cmd":"LC_LOAD_DYLIB","cmdsize":56,"name":"/usr/lib/libSystem.B.dylib (offset 24)","time stamp":"2 Thu Jan 1 08:00:02 1970","current version":"1319.0.0","compatibility version":"1.0.0"}},{"index":10,"kind":"LC_LOAD_DYLIB","fields":{"cmd":"LC_LOAD_DYLIB","cmdsize":88,"name":"/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (offset 24)","time stamp":"2 Thu Jan 1 08:00:02 1970","current version":"23.0.0","compatibility version":"1.0.0"}},{"index":11,"kind":"LC_LOAD_DYLIB","fields":{"cmd":"LC_LOAD_DYLIB","cmdsize":48,"name":"/usr/lib/libc++.1.dylib (offset 24)","time stamp":"2 Thu Jan 1 08:00:02 1970","current version":"1300.32.0","compatibility version":"1.0.0"}},{"index":12,"kind":"LC_LOAD_DYLIB","fields":{"cmd":"LC_LOAD_DYLIB","cmdsize":88,"name":"/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (offset 24)","time stamp":"2 Thu Jan 1 08:00:02 1970","current version":"2297.0.0","compatibility version":"45.0.0"}},{"index":13,"kind":"LC_LOAD_DYLIB","fields":{"cmd":"LC_LOAD_DYLIB","cmdsize":56,"name":"/usr/lib/libobjc.A.dylib (offset 24)","time stamp":"2 Thu Jan 1 08:00:02 1970","current version":"228.0.0","compatibility version":"1.0.0"}},{"index":14,"kind":"LC_FUNCTION_STARTS","fields":{"cmd":"LC_FUNCTION_STARTS","cmdsize":16,"dataoff":2220424,"datasize":8840}},{"index":15,"kind":"LC_DATA_IN_CODE","fields":{"cmd":"LC_DATA_IN_CODE","cmdsize":16,"dataoff":2229264,"datasize":0}},{"index":16,"kind":"LC_CODE_SIGNATURE","fields":{"cmd":"LC_CODE_SIGNATURE","cmdsize":16,"dataoff":3008960,"datasize":38480}}],"total":17,"exhaustive":true,"limitations":[]},"dependencies":{"items":[{"path":"target/libspine-editorarm64.dylib","kind":"LC_ID_DYLIB","current_version":"0.0.0","compatibility_version":"0.0.0"},{"path":"/Line truncated
|
||||
Reference in new issue
Block a user