文件来自于恋与深空,所有文件的文件头都不是RIFF且都被修改且都不一样,这里是示例文件https://drive.google.com/file/d/1MWVcVcCh\_-6UkVwHwkvA2jCNvvcDCaCJ/view?usp=drive_link,希望有路过感兴趣的大佬可以提供帮助
同志, 我也想解这个很久了, 可惜代码0基础, 看这个和看天书一样一点头绪都没有, 现在在ai的帮助下有点进度, 可以蹲蹲看, 不一定有结果
仅适用于iOS 5.0.0版本
1 个赞
捕捉大佬, 谢谢大佬 待我研究怎么用 (膜拜
il2cpp符号dump出来,IDA跑脚本恢复上去,然后给IDA装个MCP压力Agent逆就行了
deepseek-v4-pro就差不多了,成本不超过3块
1 个赞
老师这番话给我打开新思路. 我之前用IDA手动找相关函数, AI从chatgpt换到Claude, 还是没有解密global-metadata. 尝试了frida,一注入游戏就崩, 转战gameguardian也找不到AF1BB1FA, 网上找了很多其他GG定位global-metadata的方法均无果, 还是放弃了(泪). 今天上来看帖子没想到真有老师回复
因为安卓有ACE反调, global-metadata.dat的魔术字和版本号被抹掉了, 文件头和区段全部被重排过, 而且有加密
所以老师是从IOS dump出来的? IOS要用什么软件? 我看IOS甚至没有游戏文件夹,根本拿不到游戏apk包, 从来没有考虑过从IOS dump的可能性(当然也有网络上从来没有IOS的教程). 老师是从事相关工作的吗? 达到你这种程度大概要多久的学习? (来自外行人的好奇
这玩意相当复杂,XPackage里面是一整套VFS:bin是主索引,nxf是次级索引,nx是payload
bnk和wem解密都是一样的方法
from pathlib import Path
def decrypt_wwise_file(path: str, seed: str, code: str, out: str):
data = bytearray(Path(path).read_bytes())
seed_b = seed.encode("ascii")
code_b = code.encode("ascii")
key_len = max(len(code_b), 0x30)
key = bytes(
seed_b[i % len(seed_b)] ^ code_b[i % len(code_b)]
for i in range(key_len)
)
for i in range(min(len(data), 0x200)):
data[i] ^= key[i % len(key)]
Path(out).write_bytes(data)
seed = "27be8d19868a545a601f795aed3639de"
decrypt_wwise_file(
r"C:\path\xxx.bnk",
seed,
code,
r"C:\path\xxx.dec.bnk",
)
decrypt_wwise_file(
r"C:\path\123456789.wem",
seed,
code,
r"C:\path\123456789.dec.wem",
)
seed在这里被设置
function WwiseMgr.Init()
if not UNITY_EDITOR then
local path = "MessagePack/GameSetting"
local gameSettingConfig = X3BlobFileMgr.Load(CS.X3Game.MessagePack.X3GameSettingMessagePack, path)
if not GameObjectUtil.IsNull(gameSettingConfig) then
CLS.SetSeed(gameSettingConfig.WwiseSeed)
end
end
local curSoundLang = Locale.GetSoundLang()
WwiseMgr.SetLanguage(curSoundLang)
getIns():Initialize()
if isFirsInit then
CS.AkBankManager.ReloadAllBanks()
end
WwiseMgr.InitVolume()
if isFirsInit then
isFirsInit = false
end
end
code要去VFS里面查到对应的messagepack,然后解出code去解密
完整工具
1 个赞
老师神仙来的, 工具都写出来了. 感谢大佬(合十)

