目标:在 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 副本、从载荷派生的批量产物。
30 lines
1.7 KiB
Plaintext
30 lines
1.7 KiB
Plaintext
-----BEGIN RSA PRIVATE KEY-----
|
|
Proc-Type: 4,ENCRYPTED
|
|
DEK-Info: AES-128-CBC,800E9517EC57E30629C255E77732F416
|
|
|
|
UYC1bkuQiSC8cAajmmgwowyRzkUf39oZ2/EfVG1eHQkHxGwz4TY9m2PrioSNeILD
|
|
z7fj6uDdo3YHgUfGw4mxoLV4vdUlDyTg8thorPP7K0gr4xCzCxb8gkcyd3Wtyqon
|
|
jbDUqM6/fcG6OJn+44ZPFM46y6rnIzM8aGbAsS+pXNsb351I1d61Ky02ReIZQxNc
|
|
L1rx083W91mzybDDn32FN9r1YP+jIKq15XT1MA1+P1ayMiPY0963FLU6STs3gyiM
|
|
mqWq+PQ3aqjUXEFbNZVNNWIPD7fizuxSfWNdGY+9oz9zvDlrapYMLXNZEkB7r5LG
|
|
si08C8OVpo96lkX4NfTQP02B0vzDtbiEAxdbKv0Y9kOkIN3yJDF8yTQO+XdYkqlC
|
|
PEd5bqix2t+kOVscAOdGM5eo6BKR8EZ744HIPOqToQGFDrLzZiUNE6CH1O8okKBa
|
|
ormcuKE4S7SrYpSi5SSt5/o6VVULDVNbRZ96H0lCErCLbzQXVF8CQTreUNpCT3oD
|
|
+ZBV/tMB3mfYERLDXCHibMoosCfEmAWgk35PSoEfFlxE9f26yt4dnUwobjEC5x81
|
|
rMQvzDApcZ2hP5pow6crDjz1Xf5/6Vi5N2ajU9MYmmINIts6va2JYwFbKABa4NP5
|
|
Hzo0cvBfg9rvok/bnlppOIoY7phMX6PSSjKozkrCe/6ds/KgTZPjImgxMsVfOja+
|
|
MRe9/iG1GjplEjmu1yXgjabnKmKTc0szEsaOyR+ibykn1/pkAMXWXCD+cDAKh8ZX
|
|
Xz4wbi1RHHbXg+zRY6v/TalJv2mSj0Sixx2FoXW1qSIX5ztRfiNa5qKGVYaibZmK
|
|
MiXhj6P4l+/vrDkzV61cwfJ/9VKhB/FwIHvsbhjkH9bshhr5h9U4DiE/X82VUbT5
|
|
Fnot1RFeRYyJBzATxQKg00uoj8JuJlLCpT3TUO4HAlfMquz37lURCoAhRW4YXZ96
|
|
xxJADt+ud+kXqGroTOMff5mFCEMS2J+FOHws+6LCVUA0XLQl71L/1BIxq2dPWrl4
|
|
835fsxeXu5fgDy8VRYEXbQQABmCSVBJbcBLZdyd1NuJ33XtjZNuU8O1KA8118HA0
|
|
fWNyOGXLTw2+jLe+cz9a4cPSH8m9pt9dS1KF9JNTgHOLnFW8HcuCUfklDJx5S1Q3
|
|
xa43kEBI2tbzeHV575hc5SRMyU8bZ8KFBwJauHLVUhdh1f+25nHndATzRdAAMtJN
|
|
OLuPSWbvx+NOU80N030qohKF9q8cIQPjayRDeA3old2JM3mSG4Bh6akYwjyICmqW
|
|
YB7sZUiinH/WPftQ4hGaNf+je0+BHQtKezRmP0EQaSbkUPH5UUVmKVLbG2QFF0Wz
|
|
Bf9mhjc/Pw+dD57fV3kfpslJq7ynECpdKjHfIfW0MqfiW3YO7I7LmfafxgqFGQ9n
|
|
no/Mvk6UIs3J2h9vxuakTbr6d/YRkmQri4zcVdLsWdTHEDXi3ngGSoVZGud6acYa
|
|
cDkEI6TAa2vvJNb1VK+i/RMHjhE5od55nxGo8FYgMoZ1BRPj2Z22MAGhDvyAw/Ap
|
|
28UdENl1xUVePd5bT1aAkMLr+Zi2dXCX9Nh1Gz5G486d0JpSMmfb63qm8nnaHYUN
|
|
-----END RSA PRIVATE KEY----- |