information:tutorial:other_58004

作者与出处
作者:cxm
http://bbs.ivocaloid.com/thread-58004-1-4.html

此方法可以用来拆各种DDB(Vocaloid声音库)

for i = 0
    findloc SNDFILE string "SND "
    goto SNDFILE
    get SIGN long
    get SIZE long
    get FREQUENCY long
    get CHANNELS short
    get DUMMY long
    savepos OFFSET
    math SIZE -= 18
    #log "" OFFSET SIZE # simple dumping till here, the rest is raw2wav

    set BITS long 16
    set NAME string i
    string NAME += ".wav"
    callfunction raw2wav
next i

startfunction raw2wav
    set MEMORY_FILE binary "\x52\x49\x46\x46\x00\x00\x00\x00\x57\x41\x56\x45\x66\x6d\x74\x20\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x61\x74\x61\x00\x00\x00\x00"

    set RIFFSIZE long SIZE
    math RIFFSIZE += 36
    set BLOCKALIGN long BITS
    set AVGBYTES long FREQUENCY
    math BLOCKALIGN /= 8
    math BLOCKALIGN *= CHANNELS
    math AVGBYTES *= BLOCKALIGN

    putvarchr MEMORY_FILE 4 RIFFSIZE long
    putvarchr MEMORY_FILE 20 1 short          # wFormatTag: Microsoft PCM Format (0x0001)
    putvarchr MEMORY_FILE 22 CHANNELS short   # wChannels
    putvarchr MEMORY_FILE 24 FREQUENCY long   # dwSamplesPerSec
    putvarchr MEMORY_FILE 28 AVGBYTES long    # dwAvgBytesPerSec
    putvarchr MEMORY_FILE 32 BLOCKALIGN short # wBlockAlign
    putvarchr MEMORY_FILE 34 BITS short       # wBitsPerSample
    putvarchr MEMORY_FILE 40 SIZE long

    append
    log MEMORY_FILE2 0 44 MEMORY_FILE
    log MEMORY_FILE2 OFFSET SIZE
    append

    math SIZE += 44
    log NAME 0 SIZE MEMORY_FILE2

将以上代码存为ddb2wav.txt然后扔入QuickBMS即可

QuickBMS下载地址:http://aluigi.org/papers.htm#quickbms
由于YMH做了加密,通过转储临时文件来解包
因为是转储,所以是不可逆的(即不可封包为ddb)

information/tutorial/other_58004.txt · 最后更改: 2011/12/15 13:52 由 mi