FB 建議貼文

選取貼文複製成功(包含文章連結)!

Windows 11 竟能執行 34 年前的古董軟體!開發者挖出 1992 年 CD 播放器,免模擬器直接啟動

Windows 11 竟能執行 34 年前的古董軟體!開發者挖出 1992 年 CD 播放器,免模擬器直接啟動

軟體開發者 Enlyth 近期針對微軟作業系統展開相容性逆向實測,試圖在不依賴完整虛擬機的前提下,找出能在現代 64 位元 Windows 11 上原生啟動的最古老圖形化介面(GUI)程式。經過比對微軟多個歷史版本的 .exe 執行檔,確認來自 1992 年 11 月 Windows NT 3.1 測試版的 CDPLAYER.EXE(CD 播放器),是目前已知能在 Windows 11 上原生啟動的最古老 GUI 程式,跨越近 34 年。

Windows 11 竟能執行 34 年前的古董軟體!開發者挖出 1992 年 CD 播放器,免模擬器直接啟動

16 位元架構的斷代門檻:尋找原生 PE 格式與 Win32s 早期足跡

64 位元 Windows 系統在底層架構上全面移除了 NTVDM(虛擬 DOS 機器,Virtual DOS Machine),使得 Windows 1.x 至 Windows 3.x 時代的所有 16 位元 NE(New Executable)格式程式無法直接在 WOW64 子系統中被調用。任何要在現代 Windows 11 上原生啟動的應用程式,必須至少符合 32 位元 PE(Portable Executable)結構。

Enlyth 首先找出早期 Win32s 擴充套件中的 32 位元 FREECELL.EXE(新接龍),其檔案修改日期為 1993 年 2 月 22 日。實測顯示,這款距今 33 年又 8 個月的經典小遊戲,在未經過任何代碼修改或相容性設定補丁的情況下,能直接在最新的 Windows 11 系統上流暢遊玩。

Windows 11 竟能執行 34 年前的古董軟體!開發者挖出 1992 年 CD 播放器,免模擬器直接啟動

Windows NT 3.1 測試版大多當機,唯獨CD播放器過關

Enlyth 為了探索更久遠的極限,進一步從 Internet Archive 檢視微軟於 1991 至 1992 年間開發的 Windows NT 3.1 早期預覽版本。1991 年的最早期版本因採用未定案的草案 PE 格式,無法被現代 Windows 載入器辨識;1992 年中之前的測試版二進位檔,則存在呼叫約定(Calling Convention)的底層架構衝突。

1992 年中以前的測試版程式,呼叫 Windows API 時預設採用 cdecl 呼叫約定(由呼叫者清理堆疊),而現代 Windows API 則全面採用 stdcall(由被呼叫函式以 ret N 清理堆疊)。這導致老程式呼叫 ShowWindow 等視窗管理函式時,參數在函式內部被清除後,外層呼叫端又再次執行 add esp, 4,造成堆疊指標雙重清理而當場崩潰。

突破點出現在 1992 年 11 月 16 日產出的 Windows NT 3.1 Build 347。該版本已修正為現代通用的 stdcall 約定,但大部分應用程式仍因捆綁的舊版 C 執行時期程式庫(CRT)衝突而無法啟動。但 CDPLAYER.EXE 避開了內建 CRT 的陷阱,選擇動態連結至系統的 crtdll.dll;微軟至今仍將 32 位元的 crtdll.dll 放置於 C:\Windows\SysWOW64\ 中以維持向下相容。由於現代個人電腦已罕見實體光碟機,Enlyth 另以小型的 cdemu.dll 模擬光碟機並餵入測試音訊資料,讓這款將近 34 年前的 CD 播放器成功執行播放功能。

借助開源轉譯層重現 Windows 1.01 棋盤

開源社群維護的 otvdm(winevdm)則提供另一條途徑。它無須安裝完整的舊版 Windows 虛擬機,而是內建 16 位元 x86 CPU 模擬器,並以 Wine 為基礎將 Win16 API 呼叫轉換為現代 Win32 API。

透過 otvdm 輔助,檔案日期標記為 1985 年 11 月 15 日、隨附於微軟初代圖形作業環境 Windows 1.01 的 REVERSI.EXE(黑白棋),成功在最新版 Windows 11 上啟動並可完整遊玩。Enlyth 亦坦言借助 otvdm 屬於模擬層的「作弊」手段,因此並不列入純原生執行的範疇。

向下相容的雙面刃

微軟與蘋果在作業系統演進思維上呈現出鮮明的對比。蘋果 macOS 在技術轉折點多次果斷斬斷過往架構,包括淘汰 Carbon、強制全面 64 位元化與終止舊版相容層;微軟則在 Windows 中保留了廣泛的 Win32 API 契約與 crtdll.dll 等舊版動態連結庫。

這種相容承諾常被批評為 Windows 系統體積臃腫、背負歷史包袱的主因。但從實測結果來看,三十餘年前的 32 位元二進位程式,部分至今仍能不經修改在現代 Windows 上成功執行,體現了微軟長期維護向下相容性的工程堅持。

資料來源:https://blog.enlyth.com/posts/oldest-windows-gui-app-win-11/

小治
作者

《PC Home 電腦家庭》雜誌及 T 客邦網站編輯。負責遊戲類型新聞及評析、軟體應用教學及企劃撰寫、電腦相關周邊硬體測試,以及打雜…

發表回應
謹慎發言,尊重彼此。按此展開留言規則