dugu18 发表于 2025-1-10 12:22:27

刀剑2_spk工具解包源码

有个开源的软件 quickbms

解密4.5版本以及以下都可以。 后面的版本解不了。关键是 这个软件开源。

# Blade and Sword II 《刀剑2》
#   Note: directory tree not handled, only last folder
# script for QuickBMS http://quickbms.aluigi.org

set KEY binary "\x54\xCC\x95\xB9\x4B\xA1\x9C\x25\x89\x08\x47\x64\x43\x15\x0A\x57"

idstring "spkm1.0\0"
get DUMMY long
get ALIGN long
getdstring HASH 16
get INFO_OFF long
get DUMMY_OFF long

# useless data
#math DUMMY_OFF * ALIGN
#goto DUMMY_OFF
#callfunction DUMP 1

math INFO_OFF * ALIGN
goto INFO_OFF
callfunction DUMP 1

log MEMORY_FILE3 0 SIZE MEMORY_FILE
get NAMES_SIZE long MEMORY_FILE3
savepos TMP MEMORY_FILE3
log MEMORY_FILE4 TMP NAMES_SIZE MEMORY_FILE3
goto NAMES_SIZE MEMORY_FILE3 SEEK_CUR

set PATH string ""
get INFO_SIZE asize MEMORY_FILE3
math INFO_SIZE - 4
for
    savepos CUR_OFF MEMORY_FILE3
    if CUR_OFF > INFO_SIZE
      break
    endif
    get NAME_OFF long MEMORY_FILE3
    math FLAGS = NAME_OFF
    math NAME_OFF >> 2
    math FLAGS & 3

    if FLAGS == 0
      goto -3 MEMORY_FILE3 SEEK_CUR
    else
      goto NAME_OFF MEMORY_FILE4
      get NAME string MEMORY_FILE4

      if FLAGS & 2
            set PATH string NAME
      elif FLAGS & 1
            get OFFSET long MEMORY_FILE3
            math OFFSET * ALIGN

            goto OFFSET
            callfunction DUMP 1
            string NAME p "%s/%s" PATH NAME
            log NAME 0 SIZE MEMORY_FILE
      endif
    endif
next

startfunction DUMP
    savepos ENTRY_OFF
    idstring "spkmrd\0"
    get DUMMY byte
    get DUMMY long
    get DUMMY long
    get DUMMY long
    padding 16
    get SIZE long
    get ZSIZE long
    get ENTRY_SIZE long
    get NEW_OFFSET long
    getdstring HASH 16
    savepos OFFSET
    math ENTRY_SIZE * ALIGN
    math NEW_OFFSET * ALIGN

    # AES on the aligned size and XOR on the rest
    math TMP_ZSIZE = ZSIZE
    log MEMORY_FILE2 0 0
    append
    if NEW_OFFSET != 0
      math TMP = ENTRY_SIZE
      math TMP - OFFSET
      math TMP + ENTRY_OFF
      encryption aes KEY "" 0 16
      log MEMORY_FILE2 OFFSET TMP
      math OFFSET = NEW_OFFSET
      math TMP_ZSIZE - TMP
    endif
    math TMP = TMP_ZSIZE
    math TMP y 16
    encryption aes KEY "" 0 16
    log MEMORY_FILE2 OFFSET TMP
    math OFFSET + TMP
    xmath TMP "TMP_ZSIZE - TMP"
    encryption xor KEY "" 0 16
    log MEMORY_FILE2 OFFSET TMP
    encryption "" ""
    append

    if SIZE == ZSIZE
      log MEMORY_FILE 0 ZSIZE MEMORY_FILE2
    else
      clog MEMORY_FILE 0 ZSIZE SIZE MEMORY_FILE2
    endif

    math ENTRY_OFF + ENTRY_SIZE
endfunction


更神奇的是 这个软件只需要配置脚本 弹解上万个软件的资源包

l3322632 发表于 2025-1-10 12:53:25

不明觉厉

yjuddpl 发表于 2025-1-10 14:46:57

这个厉害了。

忧郁的猫又 发表于 2025-1-10 14:48:57

厉害,感谢分享:

yunlin111 发表于 2025-1-10 17:52:51

:::::

coolchxh 发表于 2025-1-10 18:17:08

写脚本是门槛啊。。

omen404 发表于 2025-2-4 18:39:25

解包后只有贴图音乐,怎么得到模型呢?

冷诉梵音醉 发表于 2025-4-2 11:47:46

本帖最后由 冷诉梵音醉 于 2025-4-2 11:57 编辑

解包出来后最外层的目录没了,咋整呢:

adam点点 发表于 2025-4-2 15:47:47

牛逼啊大佬

QBZ9512 发表于 7 天前

谢谢大佬
页: [1]
查看完整版本: 刀剑2_spk工具解包源码

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明