你说得对,但是《星落》是一款探险队沿途对抗大魔王的半即时战术养成RPG。这一次,是成为希望与勇气的探险团璀璨故事!
星落今天开放了预下载,很快啊很快,我啪的一下就下载下来
先丢进010Editor一看
一眼顶真,鉴定为FakeHeader加上UnityCN加密
我们都知道Raz佬版本的assetstudio支持FakeHeader,也支持UnityCN,但是他们都在同一个选项里,不能同时启用,只能先手动去除fakeheader
不过这里还好似乎都是固定的32 offset,脚本跑一下很快啊很快
但是raz佬的版本已经archive了,最新的release里没有星落的key
所以得手动在这个界面加上Elpis:79756E67756968616F77616E31323334然后选择这个key
或者试试我维护的版本GitHub - AXiX-official/Studio: Modded AssetStudio with new features
和raz的方法不一样,特殊游戏的适配并不是在Options->Specify Game里选择,因为这需要在代码中写死逻辑而且每次添加新的类型都要更新程序。
在菜单栏选择最后的Lua,先点击Enable Lua Scripts启用lua脚本,然后点击Load Lua Template加载特定游戏的解密脚本,比如星落的是Elpis.lua,然后直接把ab文件正常打开就行
(对于复杂加密的支持可能得在c#侧添加额外的接口,简单的解密逻辑倒是还算好写)
2 个赞
看了一下,安装包有一个assets\PlayerAssets\playerassets.assets文件,1.34G,是很多个ab包首尾相连,playerassets.json中有每个文件的起始位置和hash key,我等下写个导出脚本
import os
import sys
import json
def extract(file_obj, offset, output_path, name):
file_obj.seek(offset + 32)
size = int.from_bytes(file_obj.read(8), byteorder="big")
file_obj.seek(offset)
data = file_obj.read(size)
with open(os.path.join(output_path, name), "wb") as f:
f.write(data)
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: python extract.py <asset_path> <json_path> <output_path>")
sys.exit(1)
asset_path = sys.argv[1]
json_path = sys.argv[2]
output_path = sys.argv[3]
with open(asset_path, "rb") as asset_file:
with open(json_path, "r") as f:
jsonData = f.read()
data = json.loads(jsonData)["data"]
if not os.path.exists(output_path):
os.makedirs(output_path)
for item in data:
key, offset = item["key"], item["offset"]
if offset != 0:
extract(asset_file, offset, output_path, key)
音频导出的话你可以用AssetStudio读取然后Fiter Type选AudioClip,或者用py脚本配合UnityPy逐个文件检查有没有AudioClip
问问使用UnityCN加密的游戏导出修改图片后怎么再封回包内并能被游戏正常识别?
你可以用这个修改过的UABEA,可以读取UnityCN加密的文件,然后导出非加密文件。
按我过去的经验使用UnityCN加密的游戏是可以正常读取非加密文件的。
不过因为星落还用了fakeheader所以你得先去掉头上32字节,修改完再加回去。
不过就像前面提到的,有1.34G的文件是在安装包那个大文件里的,那部分对应的文件做魔改就很难替换回去
大佬,请教一下剑与远征:启程怎么解包?我是一个萌新。。。。