執行檔

執行檔

執行檔 (executable file) 指的是可以由作業系統進行載入執行的檔案。在不同的作業系統環境下,可執行程式的呈現方式不一樣。

在windows作業系統下,可執行程式可以是 .exe檔案 .sys檔案 .com等類型檔案。

基本介紹

  • 中文名:執行檔
  • 外文名:executable file
  • 擴展檔案名稱:.exe
釋義,腳本,開發過程,防毒,檔案型病毒,引導型病毒,記憶體解毒,未知病毒檢測,包裹檔案病毒,壓縮工具,網路病毒防治,Linux,Mac,

釋義

記事本程式notepad.exe ,這類程式通常用來處理或者輔助處理其它檔案。比如:myfile.txt雙擊打開由notepad.exe記事本程式來進行編輯。
我們做一件事,可以把順序以及具體做什麼事寫在mybat.bat檔案中,那運行它就可以把要做的事件執行了。
可以理解為:這類檔案可以“單獨運行”,或者理解為“有生命”的檔案!
如果把它用日常通俗的一點的例子來形容:衣服,鞋子等都是普通的檔案,那人就是執行檔! 人可以做衣服穿衣服,衣服卻要依靠人來做。布也要由人加工成衣服!

腳本

不是所有的執行檔,都只存有電腦能閱讀的資料。以腳本語言撰寫的腳本檔案,都可以是執行檔,而且內含的資料可被人類閱讀,多數以ASCII文本存檔。原因是:腳本語言無需經過編譯器預先編譯,就可經過直譯器(如Perl、Python、Shell)執行

開發過程

在DOS下,生成一個執行檔的步驟比較簡單,用編譯器源程式編譯為obj檔案,再用連結器將obj檔案連結成exe檔案,不同語言的開發過程都差不多。
DOS執行檔中的內容是由源程式中所寫的代碼和數據定義轉換而來的。惟一的例外是帶覆蓋部分(Overlay)的exe檔案,它在基本的exe檔案後附加了一些自定義的數據,其中可執行部分的長度由檔案頭偏移0002h和0004h中的長度給出,該長度之後到檔案實際長度這部分就是Overlay部分。這樣,即使一個帶覆蓋的exe檔案大小遠遠超過640 KB,在DOS下也能運行,因為作業系統只裝入真正的可執行部分,然後由程式自己去讀取覆蓋部分的數據。一些打包軟體生成的奇大無比的自解壓包就採用這種結構,可執行部分是解包代碼,覆蓋部分是被壓縮的數據。DOS對執行檔覆蓋部分的數據格式並沒有規定,它是程式設計師按自己的方式組織的。如果程式設計師願意,也可以把這些數據單獨放在另外一個檔案中。
Win32執行檔叫做PE檔案。PE檔案的基本結構和DOS執行檔有很大的不同。它把程式中的不同部分分成各種節區(Section),其中可以有一個節區是放置各種資源的,如選單、對話框、點陣圖游標、圖示和聲音等。雖然可以把資源部分理解成類似DOS執行檔中的“覆蓋”部分,但由於資源是Win32執行檔的標準組成部分,而且是非常重要的組成部分,它的格式是固定的。所以與DOS軟體的開發過程相比,Win32軟體的開發中多了一個創建資源檔案的步驟。
以使用MASM32軟體包為例,在用Win32彙編開發軟體的流程中,程式設計師要做的工作分創建代碼和創建資源兩部分,如圖2.1所示。
代碼部分的開發工作與DOS下寫代碼的步驟是一樣的。程式設計師用文本編輯器書寫彙編原始碼(*.asm檔案)。與C原始碼類似,asm檔案中也可以用include語句包含數據定義和函式聲明的頭檔案,Win32彙編的頭檔案一般用inc作擴展名。大部分的include檔案是編譯器軟體包附帶提供的,如MASM32軟體包附帶的Windows.inc檔案定義了Win32 API中很多參數和數據結構,其他的inc檔案則是不同DLL中的Win32 API函式聲明。最後,asm檔案經彙編編譯器編譯成以obj為擴展名的目標檔案。
資源檔案中可以包括對話框、快捷鍵選單、字元串、版本信息和一些圖形資源等內容。資源檔案的源檔案是一種類似“腳本”的文本檔案,它的擴展名一般為rc,其中用不同的語法定義了不同類型的資源,資源腳本檔案最後由資源編譯器編譯成資源檔案*.res。資源腳本檔案同樣用到很多預定義值,所以軟體包中一般也包括資源頭檔案供源檔案來導入。MASM32軟體包中的資源頭檔案是Resource.h。
資源檔案中,不同類型資源的記錄方式是不同的。對話框資源只記錄定義值,如對話框的大小、位置等,並非真正存儲對話框最後顯示在螢幕上的像素。這些大小、位置等信息最後由Windows解釋後才在螢幕上被繪畫成像素;選單、字元串、快捷鍵等由文本構成;圖形資源則真正由像素組成,它們在資源腳本中被定義為一個檔案名稱,由資源編譯器從磁碟檔案導入。Windows在資源中支持的圖形檔案有bmp點陣圖檔案、cur游標檔案和ico圖示檔案,這些圖形檔案可以用其他圖形處理軟體生成。另外,wav聲音檔案也可以用在資源中。創建資源的方法在第5章中有詳細的描述。
編譯好目標檔案*.obj和資源檔案*.res後,最後一步是用連結器將它們連結成執行檔。連結的時候要用到函式館。在DOS環境下編程的時候,使用的函式館是靜態庫靜態庫是一些已經編譯好的代碼模組。當用戶在源程式中用到某個函式的時候,連結器從庫檔案中將這個函式的二進制代碼取出,與obj檔案合在一起生成最終的exe檔案。但在Win32環境下,大部分的公用函式封裝DLL檔案中,以動態連結的方式供用戶程式調用。這時候庫檔案中只需要包含函式在DLL中的位置信息,不再需要有二進制代碼部分。所以連結的時候也只是把庫檔案中的位置信息取出放入最後的執行檔中。Win32中這種只包含位置信息的庫檔案稱為導入庫

防毒

病毒的檢測與解除

檔案型病毒

計算機病毒中絕大部分是檔案型。所謂檔案型病毒是指此類病毒寄生在執行檔上,並依靠執行檔來傳播。從數學角度而言,解除這種病毒的過程實際上是病毒感染過程的逆過程。通過檢測工作、(跳轉、解碼),已經得到了病毒體的全部代碼,用於還原病毒的數據肯定在病毒體內,只要找到這些數據,依照一定的程式或方法即可將檔案恢復,也就是說可以將病毒解除。

引導型病毒

這類病毒的種類也比較多,我國發現的第一例病毒--“小球”病毒就是引導型病毒,它們占據軟碟或硬碟的第一個扇區,在開機後先於作業系統得到對計算機的控制,影響系統的I/O存取速度,干擾系統的正常運行;此類病毒可用地址法、相對法、邏輯法、覆蓋法、特殊法予以解除。

記憶體解毒

因為記憶體中的活病毒體會干擾反病毒軟體的檢測結果,所以幾乎所有反病毒軟體設計者都要考慮到記憶體解毒。新的記憶體解毒技術是找到病毒在記憶體中的位置,重構其中部分代碼,使其傳播功能失效。

未知病毒檢測

通過對大量病毒的分析,可以掌握病毒的共性,並按照其發展衍生規律進行分類,總結病毒常用代碼(這些代碼是病毒存在、傳播和發作的根本),以檔案中包含這些代碼的加權統計值作為對未知病毒檢測的依據,使用可執行檔案格式知識分析啟始代碼,通過一定程度的反彙編和預測跳轉,綜合結果報告未知病毒。這種方法是建立在獨特病毒描述語言基礎上的,具有描述準確、誤報率低等特點。

包裹檔案病毒

包裹程式是一些常見的工具軟體,它可以包裹執行檔,減小磁碟占用空間,加快運行速度。但把一個病毒包裹後,病毒就會被保護起來,使得各種反病毒軟體無法查到。已被包裹並含有病毒的執行檔在執行時,病毒會到處傳播,使用反病毒軟體將病毒解除之後,被包裹的執行檔中的病毒卻保留下來,危害較大。通過特有的解包裹模組,可以即查解被包裹後的病毒,又不破壞被包裹後沒有病毒的執行檔。

壓縮工具

磁碟上經常會有一些被壓縮工具處理過的檔案,這樣做可以節省磁碟空間,便於保密和攜帶。但如果有人無意將病毒傳染的檔案使用壓縮工具壓縮了,那么一般反病毒軟體就無法將病毒從壓縮檔案中查出,採用解壓縮算法和流程處理可以根治這種病毒。

網路病毒防治

對於單機病毒防治,運用以上技術或使用具有相應功能的反病毒軟體即可基本保障計算機系統不受病毒的侵擾。相對於單機病毒的防護來說,網路病毒的防治具有更大的難度,網路病毒防治應與網路管理集成。網路防病毒最大的優勢在於網路的管理功能,如果沒有把管理功能加上,很難完成網路防毒的任務,只有管理與防範相結合,才能保證系統的良好運行。
管理功能就是管理全部的網路設備和操作:從Hub、交換機、伺服器到PC,包括軟碟的存取、區域網路上的信息互通及與Internet的接駁等所有病毒能夠感染和傳播的途徑。
一般來講,計算機病毒的防治在於完善作業系統套用軟體的安全機制,但在網路環境下,應該相應採取新的防範手段。 在網路環境下,病毒傳播擴散快,僅用單機反病毒產品已經難以清除網路病毒,必須有適用於區域網路、廣域網的全方位反病毒產品。
為實現計算機病毒的防治,可在計算機網路系統上安裝網路病毒防治伺服器;可在內部網路伺服器上安裝網路病毒防治軟體;可在單機上安裝單機環境的反病毒軟體

Linux

Linux執行檔格式為ELF即Executable and Linkable Format。
格式:
ELF header
program header table
.txt .rodata .data
Section header table

Mac

Mac執行檔格式為Mach-O即Mach Object格式。

相關詞條

熱門詞條

聯絡我們