下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、winhex模板編寫(xiě)教程附錄a:模板定義1 模板頭模板頭的格式:template title description description applies_to (file/disk/ram) fixed_start offset sector-aligned requires offset hex values big-endian hexadecimal/octal read-only multiple fixed overall size / put any general comments to the template here. begin variable declaratio
2、ns end 在方括號(hào)里的標(biāo)簽表示為可選項(xiàng)。標(biāo)簽的順序沒(méi)有硬性的規(guī)定,用戶(hù)可以隨意的更改他們的順序。表達(dá)式中如果有空格則必須用雙引號(hào)括起來(lái)。模板文件中的注釋以為雙斜杠開(kāi)頭。關(guān)鍵字“applies_to”后必須跟著“file,disk,或ram”中的一個(gè)。模板應(yīng)用于不同的介質(zhì)的時(shí)候,winhex將發(fā)出錯(cuò)誤警告。默認(rèn)的情況下,模板將從窗口中光標(biāo)的位置處執(zhí)行,使用“fixed_start”選項(xiàng)將讓模板從磁盤(pán)或文件的偏移量的絕對(duì)開(kāi)頭處運(yùn)行。應(yīng)用于磁盤(pán)的模板,關(guān)鍵字“sector-aligned”將讓模板從當(dāng)前扇區(qū)的開(kāi)頭處運(yùn)行,而忽略光標(biāo)的當(dāng)前位置。關(guān)鍵字“requires”同“applies_to”的
3、功能類(lèi)似,都是為了避免模板定義的數(shù)據(jù)和應(yīng)用程序的數(shù)據(jù)不匹配而引發(fā)的錯(cuò)誤??梢岳谩皉equires”事先指定好特征碼。比如,一個(gè)有效的主引導(dǎo)扇區(qū)偏移量0x1fe位置必須為“55 aa”(也就是扇區(qū)的最后兩個(gè)字節(jié)),而一個(gè)有效的可執(zhí)行文件在偏移量0x0位置必須為“4d 5a”(“mz”)。模板頭中可以定義多行“ applies_to”。關(guān)鍵字“big-endian”使模板中讀到的字節(jié)以big-endian順序排列(高位字節(jié)開(kāi)頭,intel平臺(tái)中一般都是little-endian,蘋(píng)果機(jī)中通常為big-endian,在windows下分析mac文件可能會(huì)用到此關(guān)鍵字)關(guān)鍵字“hexadecimal
4、”使模板中獨(dú)到的數(shù)據(jù)都以16進(jìn)制方式顯示。關(guān)鍵字“read-only”使模板執(zhí)行后顯示的模板面板為只讀模式,不可通過(guò)模板面修改數(shù)據(jù)。關(guān)鍵字“multiple”可以讓模板直接讀取臨近的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(只適用于數(shù)據(jù)大小固定的情況下)。(可以參考winhex下的“fat directory entry”模板)2 主干:變量申明模板文件的主干部分同其他編程語(yǔ)言一樣,主要由變量申明組成。申明的基礎(chǔ)形式如下:type title 類(lèi)型可以是以下類(lèi)型的任意一種:int8,uint8= byte, int16, uint16, int24, uint24, int32, uint32, int64, uint
5、_flexbinary,float = single, real, double, longdouble = extended,char, char16, string, string16, zstring, zstring16,boole8 = boolean, boole16, boole32hex,dosdatetime, filetime, oledatetime, sqldatetime, unixdatetime = time_t, javadatetime 如果“title”包括空格就必須使用雙引號(hào)括起來(lái)(“title”不能全都是數(shù)字,并且“title”部分大小寫(xiě)不敏感)。最多可
6、以包含41個(gè)字符?!皌ype”部分至少可以使用下列的一個(gè)關(guān)鍵字來(lái)修飾:big-endianlittle-endian hexadecimal decimaloctal read-only read-write這些關(guān)鍵字會(huì)直接作用于其后的變量。如果他們?cè)陬^部已經(jīng)定義過(guò)了,那么在主干部分再重復(fù)定義就顯的多余了。(在頭部定義后作用于全局)在“type”之后的數(shù)字表示變量的長(zhǎng)度(數(shù)值則為字節(jié),字符串則為字符,在模板中可編輯的長(zhǎng)度最多為8192個(gè)字節(jié))。在winhex中使用“char16”,“string16”以及“hex”可以支持使用unicode字符和字符串,但不支持unicode字符開(kāi)頭的256個(gè)
7、ansi字符。“string”,“string16”以及“hex”類(lèi)型the types string,string16, andhex require an additional parameter that specifies the number of elements. this parameter may be a constant or a previously declared variable. if it is a constant, it may be specified in hexadecimal format, which is recognized if the n
8、umber is preceded by 0x. 用戶(hù)可以申明一個(gè)將數(shù)組變量,并且將數(shù)組變量的大小放在后面的方括號(hào)里(如果指定為“unlimited”,則模板會(huì)執(zhí)行直到文件結(jié)尾處)。以下兩行代碼申明了一個(gè)動(dòng)態(tài)的ascii字符串,其長(zhǎng)度取決于之前的變量大小:uint8len charlena string以下兩句功能相同byte len string len a string字符“”表示數(shù)組編號(hào)的占位符(請(qǐng)看下面)。這個(gè)字符對(duì)“char”數(shù)據(jù)類(lèi)型的變量無(wú)效,因此會(huì)自動(dòng)的解析成字符串類(lèi)型。string,string16和hex類(lèi)型的變量大小,可以通過(guò)數(shù)學(xué)表達(dá)式來(lái)表示,數(shù)學(xué)表達(dá)式需要用括號(hào)括起來(lái),并
9、且表達(dá)式中不能包含空格。同樣也可以將變量帶入數(shù)學(xué)表達(dá)式中(同樣變量名不能有空格)。支持的操作有,加法(+),減法(-),乘法(*),整除(/),模除(%),邏輯運(yùn)算符and(&),or(|),以及xor()。比如:(5*2+1),(len1/(len2+4)。注意:結(jié)果必須為正整數(shù)。3 主干:高級(jí)命令當(dāng)我們用大括號(hào)將一個(gè)代碼塊設(shè)置循環(huán)運(yùn)行時(shí),我們可以用占位符“”來(lái)確定循環(huán)的次數(shù),下列代碼中“numbering”定義了初始值為1(默認(rèn)為0)。numbering1 byte len string len string no. 10上面代碼在模板中的運(yùn)行結(jié)果將顯示:“string no. 1”, “
10、string no. 2”.“string no. 10”。用戶(hù)可以使用“unlimited”代替方括號(hào)中的10,這樣winhex就會(huì)循環(huán)執(zhí)行直到文件結(jié)尾部分。或者使用“exitloop”強(qiáng)迫循環(huán)終止。在比較兩個(gè)值是否相等方面,winhex模板給出了一個(gè)非常有用的命令“ifequal”?!癷fequal”操作的兩個(gè)表達(dá)式可以是10進(jìn)制常量,整數(shù)變量或數(shù)學(xué)表達(dá)式,或者字符串(文本或16進(jìn)制值(winhex將逐字節(jié)的進(jìn)行比較)。ascii字符串必須用雙引號(hào)括起來(lái)。而16進(jìn)制數(shù)必須用“0x”開(kāi)頭。公式需要用括號(hào)括起來(lái)。 byte value ifequalvalue 1 exitloop endif
11、 10 “ifequal”命令以“endif”語(yǔ)句作為結(jié)尾。如果表達(dá)式的值是相同的則繼續(xù)運(yùn)行。還可以在語(yǔ)句中插入“else”語(yǔ)句,這樣當(dāng)“ifequal”的兩個(gè)表達(dá)式不相同時(shí),跳轉(zhuǎn)到“else”下繼續(xù)執(zhí)行?!癷fequal”語(yǔ)句不可以鑲套使用?!癷fgeater”語(yǔ)句和“ifequal”的用法相似。只是“ifgeater”是用來(lái)比較第一個(gè)表達(dá)式的值是否大于第二個(gè)表達(dá)式的值。字符串和16進(jìn)制值將按照字典順序排列。為了方便閱讀和查看模板文件,你可以將某些變量捆綁為一組,單獨(dú)的顯示在模板面板上:section.section title. . endsection“move”和“goto”命令不用來(lái)申明變量,但是可以精確的改變當(dāng)前位置,跳過(guò)無(wú)關(guān)的數(shù)據(jù)。使用move n語(yǔ)句可以從當(dāng)前位置條國(guó)n個(gè)字節(jié)到下一個(gè)位置,n可以為負(fù)值(正即向前跳,負(fù)即向后跳)。而goto n語(yǔ)句中的n則表
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年手機(jī)行業(yè)退貨三包服務(wù)規(guī)范合同樣本3篇
- 2025年物流運(yùn)輸掛靠車(chē)輛運(yùn)輸合同范本3篇
- 砌塊工程施工方案
- 2025年行政訴訟上訴狀編寫(xiě)規(guī)范:全面指導(dǎo)版3篇
- 二零二五版科技園區(qū)研發(fā)樓租賃續(xù)約4篇
- 二零二五版門(mén)店合伙人風(fēng)險(xiǎn)管理與責(zé)任承擔(dān)合同4篇
- 2024年中級(jí)經(jīng)濟(jì)師考試題庫(kù)含答案(輕巧奪冠)
- 浮筏施工方案
- 2025年度養(yǎng)老產(chǎn)業(yè)項(xiàng)目貸款擔(dān)保合同范文3篇
- 2025年度個(gè)人網(wǎng)絡(luò)安全服務(wù)買(mǎi)賣(mài)合同(數(shù)據(jù)保護(hù))4篇
- 《健康體檢知識(shí)》課件
- 部編版語(yǔ)文五年級(jí)下冊(cè) 第一單元 專(zhuān)項(xiàng)訓(xùn)練課外閱讀(含答案)
- 蘇少版七年級(jí)美術(shù)下冊(cè) 全冊(cè)
- 名表買(mǎi)賣(mài)合同協(xié)議書(shū)
- JTG-T-F20-2015公路路面基層施工技術(shù)細(xì)則
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 中西方校服文化差異研究
- 《子宮肉瘤》課件
- 《準(zhǔn)媽媽衣食住行》課件
- 給男友的道歉信10000字(十二篇)
- 客人在酒店受傷免責(zé)承諾書(shū)范本
評(píng)論
0/150
提交評(píng)論