學過c/c++
的您會發現
010 editor
的檔案解析指令碼(即
010指令碼)看起來跟
c/c++
的結構體定義比較相似。然而檔案解析指令碼不是結構體,而是乙個自上而下執行的程式,所以它可以使用if、
for、
while
等語句。
在010
指令碼中,宣告的每個變數都對應著檔案的相應位元組。比如以下宣告:
char header[4];
int numrecords;
這意味著,檔案的首
4個位元組將會對映到字元陣列
header
中,下4
個位元組則會對映到整型變數
numrecords
中,並最終顯示在解析結果中。
然而,在編寫
010指令碼時可能會遇到這種情況:需要定義一些變數,但是這些變數並不對應著檔案中的任何位元組,而僅僅是程式執行中所需要的,這時可以使用
local
關鍵字來定義變數。比如以下宣告:
local int i, total = 0;
int recordcounts[5];
for(i=0; i < 5; i++)
total += recordcounts[i];
double records[total];
這樣,i
和total
就不會對映到檔案中去,也不會在解析結果中顯示出來。
另外,在資料的定義中,可以加上一些附加屬性,如格式、顏色、注釋等。附加屬性用尖括號
<>
括起來。常用的屬性包括以下幾種:
, bgcolor=, comment= "", open=true|false|suppress, hidden=true|false,
read=, write=>
下面給出乙個簡單的例項。假設有一種檔案格式如圖
17.3.2
所示,我們可以看出,它由乙個
header
和若干個
record
資料塊組成。在
header
中,numrecords
表示record
的個數,而在
record
中,根據
header
中version
值的不同,
data
的型別也不同。
根據檔案格式,我們可以寫出如下指令碼:
struct file header;
struct record record[ file.header.numrecords ];
} file;
本文節選自《
0day
安全:軟體漏洞分析技術(第
2版)》一書。
圖書詳細資訊
:
010指令碼編寫入門
學過c c 的您會發現010 editor的檔案解析指令碼 即010指令碼 看起來跟c c 的結構體定義比較相似。然而檔案解析指令碼不是結構體,而是乙個自上而下執行的程式,所以它可以使用if for while等語句。在010指令碼中,宣告的每個變數都對應著檔案的相應位元組。比如以下宣告 char ...
010指令碼編寫入門
學過c c 的您會發現010 editor的檔案解析指令碼 即010指令碼 看起來跟c c 的結構體定義比較相似。然而檔案解析指令碼不是結構體,而是乙個自上而下執行的程式,所以它可以使用if for while等語句。在010指令碼中,宣告的每個變數都對應著檔案的相應位元組。比如以下宣告 char ...
centos7 指令碼編寫2
了解shell shell是命令語言直譯器,擁有自己的shell命令集 是使用者和linux核心之家的介面程式,在命令提示符 命令列下輸入的命令由shell解釋後傳給核心 是一種解釋型的程式語言 shell可以執行內部 內嵌命令和執行乙個應用程式。linux系統中最常用的3種shell分別是bour...