星落游戏解包教程

写在前面



授人以鱼不如授人以渔,主要是希望其他对这方面感兴趣的人也能来为wiki做出一份贡献。



ps.本文章带有目录,可以打开方便跳转









感谢以下前人做出的贡献

星落(Elpis)的Lua脚本解密

星落解包方法

unluac-github

UnityAnimeGamesInfo-github

【HowTo】零基础从手游中提取spine模型进行二创

Brown Dust 2 聲音求助

基础的解包教学







工具准备



必要工具:

 1.一个版本新一点的AssetStudio

 AssetStudio(简称AS)是一款Github上的开源软件,可以解包未加密的资源数据。

 具体来讲,用于2d手游提取立绘是它最常用的功能.。

 但是其github原仓库在22年之后就没有再进行维护了,停留在了v0.16.47版本

 而星落的ab包应用了UnityCN加密,所以我选择的是由AXiX_Official大大维护的分支

 GitHub - AXiX-official/Studio: Modded AssetStudio with new features

 2.python环境

 由于星落对ab包添加了fakeheader,以及对lua的反编译等

 所以我们需要使用python来对文件进行一些处理

 python比较常见,我就不教大家怎么安装了,b站的攻略就有很多了



非必要工具:

 1.Hxd

 HxD - Freeware Hex Editor and Disk Editor

 选择合适你的版本安装↑

 这个是一个十六进制编辑器,我们一般拿来查看一下文件头

 2.spine

 星落的角色立绘就是spine2D动画,但是好像是4.0以上的版本(悲)

 3.IDA

 交互式反汇编器,这个我不会用,但是功能很强大







游戏包体获取



建议用模拟器获取游戏包体,比较方便。

这边我以mumu12模拟器为例子



首先你需要把游戏先装好,应用商店就有







然后你需要一个功能丰富一点的资源管理器,mumu这边自带一个(不是系统应用的文件管理)







进来后,首先来到这个文件路径下

/data/app/~~DzefmpJvxK5ls7Qc51JGSw==/cn.haoplay.game.and.elpis-JRGHhGlahQy92pKt5Crm0g==/base.apk

这里有星落的基础安装包







复制到你的mumu12共享文件夹下,然后你就可以在你的电脑里面看到安装包文件了







共享文件夹的路径可以在这里修改















接下来来到这个路径下,进入data文件夹里面,找到cn.haoplay.game.and.elpis

也是一样的拷贝到共享文件夹,这里面是游戏后续更新的文件











这下子我们就获取了星落的所有游戏文件











解包前的处理



在拖进AssetStudio一键提取前,我们需要先处理一下.bundle文件,也就是ab包(AssetBundle),unity的资源压缩包



在“星落解包方法”AXiX_Official大佬的这篇文章里我们知道

星落的ab包被塞了两行的FakeHeader,以及使用了UnityCN加密(Hxd可看)

所以我们就需用python(或其他相同功能的软件)来把文件头处理一下







首先,之前那个压缩包需要先解压,可以改zip,rar,7z都可以,解压软件可以智能识别







解压后来到base\assets\PlayerAssets路径下面,这时候有两种情况

一种是里面有一个很大的文件——playerassets.assets文件,是很多个ab包首尾相连,playerassets.json中有每个文件的起始位置和hash key

这是星落开服时期的打包方式,这时候我们需要使用下面代码来把文件拆分开来,并批量去除FakeHeader

使用案例:打开打开终端或 CMD,在配置好环境后

输入:python 路径/文件名.py 路径/playerassets.assets 路劲/playerassets.json 路径/输出文件夹

路径自己替换

ab包修复python代码下载

下载上面的文件,运行里面的fix_ab1.py

 另一种情况是,里面是一堆散开来的,数量很多的.bundle文件,就像这样





这时候我们就需要用下面这个代码,只去除FakeHeader

这是我找ai写的,感觉比上面那个大佬的差了好多

这个也是输入:python 文件名.py 路径/有ab文件的文件夹 路径/输出的文件夹

ab包修复python代码下载

下载上面的文件,运行里面的fix_ab2.py

如果不知道如何使用,或者有报错也可以直接去问ai

tqdm这个库不是必须的,你可以让ai把这个功能去掉



之前我们复制出来的cn.haoplay.game.and.elpis\files\Bundles这个文件夹里的的ab包(这里面是最新的的文件)

用的也是第二种的处理方法

处理完之后我们就可以,就可以开始正式解包了







AssetStudio解包



打开这个,我用的是上面说的v1.38.06 net9.0版本







首先选择Options里的Specify UnityCN Key

选择里面的星落的key:79756E67756968616F77616E31323334

然后在specify game里面选择unityCN















然后把你输出的文件夹拖进来就能看到资源了











可以看到我们成功得到了游戏资源,比如上面那个就是不知道什么时候上线的白鸟皮肤,现在我们先来了解一下,这个软件的一些功能。

首先我们看菜单栏里面的Filter Type









AnimationClip

动画片段,存储角色或物体的动画数据

Animator

动画控制器(Animator Controller),用于驱动动画状态机

Material

材质,定义了模型如何被渲染,比如使用哪个 Shader、贴图等

Mesh

网格数据,是模型的几何结构(顶点、面等)

MonoBehaviour

挂载在 GameObject 上的自定义脚本组件

Shader

着色器,控制材质如何渲染(光照、颜色、透明等)

Sprite

2D 图像资源,通常用于 UI、角色立绘、图标等

TextAsset

文本资源,可包含 JSON、Lua 脚本、CSV 等任意文本文件

Texture2D

2D 纹理图像,用于模型贴图、UI 等地方



然后是Export,这个是把文件导出来,菜单栏里面常用的就是这两个





然后再看下面的文件详细信息

第一是文件名,文件名是我们寻找对应资源,文件的重要依据。

比如

battlespine_10071_1,就是战斗小人spine文件,10071是角色id,071就是圣光使

BuffIcon_atlas0,icon就是各种图标

BurstHead_10071_3,一看就知道这是个角色的头,071依旧是圣光使,_3则是第三个立绘,第一个是没突破的立绘,第二个是突破了的立绘,第三个就是皮肤了

90210172,这个是剧情cg

ActivityDungeon1016_atlas0_3,带Activity的就是活动相关的

还有很多,你需要自己熟悉



















现在看第二个,光看文件名不够,我们有的时候还要看第二个,文件路径

比如说这个:assets/art/effects/material/hym_zxl_glow_002.mat









assets/

Unity 的标准资源目录(根目录)

art/

艺术资源目录(通常包括贴图、模型、特效等)

effects/

特效相关资源(比如粒子系统、光效等)

material/

存放材质(Material)的目录

hym_zxl_glow_002.mat

材质文件,用于定义特效表面外观,如发光、透明等

 还有这个:assets/art/models/cardspine/prefab/cardspine_10071_3.prefab









assets/

Unity 项目资源根目录(Assets/ 文件夹)

art/

美术资源总目录

models/

模型资源目录(通常用于 3D 模型、骨骼动画等)

cardspine/

看起来是卡牌角色用的 Spine 动画资源

prefab/

Unity 中的 预制体目录

cardspine_10071_3.prefab

名为 cardspine_10071_3 的 Prefab 文件



上面都是art文件夹下的,也就是美术资源

现在来看看其他文件夹下的:assets/fmodassets/voice_cn/btl/012.bytes,不难看出这是一个和声音相关的









assets/

Unity 项目资源根目录

fmodassets/

FMOD 音频中间件相关的资源目录

voice_cn/

中文语音资源文件夹

btl/

battle(战斗)语音分类目录

012.bytes

二进制语音数据文件,可能对应某个角色或战斗事件语音

 还有这个也是很重要的:assets/lua/basesealbigqualityup.lua.bytes,被我选中的就是大刻印最后一级突破的攻击力加成252











立绘的获取



已知星落的的立绘是spine文件,网上可以找到很多相关的攻略

简单来说你需要导出三个文件,角色立绘拼图,一个atlas文件,一个skel文件








但是很可惜星落的spine是4.0以上版本,目前好像还没有破解版可用











声音的获取



声音相关的有角色语音与bgm

角色语音文件的文件名很简单,就是角色id:071

但是我们看文件路径可以发现,虽然名字是一样的,但是有中文,日语,战斗,交流四种语音文件

这里不能直接一起导出来,不然会自动合并成一个文件







导出来之后我们要用到Brown Dust 2 聲音求助这里面提到的音频提取工具,

这边给出下载链接第七史詩解BANK音頻工具:epic7_debank_v1_0.zip

下载解压后把语音文件放在input文件夹里,双击ren_bytes_to_bank.bat批量修改后缀

直接运行debank脚本

就可以在result文件夹里找到语音文件了




























数据相关的获取



星落的数据主要存放在lua文件里面,所以我们想要获取数据就得解密lua文件,就是这个一串乱码的文件







根据轩晞宇·AXiX大佬在星落(Elpis)的Lua脚本解密 这篇文章里面的解密,星落的lua文件不仅文件头模糊,而且编译的操作码也经过了修改

所以我们想要获取lua文件就得解决这两个问题

在这之前我们需要先把lua文件从AssetStudio里面导出来







接下来我会用python来修复文件头并执行反编译

但是在这之前我们需要先准备一些东西

一个是unluac-github 这里的unluac.jar文件

另一个是UnityAnimeGamesInfo-github 这里的UnityAnimeGamesInfo/Info/Elpis/opmap这个路径下的opmap文件











然后我们还需要安装一个java环境

这个unluac.jar好像是硬要求java21版本,这边给一个java21下载链接

然后安装就是了,具体的可以自行搜索java安装教程



现在把上面我让你准备的两个文件与下面的python程序放在一起

也可以放在其他地方,你把代码里面的路径改一下就是了

这是lua修复与执行反编译代码

lua修复与执行反编译python代码下载 选择里面的unlua.py运行

运行之后,你只要给出输入文件夹与输出文件夹就会自动处理好lua文件







这时候还需要一步操作,因为反编译出来的中文是是编码形式的,我们需要使用如下代码再进行一次转换

lua修复与执行反编译python代码下载

还是这个压缩包,选择里面的fix_utf8_cn.py运行



这样就成功获取到了星落的数据以及游戏逻辑,这是一个庞大且复杂的的文件群,有上万个,目前我还没能完全了解

但是我可以简单的介绍一下

BaseWord_cn.lua,这个是整个游戏的基础文本,基本所有的文本都在里面了

BaseCardLevelUp.lua,是角色升级信息

BaseSkillLevelUp.lua,是技能升级信息

BaseStage.lua,是游戏关卡信息

SensitiveWords.lua,是星落的屏蔽词

BaseMonsterPart****.lua,这一系列的是星落的怪物数据

BaseBadge.lua,badge是徽章相关

BaseCardQualityUp.lua,levelup是升级相关,qualityup则是突破相关

BaseSealBigLevelUp.lua,seal是徽章相关,BaseSealBig则是新出的大徽章相关

还有很多很多,等着你来探索



这个攻略可能还会更新吧,我看看后面要不要出一个新角色数值解包专题

有问题可以加我qq:2609113802,我会尽量解答 



一些相关的文章补充说明



这篇教程基本上已经完结,后面有什么新的东西,新的发现我也不方便直接在这之上进行修改。

我会新开一些文章来说明,并放在这的结尾



补充文章:



优化重写解包相关代码



以wiki角色模板为例,教你获取角色基本信息



批量从lua文件中提取角色基本信息 星落角色立绘提取



基于二进制fgui.bytes文件切割解包图集 















2
0
2
0
评论(11)

坚定迎白云

2025/10/08浙江省

mua!!!!!我尝试了几天解包星落,甚至开始怀疑文件头是密匙。最后看到这篇文章,才发现之前deepseek删文件头的脚本有问题
#11
1 1

2025/10/09 江苏省

0 0

善良闻天空

2025/07/18湖北省

lua修复与执行反编译python代码下载的压缩包里没有找到fix_utf8_cn.py和unlua.py
#10
2 2
luckyking回复善良闻天空抱歉我把前面修复ab包的分享链接和后面反编译的分享链接搞混了,现在文章以修改
这是正确的反编译代码分享链接https://wwhy.lanzn.com/i247M31aoytc

2025/07/18 江苏省

0 1
共2条回复

花下岂无酒

管理员

2025/07/12重庆

创个群吧,我好求学
#9
1 1
luckyking回复花下岂无酒但是事实上是都没人来问我_(K站 [震惊]) T_T

2025/07/12 江苏省

0 0

luckyking

管理员

2025/06/29江苏省

不是,我代码块里的空格怎么没了_(K站 [震惊])
#8
3 0
执着用猎豹回复luckyking不行啊,第二种方法处理完后拖进去提示[Info] Loading C:\Users\Wind\OneDrive\Desktop\B\0a44488ff3d8a0f3cd9b6161fbd0ac06.bundle[Error] Error while reading bundle file C:\Users\Wind\OneDrive\Desktop\B\0a44488ff3d8a0f3cd9b6161fbd0ac06.bundleSystem.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.   at AssetStudio.LZ4.Decompress(ReadOnlySpan`1 cmp, Span`1 dec) in F:\Rider\Studio\AssetStudio\LZ4\LZ4.cs:line 38   at AssetStudio.BundleFile.ReadBlocksInfoAndDirectory(FileReader reader) in F:\Rider\Studio\AssetStudio\BundleFile.cs:line 478   at AssetStudio.BundleFile..ctor(FileReader reader, Game game) in F:\Rider\Studio\AssetStudio\BundleFile.cs:line 148   at AssetStudio.AssetsManager.LoadBundleFile(FileReader reader, String originalPath, Int64 originalOffset, Boolean log) in F:\Rider\Studio\AssetStudio\AssetsManager.cs:line 283

2025/07/03 福建省

0 1
共3条回复