首頁>Club>
4
回覆列表
  • 1 # 用戶1859993304827572

    對於文件來說,擴展名只是幫助識別文件性質的標誌。

    和文件名一樣,擴展名可以使用任意的名字,可以隨便修改。除了早期的文件擴展名(EXE、COM、BAT、SYS )由操作系統製定和約定俗成(TXT)外,擴展名的產生大概可以分成以下幾種情況: 在計算機的應用過程中,產生了許許多多不同類型的文件。對於程序員來說,如果他編寫的軟件需要產生一種新型格式的文件,他就可以任意定義一個擴展名給這個文件。可能這個軟件非常成功,衍生出了許多相關的程序,為了兼容,這個擴展名就成了這一類型文件的專利。比如 RAR、CCD(Clone CD) 文件。另一種情況,就是根據某種標準指定的擴展名,如:JPG,MPG。有了擴展名,在針對某種類型的文件時,就可以指定某個文件來處理(Windows 稱為關聯),確實方便很多。那麼擴展名是不是判斷文件性質的的唯一方法呢?答案是否定的。舉例來說,DAT 文件是應用及其廣泛的一種擴展名,從 VCD 光盤,到很多數據文件,Cuteftp 的站點管理信息也用它來做擴展名(Site.DAT,備份 Cuteftp 的時候只保留這個文件就好了)。很明顯,沒有哪個軟件能夠將如此之多的 DAT 文件統一起來打開。以前在 DOS 的時期,為了防止文件型病毒,有人通過修改 IO.SYS MSDOS.SYS 文件的方法,改變系統默認執行文件的擴展名。比如將 EXE 改成 1XE,COM 改成 C0M 之類。這樣正常的帶有 EXE 擴展名的文件無法在修改過的系統上執行,只有把擴展名改成 1XE 才行。這樣一來系統內所有的執行文件必須全部改換身份,變成的滿眼的 1XE、C0M 之類。出發點是當病毒在執行傳染過程中由於找不到 EXE 或 COM 文件,無法完成傳染,系統也就安全了。但是實際上,他的系統仍然可能被病毒感染,因為某些病毒是根據文件頭標誌來傳染文件的。而且這種方法煩複異常,應用起來很不現實,舉例來說,當某程序需要調用另外的程序時,因為擴展名已經改變,所以找不到文件,想讓此程序正常工作的唯一辦法是把這個程序也像 MSDOS.SYS 文件那樣處理一下,把調用的文件名改掉(有點類似於現在的漢化)。如果系統中存在幾十上百個這樣的文件...... 在上文中提到過文件頭,當 MS 定義執行文件時,它允許兩種類型的文件可以被系統執行,那就是 COM 和 EXE 文件。這兩種文件的區別就是 COM 文件完全由編譯好的代碼組成,執行指令和數據混合存放在一起,通過跳轉指令把它們分開(實際上可以把 COM 看成只有一個段的 EXE 文件,由於尋址的原因,每個段的大小最多 64K,所以 COM 文件絕大多數小於 64K。為什麼說絕大多數呢,因為採取一些技巧可以讓 COM 突破 64K 的限制,比如 Norton 的一些工具程序就是這樣。至於什麼技巧,不要問我,我也不知道)。而 EXE 文件由數據段和代碼段組成,為了能夠區分,在文件的前部由編譯程序生成了一個文件頭。這個文件頭包含了 EXE 執行時自身所需的信息,比如代碼和數據段的地址,所需最少內存等等。更主要的是在文件頭裡麵包含了一個標誌,這個標誌將 EXE 和 COM 文件區分開! 當我們在命令行輸入一個指令的時候,系統會首先在內部命令中查找有無符合的指令,如果沒有就在當前路徑和系統路徑中搜索同名的 BAT COM 和 EXE 文件,找到後由 COMMAND.COM 將其裝載並執行。如上文所講,EXE 和 COM 有格式上的不同,那麼把一個 EXE 文件改成 COM 擴展名或者反之,如果仍然按照原來的規則處理肯定會出錯,但事實上並不會。原因在於,系統不完全根據擴展名來定義文件,當一個文件被 COMMAND.COM 裝載後,它首先要尋找 EXE 文件標誌,如果存在就按 EXE 規則執行,不存在就當它是 COM 文件。各位有興趣的話可以做個實驗,包括將一個文本文檔改成 COM 或 EXE 的話,看看系統有什麼反應(請在 DOS 下試驗,尤其不能在 Win NT/2K/XP 系列的命令提示符下做,因為它是 DOS 虛擬機)。在 EXE 文件中這個標誌就是文件的前兩個字節,內容是 16 進制的 4D 5A,轉換成 ASCII 碼是 MZ。同樣現在很多類型的文件為了都有文件頭,比如所有的音頻,視頻文件,帶格式的文檔文件等。應用程序在處理他們的時候也都是通過這裡的標誌來判斷文件類型和文件本身的信息,如音頻,視頻文件的壓縮格式,大小,索引等。下面是一些常見文件的標誌,我只找了幾個,更多的信息你可以自己收集,數字是十六進制,括號內是對應的 ASCII 碼字符。可執行文件 EXE: 4D 5A (MZ) Zip 文件:50 4B (PK) RAR 文件:52 61 72 21 (Rar!) BMP 文件:42 4D (BM) 當遇到一個未知的文件時,或者懷疑文件的性質時,察看它的文件頭絕對是個好主意。同樣,把文件的擴展名修改不會改變它的本質。即使把一個 JPG 文件改成 AAA,ACDSEE 一樣可以觀看。所以我的結論是:擴展名是為了方便實用文件而定義的,和文件的性質無關

  • 中秋節和大豐收的關聯?
  • 關於牡丹花穀雨花的典故?