资源包内spine和NPC的live2d没有加密,给所有可抽取角色的assetbundle包进行了加密 ![]()
live2d_ym0055_005501.zip (1.8 MB)
又对比了一下一部分的spine也被加密了
开服的包没加密,夏活包改加密了 ![]()
单纯的xor加密,key是37, 12, 178, 118, 37, 12, 178, 118, 37, 12, 178, 118, 37, 12, 178, 118,对前0xe0字节xor。
不太懂这个啊大佬
import sys
key = [37, 12, 178, 118, 37, 12, 178, 118, 37, 12, 178, 118, 37, 12, 178, 118]
if __name__ == '__main__':
path = sys.argv[1]
with open(path, 'rb') as f:
data = f.read()
data = bytearray(data)
for i in range(0xe0):
data[i] ^= key[i % len(key)]
with open(f"{path}", 'wb') as f:
f.write(data)
這個遊戲這邊今年6月解過,實際上他每個資料夾內都是不同的xor key。
當時的解密腳本
import os
def xor_decrypt(data, key):
decrypted_data = bytearray()
key_len = len(key)
for i, byte in enumerate(data):
decrypted_data.append(byte ^ key[i % key_len])
return decrypted_data
def process_folder(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.lower().endswith(“.dat”):
file_path = os.path.join(root, file)
with open(file_path, ‘rb’) as file:
unity_data = bytearray(file.read())
k1 = unity_data[:4]
key = bytearray.fromhex("55 6E 69 74")
k2 = xor_decrypt(k1, key)
decrypted_unity_data = xor_decrypt(unity_data[:220], k2)
new_decrypted_data = decrypted_unity_data + unity_data[220:]
with open(file_path, 'wb') as file:
file.write(new_decrypted_data)
print(f"Decrypted and overwritten {file_path}")
if name == “main”:
folder_path = input("Enter the folder path to process: ")
process_folder(folder_path)
儘管如此,還是有無法加密回去的問題,除非另導出k1,k2與檔名之對應值(也就是密鑰)
更新:2024/11/20:
全部解密長度皆為220,GameList.dat與GameVersion.dat除外,GameList.dat與GameVersion.dat另有加密。
感谢回复
大佬您好,请问一下您这边还留有这款游戏的资源文件吗?本人于在最近才得知这款游戏已经暴死了,想找一些角色的美术资源给自己留个纪念
解完之后发我一份 百度网盘 请输入提取码
佬,本人解包的资源在这里,不算太全,很抱歉。全角色的Live2D模型在解压缩后的Live2D文件夹中,万分感谢资源分享。不过很遗憾,未能找到高清角色的全身立绘,只有各切分图。https://pan.baidu.com/s/1F2IE7bQx-bB3hkPhjsG6Yw?pwd=taxy

