• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            自己制作winhex的模板

            傳送門(mén)

              winhex有很多的官方模板,可以在網(wǎng)上下載(后綴tpl)并放至它的安裝目錄,即可使用。不過(guò)要是自己能自己制作,這才好玩,不是么?!

              打開(kāi)模板管理器,可以選中其中一個(gè)模板,下面有應(yīng)用,有編輯,你點(diǎn)開(kāi)編輯按鈕,就可以看到對(duì)應(yīng)的模板源碼。而你點(diǎn)開(kāi)那個(gè)新建按鈕,就可以自己寫(xiě)模板了,最后保存到安裝目錄即可。提醒一點(diǎn),我是在記事本下寫(xiě)好粘貼到新建后那個(gè)面板上的,因?yàn)槲野l(fā)現(xiàn)有好些符號(hào)它不支持,比如下劃線、引號(hào)等,maybe是我自己沒(méi)設(shè)置的原因,不過(guò),這不是重點(diǎn),略過(guò)。寫(xiě)好后,那個(gè)面板下有檢查語(yǔ)法的按鈕,通過(guò)它可判斷你的代碼是否語(yǔ)法正確。

              閑話(huà)不多說(shuō),下面,我來(lái)講解下模板編程的語(yǔ)法:

            模板頭的常用關(guān)鍵字:

              1.template:聲明模板的名字  eg:template "模板1"

              2.description:描述參數(shù),描述這個(gè)模板的用途。(保存好后,你可以在模板管理器里看到你自定義的模板的名字,描述等信息。)eg:description "這個(gè)模板是用來(lái)。。。"

              3.applies_to:參數(shù)可以是file/disk/RAM。指定該模板的適用對(duì)象時(shí)文件、磁盤(pán)還是內(nèi)存。eg:applies_to disk

              4.fixed_start offset:模板的默認(rèn)起始偏移量取決于光標(biāo)停留的位置,而這個(gè)關(guān)鍵字是來(lái)指定偏移量起始位置。eg:fixed_start 0x040

              5.sector-aligned:作用是指定模板從當(dāng)前扇區(qū)的偏移0位置運(yùn)行。無(wú)參數(shù)。

              6.requires offset:匹配數(shù)據(jù),若發(fā)現(xiàn)指定偏移量的位置的數(shù)據(jù)不匹配,就會(huì)報(bào)錯(cuò)。注意:這里的偏移量是相對(duì)于模板起始偏移量計(jì)算的。eg:requires 0x1fe "55aa"

              7.big-endian/little-endian:規(guī)定讀取的字節(jié)順序,也就是平日說(shuō)的小端機(jī)、大端機(jī)的區(qū)別,內(nèi)存的數(shù)據(jù)存儲(chǔ)方向不一樣。無(wú)參數(shù)。

              8.hexadecimal:使模板中讀到的數(shù)據(jù)都以十六進(jìn)制方式顯示,octal為八進(jìn)制,decimal為十進(jìn)制。無(wú)參數(shù)。

              9.read-only/read-write:規(guī)定讀取權(quán)限。無(wú)參數(shù)。

              10.multiple:作用是使模板上出現(xiàn)左右鍵來(lái)讓你可以選擇讀取上一條或下一條記錄,記錄之間的跨度是該模板涉及的所有字節(jié)的長(zhǎng)度。無(wú)參數(shù)。

              11.begin與end:之間的區(qū)域用于存放程序主干。

              這里作下模板頭知識(shí)總結(jié):首先,模板的命名需要關(guān)鍵字template加引號(hào)完成。description參數(shù)可以補(bǔ)充描述。applies_to(RAM、file、disk)后面可以用于指定訪問(wèn)對(duì)象的類(lèi)型,使模板適應(yīng)當(dāng)前工程的根本環(huán)境。fixed_start可以為模板指定起始偏移量。requires則制定更嚴(yán)格的模板運(yùn)行條件,要求模板作用范圍內(nèi)指定位置必須匹配指定數(shù)據(jù)。big-endian、hexadecimal、read-only等都是作用于顯示輸出的可選參數(shù)。頭部關(guān)鍵字沒(méi)有強(qiáng)制規(guī)定“出場(chǎng)順序”,對(duì)引號(hào)的要求也不嚴(yán)格。此外,模板可以用雙斜杠添加注釋?zhuān)@是一個(gè)很好的編程習(xí)慣。

              注意:數(shù)制屬性關(guān)鍵字(hexadecimal等)、顯示方向?qū)傩躁P(guān)鍵字(big-endian等)、讀寫(xiě)屬性關(guān)鍵字(read-only等)都可以插入begin與end之間,用于臨時(shí)改變數(shù)據(jù)的屬性,注意這種改變僅僅作用于緊隨它們的數(shù)據(jù)類(lèi)型聲明語(yǔ)句,而并非全局。

              下面說(shuō)下程序主干里的常用關(guān)鍵字:

              1.int8:帶符號(hào)的8位整型,占用一字節(jié),范圍-128~127。eg:int8 "身高"

              2.uint8:無(wú)符號(hào)的8為整型,占用一字節(jié),范圍0~255。同byte類(lèi)型。

              3.int16:帶符號(hào)的16位整型,占用2字節(jié)。

              不贅述了,與前面這些類(lèi)似的還有:uint16, int32, uint32, int64, int24, uint24。

              4.unit_flex:類(lèi)似于c語(yǔ)言里位域的概念。其語(yǔ)法是:unit_flex "要解釋的位" "title"

              例如:unit_flex "8,7,6,5,4,3,2,1,0" "permissions",表示讀取一個(gè)32位無(wú)符號(hào)整數(shù)并解釋其低9位。

              注意,盡管unit_flex所表示的數(shù)據(jù)長(zhǎng)度可能小于4個(gè)字節(jié),但每次讀取仍然按照4個(gè)字節(jié)來(lái)計(jì)算,故而要特別注意位域的實(shí)際長(zhǎng)度。比如,我們要解釋一個(gè)16位整型數(shù)值的前4位和后12位,應(yīng)當(dāng)首先解釋前4位,這時(shí)光標(biāo)移動(dòng)4字節(jié)。unit_flex "3,2,1,0" "flexlow" 因?yàn)檫€有數(shù)據(jù)要從該16位整型數(shù)值中提取,故回退4個(gè)字節(jié)。move -4 。 解釋后12位。unit_flex "15,14,13,12,11,10,9,8,7,6,5,4" "flexhigh"  由于16位整型數(shù)值只占用兩個(gè)字節(jié),而實(shí)際光標(biāo)移動(dòng)4字節(jié),故需要回退2字節(jié):move -2,  否則會(huì)占用下一個(gè)數(shù)據(jù)的空間。

              5.binary:每次讀取一個(gè)字節(jié),并解釋為二進(jìn)制樣式。

              6.char:讀取一個(gè)字節(jié),ascii碼顯示。也可以用char[len]讀取字符數(shù)組(字符串),len表示長(zhǎng)度。

              7.char16:讀取兩個(gè)字節(jié),Unicode字符顯示。

              8.string:ascii字符串。語(yǔ)法為string len "title"

              9.string16:unicode字符串。

              10.zstring:表示不管長(zhǎng)度讀取一個(gè)ascii字符串,遇到"NULL"時(shí)結(jié)束。zstring16為其Unicode版本。

              11.hex:表示直接讀取字節(jié)而且并不將其解釋為任何數(shù)據(jù)類(lèi)型,直接顯示。

              12.float:占用4字節(jié),浮點(diǎn)數(shù),同c語(yǔ)言。

              13.real:占用6字節(jié),浮點(diǎn)數(shù)。

              14.double:占用8字節(jié),浮點(diǎn)數(shù)。

              15.longdouble:占用10字節(jié),浮點(diǎn)數(shù)。

              16.Loop:實(shí)現(xiàn)簡(jiǎn)單的循環(huán)。中括號(hào)中可以存放常量表示循環(huán)次數(shù),也可以直接引用前面數(shù)據(jù)類(lèi)型的title。

              17.IfEqual:簡(jiǎn)單的if語(yǔ)句,判斷是否相等。比較的對(duì)象可以是常量,也可以是前面數(shù)據(jù)類(lèi)型的title。

              eg:

            byte "學(xué)號(hào)"
            IfEqual  "學(xué)號(hào)"  09
                uint  "成績(jī)"
            Else
                uint  "績(jī)點(diǎn)”
            EndIf

              18.~:占位符。一般用于循環(huán)內(nèi)部數(shù)據(jù)類(lèi)型的標(biāo)題中,以形成數(shù)字遞增的效果。常常與numbering配合使用。numbering可以用來(lái)指定占位符的初始值。

              eg:

            復(fù)制代碼

            uint32  "文件數(shù)目"
            numbering 1
                {
                    string16  255  "~號(hào)文件"
                }["文件數(shù)目"]

            //占位符從1開(kāi)始,循環(huán)代入string16 255 "~號(hào)文件"中。

            復(fù)制代碼

              下面是隨手寫(xiě)的一個(gè)例子,很湊合的說(shuō)~

              源碼:

            復(fù)制代碼

            template "the dbr of ntfs of jiu"
            description "......"
            applies_to disk
            sector-aligned
            requires 0x03 "4e54465320"
            requires 0x1f0 "55aa"
            little-endian
            read-write
            multiple
            begin
                hex 3        "jmp"
                char[8]      "OEM"
                uint16       "bytes per sector"
                uint8        "sectors per cluster"
                uint16       "unused"
                hex 3        "zero"
                hex 10       "unused"
                int64        "total sectors"
                int64        "mft"
                int64        "mftmirr"
                byte         "file record"
                hex 100      "......"
            end

            復(fù)制代碼

              自定義模板的應(yīng)用:

            posted on 2016-11-30 16:09 FongLuo 閱讀(523) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2016年11月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            導(dǎo)航

            常用鏈接

            留言簿

            隨筆分類(lèi)(11)

            隨筆檔案(79)

            文章檔案(1)

            收藏夾(38)

            學(xué)習(xí)網(wǎng)站

            一般網(wǎng)站

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久电影网| 日韩欧美亚洲综合久久影院Ds | 91精品国产91久久久久久青草| 国产午夜精品理论片久久影视| 精品久久久久久国产三级| 一本色道久久88综合日韩精品| 亚洲精品国产美女久久久| 2020最新久久久视精品爱| 久久人人爽人人爽人人爽| 免费观看成人久久网免费观看| 久久AAAA片一区二区| 久久久亚洲欧洲日产国码二区| 国产一区二区三精品久久久无广告 | 久久人人爽人人爽人人片AV麻豆| 亚洲va中文字幕无码久久不卡 | 久久99精品国产麻豆宅宅| 欧美亚洲国产精品久久高清| 久久精品国产99国产精偷| 久久亚洲精品国产亚洲老地址| 久久精品成人免费看| 久久香蕉超碰97国产精品 | 久久婷婷五月综合色高清| 亚洲性久久久影院| 久久久久久久综合日本| 国产成人精品久久| 久久人人爽人人爽人人片AV东京热| 国产叼嘿久久精品久久| 奇米影视7777久久精品人人爽| 国产亚洲色婷婷久久99精品91| 无码超乳爆乳中文字幕久久| 无码人妻少妇久久中文字幕| 国产L精品国产亚洲区久久| 日本免费一区二区久久人人澡| av无码久久久久不卡免费网站| 久久精品人妻中文系列| 精品久久久一二三区| 狠狠色丁香婷婷久久综合| 亚洲国产精品嫩草影院久久| 久久久久人妻精品一区三寸蜜桃| 国产激情久久久久影院| 久久中文字幕视频、最近更新|