姚 罡
(桂林電子科技大學,廣西 桂林541004)
PE(Portable Execute)文件被稱為可移植的執(zhí)行體,是微軟制定的一種文件標準,常見的EXE、DLL、OCX、SYS、COM都是PE文件,在Windows操作系統(tǒng)中舉足輕重。在加密與解密、軟件漢化、逆向工程、反病毒等安全領(lǐng)域都涉及到PE文件的應用。
但PE文件格式定義復雜,難以理解,導致入門較難,學生很難深入去研究。通過多媒體教學,課堂上直接利用Winhex打開任意EXE文件或DLL文件,從原始的十六進制找到我們感興趣的值,可以明了地分析出Windows操作系統(tǒng)如何載入EXE文件及DLL文件的工作機制,將抽象的格式定義以直觀、互動的方式展示給學生,提高學生的學習興趣。
本文介紹了如何應用Winhex理解PE文件的教學過程,以研究輸入表和輸入地址表為例,并對兩者的運行機制進行分析,使得學生理解Windows操作系統(tǒng)如何載入PE文件,以及可執(zhí)行文件如何調(diào)用API函數(shù)。
winhex是一款以十六進制編輯器為核心的數(shù)據(jù)處理高級工具,可以直接打開硬盤上的文件和內(nèi)存,并以十六進制形式顯示數(shù)據(jù),可以實現(xiàn)數(shù)據(jù)恢復、低級數(shù)據(jù)處理等強大功能,可分析RAW格式原始數(shù)據(jù)鏡像文件中的完整目錄結(jié)構(gòu)。Winhex可用于分析靜態(tài)PE文件(硬盤上)和動態(tài)PE文件(調(diào)入內(nèi)存后),并通過靜、動態(tài)PE文件的比較,重點討論兩個非常重要的數(shù)據(jù)結(jié)構(gòu):輸入表和輸入地址表,從而掌握Windows操作系統(tǒng)中PE文件的工作機制。
通過理解PE文件格式中的字段,可以逐步理解PE文件的結(jié)構(gòu)及其原理。PE文件格式如圖1所示。所有的PE文件都是從MS-DOS頭開始,該頭部后面的是PE頭,其位置可從MS-DOS頭中的一個e_lfanew字段的值得到,PE頭是由PE Signature、IMAGE_FILE_HEADER、IMAGE_OPTIONAL_HEADER構(gòu)成,在IMAGE_NT_HEADERS頭部后面是節(jié)表(Section Table),節(jié)表是一個數(shù)組,數(shù)組中的每一個元素用來描述后繼每一節(jié)的信息,如節(jié)名、節(jié)大小、節(jié)偏移、節(jié)屬性等。在節(jié)表后面是具體的節(jié),如代碼節(jié)(.text)、數(shù)據(jù)節(jié)(.data)等,PE文件中非常重要的輸入表、輸出表等就存在上述節(jié)中。
圖1 PE文件格式
利用Winhex打開一個可執(zhí)行文件thunder.exe(迅雷安裝程序),通過對字段值的分析,即DOS頭的“MZ”和PE頭的“PE”這兩個標志可以初步判斷當前程序是否是目標是PE文件。也就是通過IMAGE_DOS_HEADER結(jié)構(gòu)來識別一個合法的DOS頭,可以看到文件起始為0X4D5AH(“MZ”),接著通過該結(jié)構(gòu)的e_lfanew(偏移3CH,32bits)的值是0x00000118H(注意字節(jié)序)即為PE頭開始的偏移,定位到該偏移,其值為PE文件開始的標志0X00004550H(“PE 古蔺县| 普格县| 江都市| 平原县| 思茅市| 清涧县| 兴城市| 隆化县| 化隆| 兴海县| 南郑县| 和静县| 太谷县| 湾仔区| 沿河| 安康市| 枞阳县| 大丰市| 津南区| 牟定县| 简阳市| 郴州市| 来宾市| 南岸区| 鹤壁市| 临海市| 湖南省| 新疆| 绩溪县| 霍林郭勒市| 兴义市| 苏尼特左旗| 安陆市| 三穗县| 乐亭县| 长海县| 天祝| 五常市| 杭州市| 溧水县| 三都|