阶段四: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,41 @@
|
||||
package com.esotericsoftware.spine.editor.launcher;
|
||||
|
||||
/**
|
||||
* 3.8.99 编辑器会反射去读启动器类 com.esotericsoftware.spine.editor.launcher.Launcher
|
||||
* 上的若干静态成员(clsid / clr / dat / info / dll)。
|
||||
*
|
||||
* 官方那个类在 4.3.06 的 launcher.jar 里,而且是 Java 10 编译的(class 54),
|
||||
* JDK8 加载直接 UnsupportedClassVersionError,会把 Prefs/sZ 的初始化打断、编辑器起不来。
|
||||
*
|
||||
* 所以这里放一个 Java 8 的替身:字段和同名静态方法都提供,反射用哪种都能读到。
|
||||
*/
|
||||
public final class Launcher {
|
||||
public static String clsid = "pro";
|
||||
public static String clr = "false";
|
||||
public static String dll = "spine$12345";
|
||||
public static String dat = "";
|
||||
public static Object info = null;
|
||||
|
||||
private Launcher() {
|
||||
}
|
||||
|
||||
public static String clsid() {
|
||||
return clsid;
|
||||
}
|
||||
|
||||
public static String clr() {
|
||||
return clr;
|
||||
}
|
||||
|
||||
public static String dll() {
|
||||
return dll;
|
||||
}
|
||||
|
||||
public static String dat() {
|
||||
return dat;
|
||||
}
|
||||
|
||||
public static Object info() {
|
||||
return info;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user