作業系統中的檔案是一種抽象的機制,提供了一種在磁碟上儲存資訊而且方便以後讀取的方法。在
windows
作業系統中,乙個使用者可以最直接體會到的檔案的形式就是以
.exe
、.dll
等為副檔名的可執行檔案。伴隨著
windows
作業系統的不斷進步,其可執行檔案的格式也發生了巨大變化。這期間主要有
4個過程:
dos中出現的最簡單的以
.com
為副檔名的可執行檔案和以
.exe
為副檔名的
mz格式(mz是
mz格式的主要作者
mark zbikowski
的名字的縮寫
)的可執行檔案,
win 3.x
下出現的ne(
new executable
:分段可執行檔案)格式的
.exe
和.dll
檔案,win 3.x
和win9x
所專有的le(
linear executable
:線性可執行檔案,專用於
vxd檔案),
win9x
和win nt/2000/xp
下的32
位的可執行檔案pe(
portable executable
:可移動的可執行檔案)。這裡面
com、mz和
ne屬於
win16,pe
屬於win32,le
可以相容
win16
和win32。
在乙個作業系統中,可執行的**最終被裝入記憶體執行之前是以檔案的方式存放在磁碟中的,也就是以可執行檔案的方式。下面是
microsoft windows
作業系統中的可執行檔案的概述。1.
com格式
windows
下最簡單的可執行檔案就是
dos下的以
.com
為副檔名的
com檔案。
com檔案是舊有的只有
64kb
記憶體的cp/m
機器的產物。
com格式檔案最大
64k,
com檔案內含
16位程式的二進位制**映像,沒有重定位資訊。
com檔案包含程式的二進位制**的乙個絕對映像。也就是說,為了執行程式準確的處理器指令和記憶體中的資料,
ms-dos
通過直接把該映像從檔案拷貝到記憶體而載入
com程式;它不作任何改變。
為載入乙個
com程式,
ms-dos
首先試圖分配記憶體,因為
com程式必須位於乙個
64k的段中,所以
com檔案的大小不能超過
65,024
(64k
減去用於
psp的
256位元組和用於乙個起始堆疊的至少
256位元組)。如果
ms-dos
不能為程式、乙個
psp、乙個起始堆疊分配足夠記憶體,則分配嘗試失敗。否則,
ms-dos
分配盡可能多的記憶體(直至所有保留記憶體)。即使
com程式本身不能大於
64k。在試圖執行另乙個程式或分配另外的記憶體之前,大部分
com程式釋放任何不需要的記憶體。
分配記憶體後,
ms-dos
在該記憶體的頭
256位元組建立乙個
psp(
program segment prefix
,程式段字首),
psp結構如下:偏移
大小(byte)
說明0000h 02
中斷20h
0002h 02
以節計算的記憶體大小(利用這個可看出是否感染引導型病毒)
0004h 01
保留0005h 05
至dos的長呼叫
000ah 02
int 22h
入口ip
000ch 02
int 22h
入口cs
000eh 02
int 23h
入口ip
0010h 02
int 23h
入口cs
0012h 02
int 24h
入口ip
0014h 02
int 24h
入口cs
0016h 02
父程序的
psp段值(可測知是否被跟蹤)
0018h 14
存放20個
soft號
002ch 02
環境塊段位址(從中可獲知執行的程式名)
002eh 04
存放使用者棧位址指標
0032h 1e
保留0050h 03
dos呼叫(int 21h / retf)
0053h 02
保留0055h 07
擴充套件的fcb頭
005ch 10
格式化的
fcb1
006ch 10
格式化的
fcb2
007ch 04
保留0080h 80
命令列引數長度
0081h
127命令列引數
Windows可執行檔案簡述(二)
如果 psp中的第乙個 fcb含有乙個有效驅動器識別符號,則置al為 00h,否則為 0ffh ms dos 還置ah 為00h 或0ffh 這依賴於第二個 fcb是否含有乙個有效驅動器識別符號。建造 psp後,ms dos 在psp 後立即開始 偏移 100h 載入com 檔案,它置ss ds和e...
Windows可執行檔案簡述(三)
4 le 格式在windows3.x 的時代,從 dos啟動 windows windows 在把機器轉到保護模式之前需要在實模式下做一些初始化。實模式的 16位 必須和 32位 一起放在可執行檔案中。舊的 dos下的可執行檔案和 ne格式的可執行檔案無法滿足這個要求,於是從 win 3.x 起到w...
linux 執行可執行檔案
1 首先,需要了解一下a.out這個目標檔案。a.out在linux下是elf executable linkable format 檔案格式,該目標檔案由乙個檔案頭 段 資料段 已初始化 從定位資訊區 符號表及符號名字字串構成,如下左圖所示,經過鏈結後生成執行檔案如下右圖所示,需要說明的是1 bs...