QUICKBMS 中文指南

2021-09-23 01:29:05 字數 2850 閱讀 6603

我正打算做乙個使用quickbmsqu去解那些沒有解包器的文件的教程。6 ?- s/ g/ b8 }, a$ `

起步會很簡單,然後越來越難,直到你學會並且編寫你自己的指令碼。

我們需要如下的四個工具:

1、16進製制編輯器,比如hxd。(我用winhex)

2、quick bms  老外真廢話,不用這個還寫什麼教程啊?)

3、文字編輯器比如wordpad(我猜老外用的都是免費軟體,我用editplus)

4、支援16進製制的計算機,比如windows自帶的! d% g- z* k, _2

8 m' c3 n' b' @5 t7 u

可以看到右面有一些可辨認的文字; n! p  l. g" f3 @: y

etc\\aura.tex , etc\\cursor.tex , etc\\mahoujin.tex , etc\\env2.tex , and etc\\kaze.tex .  

所以往下看我們就能知道在這個bin檔案裡至少包含5個檔案,如果把他們解包,則會被解包到乙個叫做etc的資料夾中。

我們還是看看這個檔案的檔案頭中的其他部分吧,從前面4個位元組開始。/ q9 j, r" ' f# \& g: |8 v

get files long  

這就告訴quickbms讀乙個長整型值並且把它儲存為變數files。s. a3 z" b" @. o

接下來的4個位元組74 00 00 00 對於quickbms解包沒有用處,但是它表示的是檔案頭的長度。7 n2 b/ d% f) @3 b

5 o6 o( ~  i; a6 y  b7 q+ f

於是我們可以寫出下面一行quickbms指令碼了! m5 r5 k8 m$ q' j( r$ u

get headersz long  

將檔案頭的大小儲存到變數headersz 中: c6 v0 z3 n4 h/ u( s7 u! j) p

現在,在檔名前面,我們又得到了兩個位元組,0c 00,我們知道這是短整型,但是00 0c代表什麼呢?如果我們在16進製制編輯器中把檔名部分選中,就能看到,它的長度正好是c。檔名長度可以寫為:

get nsize short  

把表示檔名長度的兩個位元組儲存到變數nsize中。

- o; b. y) ?9 }+ p0 f

在bms語言中,儲存檔名應該寫成下面的樣子:

getdstring name nsize  

這就是說,儲存乙個長度為nsize的字串到變數name中。

好了,現在我們在檔名之後又得到了另外4個位元組:7c 00 00 00

我們已經知道了檔名,現在要解包這個檔案,那麼我們需要知道檔案的大小以及儲存的路徑。

很顯然,作為檔案的大小來說,7c不是乙個很大的數字。那麼讓我們看看偏移量7c的地方是什麼。7 e1 w5 \9 r8 q, k( m) q

' u& b6 z+ t/ q7 ?

我們就能看到下面的圖/ n- }& b' e" b" s# p

這裡好像是乙個檔案的檔案頭img0,於是我們寫下這行表示這是檔案的開頭:

get offset long  $ s2 |4 z  m( ?' p9 o2 k" e: }

將4個位元組儲存到變數offset中。1 g3 l) g0 g4 l/ e& k  f0 s

接下來的4個位元組70 10 00 00看上去比較大,所以讓我們看看這裡是不是檔案的長度。先翻譯成00 00 10 70或者說是1070,從剛才的偏移量7c加上長度1070- q% t2 x  j# a; x! l- j

哦,我看到了truevision-xfile,這是乙個典型的tga檔案結尾。而且我們還看到了這個檔案是以img0開頭的。0 n4 m# `4 z) x7 z$ }0 c+ ~/ [9 u6 k

這意味著我們找到了檔案的長度。記下:

get size long  

把4個位元組儲存到變數size中。4 q0 j+ z7 t' e' _3 [1 q0 v: n3 s

好了,現在我們下乙個檔案的兩個位元組,它們看上去挺相似的。: [$ f% r% r2 v2 ~

把0e 00翻譯成00 0e或者e

檔名前的兩個位元組就是檔名的長度,讓我們看看是不是。" |5 ^7 `( j! ]1 % h( g

在迴圈之後,這樣迴圈就可以進行了。! ?" v/ t2 x% ~/ i8 m& r' _$ n; e* u

好了,儲存指令碼檔案並且命名為extract.bms,把etc.pac、extract.bms 和quickbms.exe放到乙個資料夾中。在這個例子中,我們假設是c:\\temp! u- x' o# m" g( r, e/ b

現在在命令列模式下,進到剛才那個目錄中並且輸入:

quickbms.exe -l extract.bms etc.pac .  

將會列出檔案的資訊和大小。如果指令碼不正確將給出錯誤資訊。

耶,它執行了:

現在讓我們試著把它們解包到extracted  目錄中,輸入

quickbms.exe extract.bms etc.pac extracted  - y5 i; j, m! s/ w% i0 |

好,正確執行並且解包了。

指令碼**:  

get files long  

get headersz long  

for i = 0 < files  8 ~0 i8 _2 n1 t' d+ x

get nsize short  

getdstring name nsize  

get offset long  

get size long  

- s2 o3 d4 y. u3 f0 |$ k! {

log name offset size  3 j& o  r# @( j6 y+ h0 ~2 y: s5 v

next i

Webpack 中文指南

於 webpack 是當下最熱門的前端資源模組化管理和打包工具。它可以將許多鬆散的模組按照依賴和規則打包成符合生產環境部署的前端資源。還可以將按需載入的模組進行 分隔,等到實際需要的時候再非同步載入。通過loader的轉換,任何形式的資源都可以視作模組,比如 commonjs 模組 amd 模組 e...

TIdUDPClient控制項中文指南

tidudpclient控制項 用於實現乙個udp客戶端 所屬單元 idudpclient 本控制項使用send方法傳送資料,遠端主機由host和port屬性指定。屬性host string 遠端計算機名稱。用來指定遠端計算機系統。該名稱可以是ip位址,如 129.71.2.4 也可以是計算機 名稱...

zabbix中文配置指南

zabbix執行條件 server zabbix server需執行在lamp linux apache mysql php 環境下,對硬體要求低。agent 目前已有的agent基本支援市面常見的os,包含linux hpux solaris sun windows。snmp 支援各類常見的網路裝...