
QuickBMS 快速上手用 3 行腳本提取 2000 游戲文件格式【免費(fèi)下載鏈接】QuickBMSQuickBMS by aluigi - Github Mirror項(xiàng)目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS你拿過一個(gè) 3GB 的游戲資源包想摳出里面的貼圖和音頻做 MOD結(jié)果文件全是用廠商自定義格式打包、壓縮甚至加密的二進(jìn)制數(shù)據(jù)7z 打不開專用解包工具又三天兩頭跟不上新版本。這種時(shí)候你需要的是 QuickBMS——一個(gè)靠純文本腳本驅(qū)動的跨平臺文件提取引擎專門用來從游戲存檔和各種自定義壓縮格式里把文件原樣摳出來。上面這張截圖里的反匯編引擎就是 QuickBMS 內(nèi)置能力的一部分當(dāng)格式文檔缺失時(shí)你可以直接在工具里對著機(jī)器碼做逆向分析找字段、找偏移量不用切到別的軟件。QuickBMS 到底是什么一個(gè)腳本驅(qū)動的萬能提取器別被名字騙了QuickBMS 不是某個(gè)游戲的解包器而是一臺通用提取平臺。它的核心思路是把怎么讀文件這件事從程序里剝離出來寫成一段純文本腳本BMS 腳本你可以理解成專門用來讀二進(jìn)制文件的微型編程語言。引擎本身負(fù)責(zé)執(zhí)行腳本并內(nèi)置了幾百種現(xiàn)成的壓縮和解密算法——LZSS、deflate、lzma、zstd、brotli、Snappy還有大量游戲?qū)S盟惴≧efPack、RNC、Sega LZ77 之類都躺在 src/compression/ 和 src/encryption/ 里。打個(gè)比方它就像一臺萬能鑰匙車床。鑰匙解包邏輯不用你現(xiàn)場鑄直接找現(xiàn)成的模具就行模具就是 .bms 腳本。社區(qū)為 2000 多種游戲格式寫過腳本絕大多數(shù)情況下你連腳本都不用自己寫。整臺車床分三塊腳本解釋器核心在 src/quickbms.c負(fù)責(zé)解析并逐條執(zhí)行 BMS 指令get 讀字段、log 落盤、clog 解壓、math 算數(shù)、if/for 控制流程算法庫src/libs/ 下集成了上百個(gè)第三方壓縮/加密庫腳本里喊一聲ComType deflate引擎就把 deflate 解碼掛上去文件接口統(tǒng)一處理物理文件、內(nèi)存文件MEMORY_FILE和臨時(shí)文件腳本里對文件的操作不用關(guān)心它到底在磁盤還是內(nèi)存。這套設(shè)計(jì)帶來的最大紅利腳本是純文本好寫好傳好分享。分析出一個(gè)新格式的人貼 20 行腳本到論壇全社區(qū)都能直接用。上手實(shí)戰(zhàn)3 行命令提取你的第一個(gè)游戲文件假設(shè)你手上有一個(gè)game_data.pak目標(biāo)格式對應(yīng)社區(qū)里現(xiàn)成的frostbite.bms腳本。整個(gè)流程就三步找腳本 → 列文件 → 提取。# 先列一遍包里的內(nèi)容不解壓 quickbms -l -f {}.png;{}.ogg frostbite.bms game_data.pak # 確認(rèn)沒毛病后正式提取 quickbms -f {}.png frostbite.bms game_data.pak output_folder第二條命令里的-f是過濾器{}是通配符在 Windows 下用{}代替*可以避免命令行吞星號的問題。 實(shí)戰(zhàn) tip如果只想確認(rèn)這腳本到底能不能讀我這個(gè)包加-0參數(shù)——腳本照常走完整流程但不落盤、不占空間是白嫖空間的最快驗(yàn)證方式。還有個(gè)很多人不知道的用法輸入?yún)?shù)可以直接給一個(gè)文件夾。把整個(gè)游戲的資源目錄丟進(jìn)去QuickBMS 會對里面每個(gè)匹配的文件依次執(zhí)行同一個(gè)腳本一條命令拆完整個(gè)游戲。拆開后蓋腳本和算法是怎么配合的會用了再看原理體驗(yàn)就是原來如此。一個(gè)典型的提取腳本長這樣某格式的簡化版# 讀文件頭里的條目數(shù)量和目錄表偏移 get ENTRIES long get TOC_OFF long goTo TOC_OFF for i 0 ENTRIES get NAME string get OFFSET long get SIZE long clog NAME OFFSET SIZE # 有壓縮時(shí)引擎自動解碼 next i執(zhí)行時(shí)發(fā)生的事很直白解釋器逐條讀指令get按當(dāng)前字節(jié)序大端/小端可以隨時(shí)用Endian指令切從文件里摳出字段存進(jìn)變量for循環(huán)走完整個(gè)目錄表clog負(fù)責(zé)解壓并寫盤——如果腳本聲明了這個(gè)文件用了某種壓縮算法引擎就從內(nèi)置庫里調(diào)對應(yīng)的解碼器沒有壓縮就原樣拷貝。整個(gè)提取流程就是讀文件頭 → 解析目錄表 → 遍歷條目 → 套壓縮/解密算法 → 落盤遇到復(fù)雜格式比如目錄表本身被壓縮、字段要乘偏移系數(shù)也沒關(guān)系BMS 支持條件判斷、數(shù)學(xué)運(yùn)算、內(nèi)存文件甚至調(diào)用 DLL 和反匯編理論上任何格式都能用純文本描述出來。這也是它的腳本生態(tài)能長到 2000 的原因——語言本身沒有天花板。3 步從源碼編譯 QuickBMS源碼編譯就三步Makefile 已經(jīng)把幾百個(gè)源文件和第三方庫的路徑都列好了git clone https://gitcode.com/gh_mirrors/qui/QuickBMS cd QuickBMS/src make # 需要 OpenSSL 開發(fā)庫Debian 系: apt-get install gcc g zlib1g-dev libssl-dev編完make install或直接運(yùn)行./quickbms都行。各平臺的差異一張表帶過平臺注意事項(xiàng)Linux x86默認(rèn) 32 位構(gòu)建64 位系統(tǒng)裝 32 位依賴libssl-dev:i386即可macOS先brew install opensslMakefile 里已自動處理 brew 路徑Windows直接拿官方預(yù)編譯的 quickbms.exe不用編譯另外注意默認(rèn)版本內(nèi)部用 32 位整數(shù)做計(jì)算存檔上限約 4GB、單個(gè)壓縮文件上限 2GB處理更大的包要用官方提供的quickbms_4gb_files版本。踩坑實(shí)錄這些坑我都替你踩過坑 1提取出來的文件是亂碼或者提示錯誤中斷。原因九成在偏移量腳本讀目錄表的字段長度long/short、字節(jié)序和實(shí)際格式對不上。解法是加-v重跑它會逐條打印腳本執(zhí)行過程和每個(gè)變量的值對照你的十六進(jìn)制轉(zhuǎn)儲看哪個(gè)字段開始讀歪再回去改腳本里對應(yīng)的get???2大存檔掃描到一半報(bào)錯或特別慢。原因是 32 位構(gòu)建的內(nèi)存保護(hù)機(jī)制在攔你。解法兩條換 4GB 版本quickbms_4gb_files處理大文件或按官方說明加-9關(guān)閉內(nèi)存保護(hù)救急。坑 3改完文件想重新注回存檔reimport壓縮類文件注入失敗。兩個(gè)硬限制要記牢重新導(dǎo)入的文件尺寸不能大于原始文件reimport2 模式除外該壓縮算法必須同時(shí)提供壓縮和解壓縮實(shí)現(xiàn)只有解壓的算法注不回去。另外存檔一定要先備份。坑 4Windows 命令行里-f *.png不生效。*會被 shell 提前展開。用{}替代星號-f {}.png這是官方推薦的寫法跨平臺都安全。橫向?qū)Ρ萉uickBMS 憑什么值得你裝維度QuickBMS專用解包工具通用壓縮工具7z/zip格式覆蓋2000 種腳本生態(tài)單一游戲的幾個(gè)版本標(biāo)準(zhǔn)歸檔格式新格式適配寫幾行 BMS 腳本當(dāng)天可用等作者更新完全不支持提取 注回同一腳本雙向工作往往只有單向不適用上手成本找腳本零成本寫腳本有學(xué)習(xí)曲線零成本零成本說實(shí)話這個(gè)工具最大的殺手锏不是算法多而是腳本生態(tài)格式文檔失傳、廠商偷偷改版本的時(shí)候?qū)S霉ぞ咦髡卟桓履阒荒芨傻榷?QuickBMS 社區(qū)通常幾天內(nèi)就會有人貼出修好的腳本。格式已知且穩(wěn)定的場合專用工具夠用但只要你面對的是格式不明或一屋子未知格式QuickBMS 基本是繞不開的那一個(gè)。工具在這腳本在那。去社區(qū)腳本庫翻翻看說不定你要提的那個(gè)格式早就有人替你踩完坑了——找到一個(gè)能用的 .bms兩條命令文件就在輸出目錄里等你了。【免費(fèi)下載鏈接】QuickBMSQuickBMS by aluigi - Github Mirror項(xiàng)目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考