語法分析是編譯過程的一個邏輯階段,傳統應用中它的主要任務是在詞法分析的基礎上將單詞符號序列組合成各類語法短語,如“程序”、“語句”、“表達式”等。語句分析程序判斷源程序在結構上是否正確,源程序的結構由上下文無關文法描述。
隨著軟件工程領域的不斷發展,對現有軟件系統進行維護、重構的需求大量增加,逆向工程作為一種軟件工程方法在市場需求下孕育而生,因此,對程序源代碼進行逆向分析從中獲取關鍵信息成為逆向工程的基礎,語法分析有了非傳統意義的運用,成為軟件逆向工程中必不可少的一部分。文中語法分析模塊主要包括:命令行語句的定義、分類、編碼、識別、信息標注及存儲結構。
1 語法分析在逆向分析中的應用
語法分析的解析對象是詞法分析的結果——經過信息標注的粗粒度單詞符號序列,其主要任務是基于詞法分析的輸出結果識別符合自定義規則的合法語法單位——命令行語句,并將這些命令行語句的信息利用編碼等方式進行標注,獲得含有信息標注的命令行語句序列。
1.1命令行語句的分類編碼
依據Microsoft Visual Studio.NET 2003文檔,深入研究c#的語法規范及特點,遵循C#語法定義的命令語句的原則——可單個執行的命令,針對源代碼逆向分析獲取信息的需求,自定義了一套命令行語句規則,其分類編碼如圖l所示。
圖1命令行語句的分類編碼
1.2命令行語句的識別
逆向分析的源代碼,來自不同的程序員,而每個程序員都擁有各自獨有的編碼風格。為了簡化命令行語句的識別及信息提取的過程,在分析識別前首先需要對源代碼進行整形處理,將不同風格的源代碼統一為便于分析識別的格式,避免在語句識別或信息提取過程中多樣化源代碼格式帶來的困擾。源代碼整形處理主要包括兩部分:
(1)命令行語句劃分
命令行語句劃分的主要任務是將不同編碼風格的源代碼從命令行的角度統一化,設計一種統一的程序代碼行規則。在逆向分析過程中,源代碼是可運行的,默認為語法無誤,那么,對不要求檢查語法錯誤的逆向分析來說,本文對命令行語句的劃分采用界限符的劃分方式。當然沒有絕對的簡單,運用此方法必須要排除一些很特殊的情況,但是這些情況都是可以通過一些的前期工作來解決。
(2)命令行語句行內格式整理
命令行語句行內格式整理的主要任務是定義命令行內單詞符號間的間距格式規范,并按照這樣的規范去掉命令行內不必要的空格字符、制表字符等,以達到統一命令行內的編碼格式。
據統計,需要進行行內格式整理的命令行語句中涉及到的單詞符號可分6類,分別為:關鍵字、標識符、運算符、常數、字符串、字符。需要逐個統計該6類單詞符號的相鄰情況,定義它們相鄰的間距格式,具體如下表l單詞符號間間距格式。矩陣中灰色表示兩者無相鄰情況,“O”表示兩類單詞符號間間距一個空格,“X”表示兩類單詞符號之間無空格間距。
表1單詞符號間間距格式
對于命令行語句的識別,分為三類:第一類,注釋語句、{語句}、語句、特殊指令語句,這一類語句類型的識別通過單詞符號內部表示的類別信息完成;第二類,類型聲明語句、異常處理語句、訪問器語句、不安全代碼語句、控制語句、功能語句、外部文件引入語句,這一類命令語句的類型識別通過語句中固定的C#關鍵字判定識別;第三類,方法聲明語句、字段聲明語句、變量聲明語句、賦值語句、類方法調用語句,它們是一類特殊的命令語句,沒有固定的C#關鍵字作為識別標識,這一類語句類型通過它們自獨有的語句特征來識別。
1.3命令行語句的信息標注及信息結構
語法分析模塊的主要功能是按照自定義的命令行語句規則進行命令行語句的劃分識別,最終以包含信息標注的命令行語句序列的形式輸出,并以一種固定的結構形式存儲,方便信息檢索。本文涉及的命令行語句信息及其信息存儲結構如表2所示。
表2命令行語句信息結構
從表2可以知道,命令行語句信息結構包含5部分內容:命令行語句序號,記錄命令行語句在命令行語句序列文件中的位置;命令行語句編碼,表標注命令行語句的編碼信息;起始單詞序號,標注命令行語句的首單詞符號在細粒度單詞符號序列中的位置;終止單詞序號,標注命令行語句的尾單詞符號在細粒度單詞符號序列中的位置;語句塊結束語句序號,針對命令行后面有語句塊的語句,標注該命令行語句的語句塊結束位置。其中對命令行語句的內容采用記錄命令行語句首尾單詞符號在細粒度單詞符號序列中的位置的方式,既方便回溯到命令行在源代碼流文件中的位置,又能減少文本的儲存量。并且記錄了命令行語句的語句塊結束位置,方便定位信息搜索范圍。
2 結束語
語法分析方法作為編譯系統中不可缺少的過程,對程序分析有著至關重要的作用。在深入分析、研究其工作原理的基礎上,將其運用于軟件逆向分析的源代碼的解析過程,并詳細介紹了語法分析方法在該過程中的具體應用以及該過程中涉及到的各類技術方法。隨著軟件工程的不斷發展,語法分析方法將隨著高級語言的發展應用到更多的領域。
相關文章
- 2021-09-08BIM技術叢書Revit軟件應用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業技術人員計算機應用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應用 制表、數據處理及宏應用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎培訓教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎培訓教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術設計案例教程中文版AutoCAD 建筑設計案例
- 2021-08-29環境藝術制圖AutoCAD [徐幼光 編著] 2013年PDF下載
- 2021-08-29機械AutoCAD 項目教程 第3版 [繆希偉 主編] 2012年PDF