Live2D Spine资源解包 前作攻略Live2D Spine资源解包1
奥奇传说网页版 Spine 无加密 资源分类
鉴赏环节。8.0分。
这个应该是新出的皮肤,7060

时间过的真快😩,十年老兵,难凉热血

现在已经变成邵g传说了。碍于这个web端的性能,分辨率属实可惜,不过也有可能是webp的问题,但是我比对了一下png和webp的两个版本,几乎看不出任何区别。
7114

这不是我们碧蓝航线的圣路易斯吗,下次记得标明出处🥵






万物起源
![]()
![]()
获取清单
参考网页动画应该如何提取呢(已解决) - 讨论 - Live2DHub
现在只获取到了90kb版本https://aoqi.100bt.com/h5/version.json,没什么用
之前有3621kb的,来自隔壁。GamesArchive/AoQiChuanShuo/File/version~202510101760026048.json at main · violet-wdream/GamesArchive
根据batman提供的信息,目标变得很明确了。
需要把当前时间转为UNIX时间戳,然后获取version,之前考虑过是不是这个Stamp的问题,但是实测这个Stamp好像可有可无,然后就删了。
不过得到了个更加优雅的方式来获取Spine的ID,确实没注意到这么个东西。
https://aoqi.100bt.com/h5/config/pet/petspineicon.json
从马后炮的角度来看,中间的部分其实也是有缝隙的,只探测两边是不合理的。
VERSION
https://aoqi.100bt.com/h5/version.json
BASE-URL
https: //aoqi.100bt.com/h5/
海报
https://aoqi.100bt.com/h5/peticon/background/peticon6657.webp
静态立绘
https://aoqi.100bt.com/h5/peticon/static/peticon6657.webp
Spine立绘
https://aoqi.100bt.com/h5/peticon/spine/peticon6657.mix
下面的留作纪念吧。
不过好在命名比较整齐,然后数据范围相当可观,可以暴力破解获取,实际上序号大致是递增的(且递增步数最大为110,这里取150作为阈值),所以可以先测试一下1 ~ MIN - 1 的序号是否存在资源,这里检测测试了下左侧的区间1 ~ MIN - 1应该是没东西的。只需要测一下右边的区间就行。
接下来检测MAX + 1 ~ MAX + 150 的序号是否存在资源,如果存在一个资源序号为MAX1 > MAX,这里就可以更新MAX为MAX1然后继续探索,直到连续150个序号没有资源就停止。
随着游戏后续更新,序号的递增步长可能会超过150,所以可能需要动态更新这个阈值。
可供参考的数据:
- 2025-10-10 获取的最大序号是6657
- 2026-1-30 获取的最大序号是 7114
处理
直接通过petspineicon.json的ID拼接URL得到所有 output.txt
下载
可用Aria2c下载。
aria2c -i output.txt -d output
或者
解压mix文件
检测完整性 (可选)
总结
- 直接通过
petspineicon.json的ID拼接URL得到所有 output.txt - 批量下载mix
- 解压mix
- 校验完整性
修正了ID获取方式,总数1705, GamesArchive/AoQiChuanShuo/File/Spine at main · violet-wdream/GamesArchive 仅供参考,有很多重复的但是ID不同,其实没什么参考价值。
奥拉星网页版 Spine 无加密 资源分类
跟奥奇传说网页版资源获取方式几乎一致。
鉴赏环节。8.5分。








获取清单
现在只获取到了858kb版本https://aola.100bt.com/h5/version.json
依旧只是部分数据,并不是完整的。同理,还是可以通过这些基础数据来推测范围然后爆破。
VERSION
https://aola.100bt.com/h5/version.json
#序列帧动画
https://aola.100bt.com/h5/peticon/breath/peticon4213.png
#Spine立绘
https://aola.100bt.com/h5/peticon/newbreath/petmovie5275/petmovie5275.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie5275/petmovie5275.json
https://aola.100bt.com/h5/peticon/newbreath/petmovie5275/petmovie5275.atlas
#静态立绘
https://aola.100bt.com/h5/peticon/newlarge/type1/peticon5841/peticon5841_1.png
#海报
https://aola.100bt.com/h5/pet/petskin/background/bg/img_petskinbackground_926.png
没什么可说的,和奥奇传说基本一致。
可供参考的数据:
2026-1-30 理论可得:
- 若干序列帧动画
- spine 光启图鉴515 + 皮肤图鉴569 = 1084
- 海报243
实际得到:
-
序列帧动画没弄
-
spine 1193
-
海报337,不知道怎么设计的,有很多一模一样的图,分辨率和size都是一样的。

本来想和应该和奥奇传说一样,会有一个config记载所有的ID,这样就不用爆破了,倒是找到了一个疑似的文件,出现了很多4400之前的数据,以及最高序号是5848,而不是6001,具体作用有待考究。
https://aola.100bt.com/h5/data/eggconfig.json
还有一个,这个序号就完全不知道是指什么了。
https://aola.100bt.com/h5/data/petassetsmap.json
处理
下载
可用Aria2c下载。
aria2c -i output.txt -d output
或者
分类spine

检测完整性(可选)
.Scripts/SpineFileProcess/CheckSpineFiles.py at main · violet-wdream/.Scripts
无效立绘,可以直接删除。https://aola.100bt.com/h5/peticon/newlarge/type1/peticon5080/peticon5080_1.png

人工检测发现这个xshuimi应该是部件名称标错了,不用改。

手动合成一下链接
https://aola.100bt.com/h5/peticon/newbreath/petmovie4406/petmovie44062.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie4407/petmovie44072.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie4427/petmovie44272.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie4427/petmovie44273.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie4427/petmovie44274.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie4512/petmovie45122.png
https://aola.100bt.com/h5/peticon/newbreath/petmovie5273/petmovie5273.png #这个url存在,可能是意外下载失败了。
总结
- 获取version文件
- 通过version文件得到petmovie目录文件路径,拼接为URL得到基础 output.txt
- 更新基础output.txt
- 批量下载
- 校验完整性
一共1193,仅供参考。2026-1-31导出资源:GamesArchive/AoLaXing/File at main · violet-wdream/GamesArchive
星之翼(Starward) Spine XOR加密
鉴赏环节。7.9分。
参考求助大佬,关于游戏星之翼的文件解密 - 讨论 - Live2DHub



资源路径
PC版。移动端同理
APK\Games\XzyLauncher_Data\StreamingAssets\yoo\Spine
热更\Games\XzyLauncher_Data\yoo\Spine
解密
将尾部16bytes作为key进行XOR
拖动文件夹到exe上直接处理。
论坛提供的。XOREnd16Key.exe
导出
导入AS后搜索
Assets/GameData/UiSpine/CharacterPaintingAssets/GameData/UiSpine/NameCard/MiddleBackgroundAssets/GameData/UiSpine/KV
黑色信标(BlackBeacon) Spine UnityCN
鉴赏环节。7.5分。




游戏资源
国服,无和谐《黑色信标》官方网站——欢迎来到世界的背面
资源路径
APK
assets > assetsBundles
热更

解密
Raz版AS
解密方式选择UnityCN,指定key 5F6C4E3F3A3F233F3F3F3F663F1A3F3F

key的获取方式可以参考另一篇文章-逆向
导出
搜索
assets/product/ui/texture/hero立绘assets/product/spine/resSpine
==三国杀名将传 Cocos Spine 无加密 自定义资源package
公式三国换皮放置游戏。Cocos引擎,Spine立绘。资源包是自定义格式,XXTEA
资源路径
APK

热更,这里的assets就是上面APK的32个package,下面的patch是更新部分,看起来是一个ttf文件。

package结构
查看package.assets000粗略可以看到一些明文的路径,fight/scene/1.png类似的,但是后面紧跟着的数据没有文件头也没有数据块信息。猜测是自定义的包格式。
AppDelegate::applicationDidFinishLaunching
物理存储分为了两个部分,跟上面的判断一致。
FileStorage::setPackageFileName("package.assets");
FileStorage::setPatchFileName("patch.assets");
addStorageFileName("base", "base.assets");
addStorageFileName("extra", "extra.assets");
这里的base.assets / extra.assets 是 逻辑路径,不是真实文件系统
接下来还是需要知道具体的package结构
cocos2d::PackageFile::initialize
cocos2d::PackageFile::getFileData
getFileData(path)
├─ PackageFile::getSearchFilePath(path) 通过 normalize_key 把path转化为key
├─ 通过key 查询hash表 得到 PACKAGE_FILE_DESC
├─ PackageFile::readFile
│ ├─ fread
│ ├─ abc_decrypt (XXTEA)
│ ├─ zlib uncompress
│ └─ 返回明文
└─ 返回给上层(Lua / 引擎)
def normalize_key(path: str) -> str:
for p in ("res/", "src/"):
i = path.find(p)
if i != -1 and i + 4 < len(path):
return path[i:]
return path
cocos2d::PackageFile::readFile
readFile
├─ 校验 entry.size
├─ 计算 offset
├─ fread 加密块
│ ├─ [u32 rawSize]
│ ├─ [u32 encParam]
│ └─ payload
├─ if encrypted → abc_decrypt
├─ if compressed → zlib uncompress
└─ 返回明文数据
cocos2d::abc_decrypt
abc_decrypt
├─ abc 派生 key 16B
├─ 将 data 转成 uint32_t[]
├─ XXTEA
├─ 校验尾部长度(padding)
├─ 还原 byte 流
└─ 返回明文
cocos2d::abc
import hashlib
import struct
CONST = "WxZwQEmMOYNLXDInuA1PoxsKGPEVFY9d"
def abc_key(this_ptr: int, a2: int) -> bytes:
s = f"k={this_ptr}s={a2}{CONST}".encode()
md5 = hashlib.md5(s).digest() # 16 bytes
hexstr = md5.hex().encode() # 32 bytes ascii
return hexstr[:16] # 只取前 16 字节
def key_to_u32(key16: bytes):
return list(struct.unpack("<4I", key16))
key = key_to_u32(abc())
==姬不可失:據點不設防 Cocos Spine 无加密 资源分类
2026-2-5 上线 Facebook
谷歌商店下载
经典的uuid36 -> uuid22 分类,目前找到的清单残缺,只能分类一半。
UI_new > paint_renwu 立绘
花亦山心之月 Spine/Live2D UnityCN 自定义Spine格式


文件乱七八糟的,同时部分spine是自定义格式的,把动作和基础骨骼分离开了,而其他部分则是可以正常播放的。
资源路径
APK

- ab文件
- spineanimations目录下都是.spineani文件,也就是自定义spine中被分离开的动作。
Update
结构与APK完全一致。

- ab文件
- assets目录下找到spineanimations
合并一下两个spineanimations目录,同名文件保留来自Update的。
├─ APK
├─ Update
└─ spineanimations
导出
Spine
导入Raz版AS,选择UnityCN key

搜索
assets/rescollection/prefabs/spine/spinedynamicassets/art/spine
不分组导出(把skel atlas png都放在一个目录,记为RES),因为如果按照容器路径导出,会有部分的atlas和png放一起,但是skel单独放在另一个目录下。
然后再把之前的spineanimations的所有.spineani文件也放到这个混合目录RES下。这样skel atlas png spineani 都在同一个目录RES之下。
DelFileSuf(.txt .bytes .asset .prefab).bat
批量去除文件后缀 asset prefab txt bytes
Live2d
就10个,嫌麻烦就算了吧。
目前没找到既能处理加密又能一键导出Live2D的AS。所以多处理一步。
手动处理UnityCN,然后导入MOD版AS一键导出。
解析Spine自定义格式
TheMoonlitOath/MergeSkelAndAni.py
具体的解析细节太多,大致就是主体部分转为json后animations是空的,然后用spineani提取animations部分的数据,不展开介绍了。自定义改动的部分太多了,14种TimeLine几乎都改了,包括但不限于自定义读取方式以及大端读取。参考IDA反编译代码、SpineSkeletonDataConverter以及LLM炼丹。
目前解析的模型都可以正常运作,只有一个模型解析有略微的问题Senior_Yunwuji_Rw.json
---> System.ArgumentException: Color hexidecimal length must be 8, recieved: 5FAFFFFFF (Parameter 'hexString')
[E]2026-02-14 00:40:04 - Failed to load: D:\Tools\UsefulTools\MuMu\Shared\Download\花亦山\output\TMP\Senior\Senior_Yunwuji_Rw\Senior_Yunwuji_Rw.json, Failed to load spine with version '3.8'
手动改为5FAFFFFF,应该是多了一个F

分类
把同一个spine的skel/json png atlas 放在同名目录下。
获取UnityCN key
没什么特别之处,简述一下。
SetABEncryption <- SetAssetBundleDecryptKey <- SetAssetBundleKey


dump.cs

Unity内部的虚拟路径。

点击mono后需要导入DummyDLL还原数据


string EncryptKey = "INHJnhdypqk547xd"
string -> hex
494e484a6e68647970716b3534377864
坎公
超次元女友: 神姫放置幻想乐园
https://apps.qoo-app.com/cn/app/11256
影之诗超凡世界 (Shadowverse:Beyond) Spine 加密
奇难无比
求助 影之诗Beyond如何解包 - 讨论 - Live2DHub
阴阳师:百闻牌
魂器学院
灰烬战线
龙与少女的交响曲
失落之剑
魔竞革命
放置天使
Angelica Aster R
求助AngelicaAsterR解包问题 - 讨论 - Live2DHub
异域战记
Zgirls3
铃兰之剑
三国杀
三国杀移动美化版解包资源【安装包】【SPINE】 - 资源 - Live2DHub
千年之旅
禁欲战姬
依露希尔
UnityCN
spine都只有待机动作的,没什么可聊的。
assets/rawresource/ui/spineskeletons/
assets/loadableresources/ui/spineskeletons/char
assets/loadableresources/story/timelineprefabs/
有几个文件名一坨,png不带后缀,自行搜索单独处理。
Nikke
尘白禁区 UE
40G
AES: 0xC14735FB5A872D2AFA76A5C38521AB8B8E21072C08525B913307608BD1182FA7
鸣潮 UE
模板() Spine/Livc2D 加密
鉴赏环节。10.0分。
Comments