溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

winhex腳本命令教程

發(fā)布時(shí)間:2020-02-29 16:58:57 來(lái)源:網(wǎng)絡(luò) 閱讀:520 作者:青橘梔耳 欄目:網(wǎng)絡(luò)安全

winhex腳本命令教程

腳本命令適用的環(huán)境比較多。腳本文件中的注釋以為雙斜杠開頭。腳本支持的最長(zhǎng)255字符的參數(shù)。有疑點(diǎn)的地方是十六進(jìn)制,文

本字符串(甚至10進(jìn)制數(shù)值)都可以作為參數(shù),你可以使用引號(hào)強(qiáng)制轉(zhuǎn)換數(shù)字參數(shù)為文本參數(shù)。如果文本或者變量名中存在空格,

則引號(hào)是必須的,在引號(hào)中的所有字符都被被識(shí)別成一個(gè)參數(shù)而存在。

當(dāng)在winhex中使用數(shù)學(xué)表達(dá)式的時(shí)候,可以引用數(shù)學(xué)表達(dá)式,但是必須用括號(hào)括起來(lái)。在數(shù)學(xué)表達(dá)式中不能有空格。同樣可以在數(shù)

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

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

以下是目前支持的腳本命令的詳細(xì)描述以及使用實(shí)例。

Create "D:\My File.txt" 1000
創(chuàng)建一個(gè)1000字節(jié)的新文件,如果已經(jīng)存在同名文件,則將其覆蓋。

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

Open C:
Open D:
打開指定的邏輯驅(qū)動(dòng)器。如果通配符為“:?”則winhex會(huì)讓用戶選擇要打開的邏輯驅(qū)動(dòng)器或者磁盤。

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

CreateBackup
為活動(dòng)文件的當(dāng)前狀態(tài)創(chuàng)建WHX備份。

CreateBackupEx 0 100000 650 true "F:\My backup.whx"
備份當(dāng)前活動(dòng)磁盤中從0扇區(qū)到100000扇區(qū)的數(shù)據(jù)。備份文件將自動(dòng)分割成650M大小。并且選擇了壓縮選項(xiàng)。輸出文件的路徑以及

名稱作為最后的參數(shù)寫入。
如果備份文件不需要分割,則第三個(gè)參數(shù)的數(shù)值該為0即可。如果不啟動(dòng)壓縮功能則將“true”改為“false”。如果需要自動(dòng)分配

文件名以及文件路徑則最后的參數(shù)表示為“""”即可。

Goto 0x128
Goto MyVariable
將光標(biāo)的位置移動(dòng)到偏移量0x128位置(16進(jìn)制表示)。同樣也可以用數(shù)字變量(最長(zhǎng)8字節(jié))來(lái)定義光標(biāo)移動(dòng)的位置。

Move 100
將當(dāng)前光標(biāo)的位置向后移動(dòng)100字節(jié)(16進(jìn)制)。

Write "Test"
Write 0x0D0A
Write MyVariable
在光標(biāo)當(dāng)前位置(以覆蓋模式)寫入ASCII字符“Test”或者兩個(gè)字節(jié)的16進(jìn)制數(shù)“0D0A”。這里同樣可以寫入數(shù)字變量中的值。

同時(shí)將光標(biāo)移動(dòng)到被覆蓋部分的后面。當(dāng)?shù)竭_(dá)文件的結(jié)尾時(shí),將在文件尾部添加空字節(jié)以完成操作。下一個(gè)寫命令將不會(huì)在文件尾

Write2
和“Write”的功能類似,當(dāng)時(shí)當(dāng)?shù)竭_(dá)文件結(jié)尾的時(shí)候,不會(huì)在文件添加空字節(jié)。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”模式只能應(yīng)用于文件。

Read MyVariable 10
從當(dāng)前位置讀入10個(gè)字節(jié)的數(shù)據(jù)到“MyVariable”變量中。如果變量不存在,它將會(huì)創(chuàng)建一個(gè)。winhex同時(shí)可以支持48個(gè)不同的變

量。另一個(gè)創(chuàng)建變量的命令是“Assign”。

ReadLn MyVariable
從當(dāng)前位置讀入一整行的數(shù)據(jù)到“MyVariable”變量中直到遇到換行符。如果變量已經(jīng)存在了,則變量的大小將會(huì)被從新調(diào)整。

Close
不保存的關(guān)閉當(dāng)前活動(dòng)窗口。

CloseAll
不保存的關(guān)閉所有窗口。

Save
保存當(dāng)前活動(dòng)窗口中打開的文件或磁盤的修改。

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

SaveAll
保存所有窗口中修改。

Terminate
中斷腳本的執(zhí)行。

Exit
中斷腳本的執(zhí)行并且關(guān)閉winhex。

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

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

的選塊(最長(zhǎng)8字節(jié))

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

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

Copy
將當(dāng)前選塊復(fù)制進(jìn)剪切板中。如果沒有定義選塊,其功能和編輯菜單中的復(fù)制命令相同。

Cut
將當(dāng)前選塊中的文件剪切到剪切板中。

Remove
將當(dāng)前選塊中的數(shù)據(jù)從文件中移除。

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

以復(fù)制磁盤扇區(qū)中的數(shù)據(jù)作為一個(gè)新文件。新建的文件不會(huì)自動(dòng)在winhex的編輯窗口中打開??梢栽凇?”之間加入變量,變量名

將被解釋為不大于2^24(16M)的整數(shù)。通常在循環(huán)應(yīng)用以及文件恢復(fù)中比較有用。

Paste
將剪切板中的數(shù)據(jù)粘貼入文件中,并且不改變光標(biāo)當(dāng)前位置。

WriteClipboard
將剪切板中的數(shù)據(jù)寫入文件或磁盤扇的當(dāng)前位置中,不改變光標(biāo)當(dāng)前位置,并且覆蓋從當(dāng)前光標(biāo)所在位置以后的數(shù)據(jù)。

Convert Param1 Param2
將當(dāng)前活動(dòng)文件中的數(shù)據(jù)從一種格式轉(zhuǎn)換成另一種格式。有效的參數(shù)是ANSI,IBM,EBCDIC,Binary,HexASCII,IntelHex,

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

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

AESDecrypt "My Password"
解密當(dāng)前活動(dòng)文件或磁盤。

Find "John" [MatchCase MatchWord Down Up BlockOnly SaveAllPos Unicode Wildcards]
Find 0x1234 [Down Up BlockOnly SaveAllPos Wildcards]
分別搜索當(dāng)前活動(dòng)窗口中名為“john”的字符串或16進(jìn)制值數(shù)0x1234,并且在第一個(gè)搜索到的地方停下來(lái)。其他的參數(shù)是可選的。

默認(rèn)的winhex搜索整個(gè)文件或磁盤。其他的可選參數(shù)功能和通常的winhex搜索選項(xiàng)相同。

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

IfFound
如果發(fā)現(xiàn)了值則執(zhí)行下面的命令。

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

。比較兩個(gè)對(duì)象的2進(jìn)制數(shù)值長(zhǎng)度,如果不相同的話則返回結(jié)果為false。只有返回值為true時(shí),下面的命令才會(huì)被執(zhí)行。if條件不

可以鑲套使用。

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

Else
應(yīng)用在IfFound或IfEqual之后。如果沒有任何對(duì)象被搜索到或者比較的目標(biāo)不相同,則執(zhí)行else后面的代碼。

EndIf
結(jié)束if條件命令執(zhí)行(在IfFound或IfEqual之后)。

{...
ExitLoop
...}
退出循環(huán)。其后會(huì)有一個(gè)方括號(hào)來(lái)定義其循環(huán)次數(shù),可以是變量也可以是關(guān)鍵字“unlimited”(無(wú)限循環(huán))。winhex腳本中循環(huán)

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

Label ContinueHere
創(chuàng)建一個(gè)標(biāo)簽并命名為“ContinueHere”

JumpTo ContinueHere
腳本跳轉(zhuǎn)到標(biāo)簽處繼續(xù)執(zhí)行.

NextObj
循環(huán)在所有窗口中進(jìn)行切換“活動(dòng)”窗口。如果有三個(gè)窗口被打開,并且窗口#3狀態(tài)為活動(dòng)窗口,則“NextObj”命令將會(huì)讓窗口

#1變?yōu)榛顒?dòng)窗口。

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

CopyFile C:\A.dat D:\B.dat
將C:\A.dat文件中的內(nèi)容復(fù)制到D:\B.dat中。

MoveFile C:\A.dat D:\B.dat
將C:\A.dat文件轉(zhuǎn)移到D盤中并命名為D:\B.dat。

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

InitFreeSpace
InitSlackSpace
使用當(dāng)前初始化設(shè)置清理當(dāng)前邏輯驅(qū)動(dòng)器中的所有自由空間或松散空間,InitSlackSpace將驅(qū)動(dòng)器的模式臨時(shí)轉(zhuǎn)換為“in-place”

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

InitMFTRecords
使用當(dāng)前初始化設(shè)置在當(dāng)前NTFS格式的邏輯驅(qū)動(dòng)器中清理未使用的MFT FILE記錄。對(duì)于其他的文件系統(tǒng)無(wú)效。修改立即就會(huì)寫入硬

盤中。

Assign MyVariable 12345
Assign MyVariable 0x0D0A
Assign MyVariable "I like WinHex"
Assign MyVariable MyOtherVariable
將整數(shù),二進(jìn)制數(shù)值,ASCII文本,或其他變量?jī)?nèi)容保存到“MyVariable”變量中。如果這個(gè)變量不存在,將會(huì)被自動(dòng)創(chuàng)建。其他

的創(chuàng)建變量的方法:Read,GetUserInput,InttoStr。同時(shí)可以允許有48個(gè)變量存在。

Release MyVariable
刪除一個(gè)已存在的變量,因?yàn)閣inhex腳本中只支持48個(gè)變量存在,所以用過(guò)的不再使用變量我們可以將其刪除以釋放變量空間。

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

變量不存在,它將重新創(chuàng)建一個(gè)。其他創(chuàng)建變量的方式:Assign,Read。

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

Inc MyVariable
將變量解釋為整數(shù)(不大于8位)并且每運(yùn)行一次變量自動(dòng)加1。在循環(huán)中有用。

Dec MyVariable
將變量解釋為整數(shù)(不大于8位)并且每運(yùn)行一次變量自動(dòng)減1。在循環(huán)中有用。

IntToStr MyStr MyInt
IntToStr MyStr 12345
將第一個(gè)變量中的ASCII文本轉(zhuǎn)換成整數(shù)并保存到第二個(gè)變量中。

StrToInt MyInt MyStr
將第一個(gè)變量中的整數(shù)轉(zhuǎn)換成ASCII文本并保存到第二個(gè)變量中。

GetClusterAlloc MyStr
在邏輯卷中,找回哪個(gè)文件被儲(chǔ)存在當(dāng)前簇中的文本描述,然后將描述保存到指定的變量中。

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

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

InterpretImageAsDisk
將磁盤鏡像或證據(jù)文件作為原始物理磁盤或分區(qū)一樣對(duì)待。需要specialist或forensic許可。

CalcHash HashType MyVariable
CalcHashEx HashType MyVariable
與工具菜單中的hash命令功能相同并且將變量?jī)?chǔ)存在指定變量中(如果變量不存在,則會(huì)自動(dòng)創(chuàng)建)。HashType參數(shù)必須為以下類

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

hash值。

MessageBox "Caution"
顯示信息對(duì)話框,并且提供ok和cancel兩個(gè)按鈕。按下cancel按腳本本。

ExecuteScript "ScriptName"
在腳本的當(dāng)前運(yùn)行處運(yùn)行另一個(gè)腳本。調(diào)用其他外部腳本可以鑲套使用。當(dāng)被調(diào)用的腳本執(zhí)行完成以后,腳本繼續(xù)執(zhí)行下面的命令

。這個(gè)特征可以幫助用戶清楚的了解腳本的結(jié)構(gòu)。

Turbo On
Turbo Off
管理道模式開關(guān)。

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

UseLogFile
錯(cuò)誤信息被寫入當(dāng)前文件夾下的日志文件“scripting.log”。這些信息不會(huì)顯示在信息對(duì)話框中。非常有用,特別在運(yùn)行的腳本

主機(jī)無(wú)法遠(yuǎn)程連接的時(shí)候。

CurrentPos
GetSize
unlimited
以上三個(gè)是winhex腳本中的關(guān)鍵字,可以被使用在應(yīng)用數(shù)字參數(shù)的地方。在腳本執(zhí)行過(guò)程中,CurrentPos表示當(dāng)前活動(dòng)文件或者磁

盤窗口中光標(biāo)的偏移地址,GetSize表示了它的大小。unlimited實(shí)際上表示的是整數(shù)2,147,483,647。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI