winhex腳本命令教程

winhex腳本命令教程

腳本命令適用的環境比較多。腳本文件中的註釋以爲雙斜槓開頭。腳本支持的最長255字符的參數。有疑點的地方是十六進制,文

本字符串(甚至10進制數值)都可以作爲參數,你可以使用引號強制轉換數字參數爲文本參數。如果文本或者變量名中存在空格,

則引號是必須的,在引號中的所有字符都被被識別成一個參數而存在。

當在winhex中使用數學表達式的時候,可以引用數學表達式,但是必須用括號括起來。在數學表達式中不能有空格。同樣可以在數

學表達式中應用數字變量。支持的操作有,加法(+),減法(-),乘法(*),整除(/),模除(%),邏輯運算符AND(&),

OR(|),以及XOR(^)。以下是有效的數學表達式:(5*2+1), (MyVar1/(MyVar2+4)), or (-MyVar)。

以下是目前支持的腳本命令的詳細描述以及使用實例。

Create "D:\My File.txt" 1000
創建一個1000字節的新文件,如果已經存在同名文件,則將其覆蓋。

Open "D:\My File.txt"
Open "D:*.txt"
打開指定格式的文件,如果通配符爲“?”則winhex會讓用戶選擇要打開的文件。

Open C:
Open D:
打開指定的邏輯驅動器。如果通配符爲“:?”則winhex會讓用戶選擇要打開的邏輯驅動器或者磁盤。

Open 80h
Open 81h
Open 9Eh
打開指定的物理介質。軟盤的爲00h,硬盤與u盤爲80h,光盤爲9Eh。
可以增加第二個參數來設定文件或者介質的編輯模式(“in-place”或者“read-only”)

CreateBackup
爲活動文件的當前狀態創建WHX備份。

CreateBackupEx 0 100000 650 true "F:\My backup.whx"
備份當前活動磁盤中從0扇區到100000扇區的數據。備份文件將自動分割成650M大小。並且選擇了壓縮選項。輸出文件的路徑以及

名稱作爲最後的參數寫入。
如果備份文件不需要分割,則第三個參數的數值該爲0即可。如果不啓動壓縮功能則將“true”改爲“false”。如果需要自動分配

文件名以及文件路徑則最後的參數表示爲“""”即可。

Goto 0x128
Goto MyVariable
將光標的位置移動到偏移量0x128位置(16進製表示)。同樣也可以用數字變量(最長8字節)來定義光標移動的位置。

Move 100
將當前光標的位置向後移動100字節(16進制)。

Write "Test"
Write 0x0D0A
Write MyVariable
在光標當前位置(以覆蓋模式)寫入ASCII字符“Test”或者兩個字節的16進制數“0D0A”。這裏同樣可以寫入數字變量中的值。

同時將光標移動到被覆蓋部分的後面。當到達文件的結尾時,將在文件尾部添加空字節以完成操作。下一個寫命令將不會在文件尾

Write2
和“Write”的功能類似,當時當到達文件結尾的時候,不會在文件添加空字節。So it is
not safe to assume that Write2 always moves the current position forward by the number of bytes
written.

Insert "Test"
功能與“Write”類似,但是在“insert”模式只能應用於文件。

Read MyVariable 10
從當前位置讀入10個字節的數據到“MyVariable”變量中。如果變量不存在,它將會創建一個。winhex同時可以支持48個不同的變

量。另一個創建變量的命令是“Assign”。

ReadLn MyVariable
從當前位置讀入一整行的數據到“MyVariable”變量中直到遇到換行符。如果變量已經存在了,則變量的大小將會被從新調整。

Close
不保存的關閉當前活動窗口。

CloseAll
不保存的關閉所有窗口。

Save
保存當前活動窗口中打開的文件或磁盤的修改。

SaveAs "C:\New Name.txt"
將當前活動窗口打開的文件另存爲指定目錄下的文件。如果通配符爲“?”,則winhex會讓用戶自己選擇保存的路徑以及文件名。

SaveAll
保存所有窗口中修改。

Terminate
中斷腳本的執行。

Exit
中斷腳本的執行並且關閉winhex。

ExitIfNoFilesOpen
如果在winhex中沒有打開的文件將終止腳本文件的執行。

Block 100 200
Block "My Variable 1" "My Variable 2"
在當前活動窗口中定義一個偏移量從100到200的選塊(10進制)。下一行命令表示定義從變量"My Variable 1"到"My Variable 2"

的選塊(最長8字節)

Block1 0x100
在偏移量0x100處定義一個字節的選塊。同樣可以使用變量。

Block2 0x200
定義一個從開頭到偏移量0x200部分的選塊。同樣可以使用變量。

Copy
將當前選塊複製進剪切板中。如果沒有定義選塊,其功能和編輯菜單中的複製命令相同。

Cut
將當前選塊中的文件剪切到剪切板中。

Remove
將當前選塊中的數據從文件中移除。

CopyIntoNewFile "D:\New File.dat"
CopyIntoNewFile "D:\File +MyVariable+.dat"
將當前選塊中的數據複製進指定的新文件,而不復制進剪切板。如果沒有定義選塊,其功能和編輯菜單中的複製命令相同。同樣可

以複製磁盤扇區中的數據作爲一個新文件。新建的文件不會自動在winhex的編輯窗口中打開。可以在“+”之間加入變量,變量名

將被解釋爲不大於2^24(16M)的整數。通常在循環應用以及文件恢復中比較有用。

Paste
將剪切板中的數據粘貼入文件中,並且不改變光標當前位置。

WriteClipboard
將剪切板中的數據寫入文件或磁盤扇的當前位置中,不改變光標當前位置,並且覆蓋從當前光標所在位置以後的數據。

Convert Param1 Param2
將當前活動文件中的數據從一種格式轉換成另一種格式。有效的參數是ANSI,IBM,EBCDIC,Binary,HexASCII,IntelHex,

MotorolaS, Base64, UUCode, LowerCase, 以及UpperCase,與轉換菜單中的轉換菜單命令功能相同。

AESEncrypt "My Password"
使用AES加密當前活動文件或者磁盤,或其選塊,使用指定的密鑰(最高32位)。

AESDecrypt "My Password"
解密當前活動文件或磁盤。

Find "John" [MatchCase MatchWord Down Up BlockOnly SaveAllPos Unicode Wildcards]
Find 0x1234 [Down Up BlockOnly SaveAllPos Wildcards]
分別搜索當前活動窗口中名爲“john”的字符串或16進制值數0x1234,並且在第一個搜索到的地方停下來。其他的參數是可選的。

默認的winhex搜索整個文件或磁盤。其他的可選參數功能和通常的winhex搜索選項相同。

ReplaceAll "Jon" "Don" [MatchCase MatchWord Down Up BlockOnly Unicode Wildcards]
ReplaceAll 0x0A 0x0D0A [Down Up BlockOnly Wildcards]
在當前活動窗口中使用其他的值替換所有存在上述字符串或16進制數值的地方。在“in-place”模式下只能應用與磁盤。

IfFound
如果發現了值則執行下面的命令。

IfEqual MyVariable "Hello World"
IfEqual 0x12345678 MyVariable
IfEqual MyVariable 1000
IfEqual MyVariable MyOtherVariable
IfEqual MyVariable (10*MyOtherVariable)
比較兩個整數值(其中每個值可以是常量,整數變量或者數學表達式)或者兩個變量,ASCII字符串,或16進制數值(2進制模式)

。比較兩個對象的2進制數值長度,如果不相同的話則返回結果爲false。只有返回值爲true時,下面的命令纔會被執行。if條件不

可以鑲套使用。

IfGreater MyVariable "Hello World"
IfGreater 0x12345678 MyVariable
IfGreater MyVariable 1000
IfGreater MyVariable MyOtherVariable
IfGreater MyVariable (10*MyOtherVariable)
和IfEqual擁有相同的參數。第一個參數大於第二個參數,返回值爲true,則下面的命令才能被執行。if條件不可以鑲套使用。

Else
應用在IfFound或IfEqual之後。如果沒有任何對象被搜索到或者比較的目標不相同,則執行else後面的代碼。

EndIf
結束if條件命令執行(在IfFound或IfEqual之後)。

{...
ExitLoop
...}
退出循環。其後會有一個方括號來定義其循環次數,可以是變量也可以是關鍵字“unlimited”(無限循環)。winhex腳本中循環

只能使用ExitLoop命令來退出。循環不可以鑲套使用。
舉例:
{ Write "Loop" }[10] 將輸出“Loop”字符串10次。

Label ContinueHere
創建一個標籤並命名爲“ContinueHere”

JumpTo ContinueHere
腳本跳轉到標籤處繼續執行.

NextObj
循環在所有窗口中進行切換“活動”窗口。如果有三個窗口被打開,並且窗口#3狀態爲活動窗口,則“NextObj”命令將會讓窗口

#1變爲活動窗口。

ForAllObjDo
在ForAllObjDo與EndDo之間的腳本代碼將在所有打開的文件或者磁盤中執行。

CopyFile C:\A.dat D:\B.dat
將C:\A.dat文件中的內容複製到D:\B.dat中。

MoveFile C:\A.dat D:\B.dat
將C:\A.dat文件轉移到D盤中並命名爲D:\B.dat。

DeleteFile C:\A.dat
將C:\A.dat文件刪除。

InitFreeSpace
InitSlackSpace
使用當前初始化設置清理當前邏輯驅動器中的所有自由空間或鬆散空間,InitSlackSpace將驅動器的模式臨時轉換爲“in-place”

模式,以保存未保存的修改。

InitMFTRecords
使用當前初始化設置在當前NTFS格式的邏輯驅動器中清理未使用的MFT FILE記錄。對於其他的文件系統無效。修改立即就會寫入硬

盤中。

Assign MyVariable 12345
Assign MyVariable 0x0D0A
Assign MyVariable "I like WinHex"
Assign MyVariable MyOtherVariable
將整數,二進制數值,ASCII文本,或其他變量內容保存到“MyVariable”變量中。如果這個變量不存在,將會被自動創建。其他

的創建變量的方法:Read,GetUserInput,InttoStr。同時可以允許有48個變量存在。

Release MyVariable
刪除一個已存在的變量,因爲winhex腳本中只支持48個變量存在,所以用過的不再使用變量我們可以將其刪除以釋放變量空間。

GetUserInput MyVariable "Please enter your name:"
在腳本運行期間,保存用戶指定的ASCII文本或二進制數據(0x...)到變量“MyVariable”中。第二個參數給除了用戶提示。如果

變量不存在,它將重新創建一個。其他創建變量的方式:Assign,Read。

GetUserInputI MyIntegerVariable "Please enter your age:"
與GetUserInput功能相同,但是隻允許整數型變量。

Inc MyVariable
將變量解釋爲整數(不大於8位)並且每運行一次變量自動加1。在循環中有用。

Dec MyVariable
將變量解釋爲整數(不大於8位)並且每運行一次變量自動減1。在循環中有用。

IntToStr MyStr MyInt
IntToStr MyStr 12345
將第一個變量中的ASCII文本轉換成整數並保存到第二個變量中。

StrToInt MyInt MyStr
將第一個變量中的整數轉換成ASCII文本並保存到第二個變量中。

GetClusterAlloc MyStr
在邏輯卷中,找回哪個文件被儲存在當前簇中的文本描述,然後將描述保存到指定的變量中。

GetClusterAllocEx IntVar
在邏輯卷中,找回一個整數值指示簇是否被分配,1或者非0,表示該簇已被分配。並且將描述保存在指定變量中。

GetClusterSize IntVar
返回邏輯卷中簇的大小,並將數值保存到指定的變量中。

InterpretImageAsDisk
將磁盤鏡像或證據文件作爲原始物理磁盤或分區一樣對待。需要specialist或forensic許可。

CalcHash HashType MyVariable
CalcHashEx HashType MyVariable
與工具菜單中的hash命令功能相同並且將變量儲存在指定變量中(如果變量不存在,則會自動創建)。HashType參數必須爲以下類

型中的一種:CS8, CS16, CS32, CS64, CRC16, CRC32, MD5, SHA-1, SHA-256, PSCHF。CalcHashEx命令將在windows窗口中顯示

hash值。

MessageBox "Caution"
顯示信息對話框,並且提供ok和cancel兩個按鈕。按下cancel按腳本本。

ExecuteScript "ScriptName"
在腳本的當前運行處運行另一個腳本。調用其他外部腳本可以鑲套使用。當被調用的腳本執行完成以後,腳本繼續執行下面的命令

。這個特徵可以幫助用戶清楚的瞭解腳本的結構。

Turbo On
Turbo Off
管理道模式開關。

Debug
用戶可以利用該命令確定腳本中的每一條命令都是否有效。

UseLogFile
錯誤信息被寫入當前文件夾下的日誌文件“scripting.log”。這些信息不會顯示在信息對話框中。非常有用,特別在運行的腳本

主機無法遠程連接的時候。

CurrentPos
GetSize
unlimited
以上三個是winhex腳本中的關鍵字,可以被使用在應用數字參數的地方。在腳本執行過程中,CurrentPos表示當前活動文件或者磁

盤窗口中光標的偏移地址,GetSize表示了它的大小。unlimited實際上表示的是整數2,147,483,647。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章