咏月风雅对游戏内的live2d单独进行了加密

资源包内spine和NPC的live2d没有加密,给所有可抽取角色的assetbundle包进行了加密 :roll_eyes:


live2d_ym0055_005501.zip (1.8 MB)

又对比了一下一部分的spine也被加密了
开服的包没加密,夏活包改加密了 :cry:

单纯的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另有加密。

1 个赞

感谢回复

大佬您好,请问一下您这边还留有这款游戏的资源文件吗?本人于在最近才得知这款游戏已经暴死了,想找一些角色的美术资源给自己留个纪念

解完之后发我一份 百度网盘 请输入提取码

佬,本人解包的资源在这里,不算太全,很抱歉。全角色的Live2D模型在解压缩后的Live2D文件夹中,万分感谢资源分享。不过很遗憾,未能找到高清角色的全身立绘,只有各切分图。https://pan.baidu.com/s/1F2IE7bQx-bB3hkPhjsG6Yw?pwd=taxy

2 个赞

佬您好,我通过询问AI了解到切分图源于Live2D显示不全,下载相关viewer软件后可以进一步导出高清透明底全身立绘png。我按照gemini的提示尝试,成功导出了角色的一阶、二阶、QQ小人立绘,其中.moc3格式适配live2d cubim,.skel格式适配spine,需要分别下载,live2d的可以在editor软件拖拽对应.moc3后更改像素长宽+透明底,直接导出;spine用的是git的开源viewer,利用软件特性换出控制台输入代码进行保存。由于无法批量操作,未能将全部角色导出。以上供参考,非常感谢您的分享!

佬您好,我按照gemini的提示尝试,成功导出了角色的一阶、二阶、QQ小人立绘,即在live2d软件拼贴后进一步导出所需。其中.moc3格式适配live2d cubim,.skel格式适配spine,需要分别下载,live2d可以在editor软件拖拽对应的.moc3文件后直接导出;spine用的是git开源viewer,利用软件特性换出控制台输入代码进行保存。由于无法批量操作,未能将全部角色导出。以上供参考,非常感谢您的分享!

大佬您好,可以麻烦您分享一下QQ小人立绘吗?万分感谢!