1995年,花半個月工資買回一張《命令與征服》的光盤,塞進光驅,畫面彈出Autorun,你激動地點下“安裝”按鈕。整個過程里有個細節你可能一輩子都沒發現——你運行的那個Setup.exe,名字就被操作系統盯上了。不是為了偷看你的隱私,而是為了防你把自己系統搞崩潰。
那個年代沒有UAC彈窗,沒有數字簽名檢測,也沒有哪個用戶會想到,一個剛裝上的游戲,有可能叼來一套上古版本的動態鏈接庫,把Windows核心文件降級成爺爺輩。而Windows 95的開發團隊想了一個辦法:既然不知道安裝程序到底在干什么,那就先猜它是不是安裝程序。
![]()
這個土辦法,最近被微軟資深工程師Raymond Chen在自己的博客“The Old New Thing”里親口證實。Tom's Hardware的報道隨后把這份古早設計文檔重新拉回人們眼前,讓一群見慣了現代安全架構的程序員看得直拍大腿。
Chen公布的檢測邏輯簡單到離譜:Windows 95不看程序行為,也不分析代碼,就盯著程序的文件名和它所在的文件夾路徑,里面只要有幾個“魔法詞”,就默認它是安裝程序。這些魔法詞,聽著跟如今的密碼猜解弱口令字典似的。
核心詞列表雖然沒給出完整截圖,但Chen在博客里透露了幾個關鍵鑰匙:“setup”“install”“inst”。注意其中的“install”還被特意打上了“冗余”的標記。原因很直白:既然“inst”這三個字母已經能匹配到“install”“installer”“installation”甚至像“appinst”這種開發者手滑截斷的寫法,那再把“install”單獨列一條就顯得多余。用今天的話說,這個列表甚至還做了一點小小的歸一化處理。
更有味的是,這套猜測機制竟然已經為多語言場景留了后路。Chen推測,即使某個安裝程序的名字不帶英文“install”,但只要別的語言版本里包含“inst”這串字符,Windows 95一樣會把它標記出來。德語“Installation”、法語的“Installateur”,乃至某些本地化廠商拼錯了的安裝程序名,都逃不過這三個字母的籠子。在Unicode都還沒普及的年代,這種一根筋的字符串匹配反而成了一種粗糙但覆蓋度很高的多語言支持。
光查名字還不夠,程序存放的路徑也要查。哪怕文件名完全看不出跟安裝有半分關系,只要它所在的某個上級文件夾路徑里出現了“setup”或者“inst”字樣,Windows 95同樣會提高警惕。這就好比你在一個門牌寫著“裝修材料倉庫”的房間里抱出來一箱不明液體,雖然包裝上什么都沒印,但周圍的環境已經足夠讓系統決定多留個心眼。
被標記為安裝進程之后,Windows 95并不會立刻彈窗或者中斷你,而是默默啟動一個“安裝后復查”機制。它會等這個進程跑完,然后把程序試圖替換的文件版本號快速比對一遍。如果發現你手里那張《命令與征服》企圖用一個老舊的系統組件,把當前更新的版本強行降級,系統就會悄悄把這個文件保護起來,不讓舊版本覆蓋。
換句話說,這個檢測機制的重點從來不是阻止你裝東西,而是防你裝完東西之后系統開始不定期藍屏、應用集體報錯。而在1995年,這種由安裝程序引發的DLL覆蓋災難簡直無處不在,幾乎每個玩過游戲、裝過盜版軟件的用戶都
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.