有大佬会解包忘川风华录吗


忘川的包以PM03开头,改成Unity也无法解包

3 个赞

有魔改的AS能解,但是我不知道名字.

Yes,Is it a revision made by Razmoth?Could you please provide it? Thank you!

不是,这怎么看都不是个开源的,我也没有,今天有人问我的

1 个赞

好的,十分感谢你提供的帮助,它确实很困扰人,但我想它是真是存在的,因为有一些作者有提到过.

1 个赞

:grinning:

1 个赞

Razmoth佬虽然会删单库但会把解密加到CLI里面,在CLI里面没看到游戏名,连最新的ZZZ之前单独库删了都放进去了,但唯独没有忘川

1 个赞

内存里隐藏了global-Metadata文件头,限于水平就提取不来了,也没有找到MetaDecrypt之类的函数,目前还是没想到方法对文件进行解密

1 个赞

製作此MMD舞蹈動畫的作者或許他有解密它的工具,如果可以你或許可以向他們溝通索要,因爲我不知道如何與他交流,另外如果你希望能分享,對大家也有幫助.

1 个赞

网易的格式,有个单独工具专门处理这个,但是很大的问题在于文件名没有还原且输出对象乱七八糟。

2 个赞

请问你说的是不是基于PY脚本,而不是ASGUI?它是否存在于GitHub.

1 个赞

私信了MMD作者,人家拒不分享;但我在XenTaX上找到篇文章 忘川风华录 encryption - XeNTaX 。里面写的只看懂前一半,后面Lz4恢复到正确大小没懂。

1 个赞

1 个赞

对,我也把这里的00删了,改了头文件也不能打开;这一个bundle多文件也分离过了,后半段 change the size up to the lz4 information to the correct size as well 属实没理解什么意思。

1 个赞

我也正好想提取这个手游,这个文件头也是第一次见,搜索了下,有个类似的贴子: Help with the *.bundle(unity) file - ZenHAX
说是跟global-metadata.dat清单有关?可惜这个论坛不能登录了,没办法看附件,要是有人能看懂2楼的回复好了_(:з)∠)_

1 个赞

bms脚本

# script for extracting separate bundles from bundle files (Forgotten River Fenghua Lu)
# created by spiritovod

getdstring SIGN 4
if SIGN != "PM03"
	print "This is not compatible bundle file"
	cleanexit
endif

get TMP_NAME basename
endian big
math SHIFT = 128
math HEAD_SIZE = 42

get FSIZE asize
math FILES = 0
for OFFSET = 0 < FSIZE
	savepos OFFSET
	if OFFSET >= FSIZE
		cleanexit
	endif
	
	get SIGN string
	savepos HEAD
	get VERSION long
	get MAJOR string
	get MINOR string
	get SIZE longlong
	get COMP_BLOCKS long
	get UNCOMP_BLOCKS long
	get COM_TYPE long
	get VER byte
	savepos BLOCKS
	
	math COMP_BLOCKS - SHIFT
	math UNCOMP_BLOCKS - SHIFT
	math OFFSET + SIZE
	xmath SIZE "SIZE - HEAD_SIZE - 8"
	
	set MEMORY_FILE binary "\x55\x6E\x69\x74\x79\x46\x53\x00"
	append
	log MEMORY_FILE HEAD HEAD_SIZE
	log MEMORY_FILE BLOCKS SIZE
	append
	putvarchr MEMORY_FILE 38 COMP_BLOCKS long
	putvarchr MEMORY_FILE 42 UNCOMP_BLOCKS long
	
	string NAME p "%s/%04d.bundle" TMP_NAME FILES
	get SIZE asize MEMORY_FILE
	log NAME 0 SIZE MEMORY_FILE
	
	math FILES + 1
	goto OFFSET
next

2 个赞

已测试上面的bms脚本可以成功提取!太感谢了!!assetstudio工具可以识别!
好像quickbms没办法批量遍历文件夹,我也不会写bms脚本……我去向chatGPT请教帮我写了Python脚本,这下免去手动选择文件夹的烦恼了~如有需要可以复制下面代码,另存为.py脚本运行即可~

import os
import subprocess

# 设置路径
quickbms_path = r'E:\quickbms-0.12\quickbms_4gb_files.exe'
bms_script_path = r'E:\path\to\script.bms'
input_root = r'E:\path\to\input\folders'
output_root = r'E:\path\to\output\folders'

# 遍历输入文件夹
for root, dirs, files in os.walk(input_root):
    for file in files:
        # 构建输入文件路径
        input_file = os.path.join(root, file)
        
        # 构建相对路径和输出文件夹路径
        relative_path = os.path.relpath(root, input_root)
        output_folder = os.path.join(output_root, relative_path)
        os.makedirs(output_folder, exist_ok=True)

        # 调用 QuickBMS
        try:
            subprocess.run([quickbms_path, bms_script_path, input_file, output_folder], check=True)
            print(f"Processed {input_file} -> {output_folder}")
        except subprocess.CalledProcessError as e:
            print(f"Error processing {input_file}: {e}")

print("All files processed successfully.")

1 个赞

其实不用这样,quickbms本来就支持批量,配置了环境变量直接用下面这个格式就行,没配置前面加个./
quickbms_4gb_files.exe -o -F “*.你要提取的文件格式” 你的bms文件名.bms “C:\路径\到\输入文件夹” “C:\路径\到\输出文件夹”

1 个赞

啊!原来如此!原来可以命令行运行,我都不知道,我还傻乎乎开GUI手动一个个点……看了下官网确实是有命令行帮助,感谢传授经验!我记下来~我这边没有配置环境变量,一会儿配置下,感谢! :smile:

1 个赞