定義
EXE File 可執行程式 一種可在作業系統存儲空間中浮動定位的可執行程式。
MS-DOS和MS-WINDOWS下,此類
檔案擴展名為·exe。
WINDOWS作業系統中的二進制
執行檔,執行檔分兩種一種是
後輟名為·COM另一種就是.EXE 了。
.COM一般用於DOS,在WINDOWS系統中的執行檔案一般都是·EXE檔案在 MS-DOS 中,用以標識執行檔的檔案
擴展名。用戶在提示行中輸入不帶 .exe
擴展名的檔案名稱後按 Enter 鍵就能運行可執行程式。
結構
EXE檔案分為兩個部分: EXE檔案頭和程式本體。exe檔案比較複雜,屬於一種多段的結構,是DOS最成功和複雜的設計之一。每個exe檔案包含一個檔案頭和一個可重定位程式的映像。檔案頭包含MS-DOS用於載入程式的信息,例如程式的大小和暫存器的初始值。檔案頭還指向一個重定位表,該表包含指向程式映像中可重定位段地址的指針鍊表。MS-DOS通過把該映像直接從檔案複製到記憶體載入exe程式,然後調整定位表中說明的可重定位段地址。定位表是一個重定位指針數組,每個指向程式映像中的可重定位段地址。
EXE 檔案比較複雜,每個EXE檔案都有一個
檔案頭,結構如下:
EXE檔案頭信息
―――――――――――――――――――
├
偏移量 ┤ 意義 ┤├00h-01h ┤MZ'EXE檔案標記 ┤
├2h-03h ┤檔案長度除512的餘數 ┤
├04h-05h ┤...............商 ┤
├06h-07h ┤重定位項的個數 ┤
├08h-09h ┤檔案頭除16的商 ┤
├0ah-0bh ┤程式運行所需最小段數 ┤
├0ch-0dh ┤..............大.... ┤
├10h-11h ┤........sp ┤
├12h-13h ┤檔案校驗和 ┤
├14h-15h ┤IP ┤
├16h-17h ┤CS ┤
├18h-19h ┤............ ┤
├1ah-1bh ┤............ ┤
├1ch ┤............ ┤
―――――――――――――――――――――――――
.EXE檔案包含一個
檔案頭和一個可
重定位程式映象。檔案頭包含MS-DOS用於載入程式的信息,例如程式的大小和暫存器的初始值。檔案頭還指向一個重定位表,該表包含指向程式映象中可重定位
段地址的
指針鍊表。檔案頭的形式與EXEHEADER結構對應:
EXEHEADER STRUC
exSignature dw 4D5AH ;.EXE標誌
exExraBytes dw ? ;最後(部分)頁中的位元組數
exPages dw ? ;檔案中的全部和部分頁數
exRelocItems dw ? ;重定位表中的指針數
exHeaderSize dw ? ;以
位元組為單位的
檔案頭大小
exMinAlloc dw ? ;最小分配大小
exMaxAlloc dw ? ;最大分配大小
exInitSS dw ? ;初始SS值
exInitSP dw ? ;初始SP值
exChechSum dw ? ;補碼校驗值
exInitIP dw ? ;初始IP值
exInitCS dw ? ;初始CS值
exRelocTable dw ? ;
重定位表的位元組
偏移量exOverlay dw ? ;覆蓋號
詳細說明
EXEHEADER ENDS程式映象,包含處理器代碼和程式的初始數據,緊接在
檔案頭之後。它的大小以
位元組為單位,等於.EXE檔案的大小減去檔案頭的大小,也等於exHeaderSize的域的值乘以16。MS-DOS通過把該映象直接從檔案拷貝到記憶體載入.EXE程式然後調整定位表中說明的可
重定位段地址。
定位表是一個重定位
指針數組,每個指向程式映象中的可重定位段地址。檔案頭中的exRelocItems域說明了數組中指針的個數,exRelocTable域說明了分配表的起始檔案
偏移量。每個重定位指針由兩個16位值組成:偏移量和段值。 為載入.EXE程式,MS-DOS首先讀
檔案頭以確定.EXE標誌並計算程式映象的大小。然後它試圖申請記憶體。首先,它計算程式
映象檔案的大小加上PSP的大小再加上EXEHEADER結構中的exMinAlloc域說明的記憶體大小這三者之和,如果總和超過最大可用記憶體塊的大小。則MS-DOS停止載入程式並返回一個出錯值。否則面,它計算程式映象的大小加上PSP的大小再加上EXEHEADER結構中exMaxAlloc域說明的記憶體大小之和,如果第二個總和小於最大可用記憶體塊的大小,則MS-DOS 分配計算得到的記憶體量。否則,它分配最大可用記憶體塊。分配完記憶體後,MS-DOS確定
段地址,也稱為起始段地址,MS-DOS從此處載入程式映象。如果exMinAlloc域和exMaxAlloc域中的值都為零,則MS-DOS把
映象儘可能地載入到記憶體最高端。否則,它把映象載入到緊挨著PSP域之上。接下來,MS-DOS讀取
重定位表中的項目調整所有由可重定位指針說明的段地址。對於重定位表中的每個
指針,MS-DOS尋找程式映象中相應的可重定位段地址,並把起始段地址加到它之上。一旦調整完畢,
段地址便指向了記憶體中被載入程式的代碼和
數據段。 MS-DOS在所分配記憶體的最低部分建造256位元組的PSP,把AL和AH設定為載入 .COM程式時所設定的值。MS-DOS使用
檔案頭中的值設定SP與SS,調整SS初始值,把起始地址加到它之上。MS-DOS還把ES和DS設定為PSP的段地址.最後,MS-DOS從
程式檔案頭讀取CS和IP的初始值,把起始段地址加到CS之 上,把控制轉移到位於調整後地址處的程式。
讀取原始碼
生成的程式是不能看到原始碼的,不過可以看到那個程式的資源,用E-Code Explorer 反彙編調試由易語言編譯生成的易格式執行檔,分析內部結構,查看其中的各項數據。
【功能簡介】
1.格式分析:分析易格式執行檔的總體結構,查看對應項的數據。分別對PE骨骼(PE頭)和易格式原體分析,以樹形結構清晰的顯示,同時輔以詳細的分析表格。
2.反彙編分析:快速的靜態反彙編易格式執行檔。提供方便的跳轉、調用目標地址的代碼預覽功能。
3.窗體分析:對易格式執行檔中包含的窗體數據分析。以樹型結構清晰的顯示窗體單元的從屬結構。詳細的控制項屬性顯示、準確的事件處理函式定位、與反彙編模式便捷的切換,讓使用者可以立即進入要調試的事件函式領空,避免在runtime的空間裡四處打轉浪費時間。這一點對於調試非線性事件驅動類型的程式是必須的。
4.符號修飾:可以調用易語言支持庫作為符號表,對反彙編後的代碼進行修飾,可以直接分析出函式所調用的方法,操作的屬性,使用到的常量、基本數據類型、自定義數據類型和視窗單元。極大地提高了代碼的可讀性。
5.內部數據分析:能夠分析出程式使用到的常量、API函式、服務,調用的支持庫。
6.多種載入方式:支持從檔案載入和從某一進程的記憶體中直接載入反彙編。直接從進程列表附加,可以避免一部分AntiDebug造成的調試困難。
7.支持多種格式:支持標準PE執行檔,易格式原體檔案,其他類型的易格式檔案。均可正確分析。
8.易格式捕捉者:對於不明外殼的易格式執行檔(如:加殼後的,通過其它手段封裝的),能夠方便快速的進行分析。
9.提供十六進制檔案查看功能。
10.提供多種輔助工具,完成從記憶體dump易格式原體、修復重定位信息、易格式原體生成EXE檔案等功能。
11.分析結果和反彙編結果均可直接導出生成報告檔案。
12.支持自定義反彙編,HEX查看的環境顏色,你可以選擇自己喜歡的顏色來閱讀代碼。
13.詳細的分析設定,可以自己設定最合適的調試環境。
14.提供檔案拖放功能,直接進行分析或調試。
15.支持從命令行獲取要分析的檔案。
注意
使用信箱或qq傳送檔案時,如果檔案類型是exe檔案。一般伺服器都不允許傳送,甚至會當做病毒而報錯。對此,可將.exe
檔案壓縮或修改擴展名後(如改為.ex3)再進行傳送。