YouTuber展示如何將”數千款應用程式”帶回Windows 95 時代
上個月,我們報導了一個有趣的實驗,證明了Windows 在Office 的幫助下具有出色的向後相容性。 YouTuber MattKC 也做過類似的實驗,但規模要大得多,他著手復活28年前發布的Windows 95 的”數千個應用程式”。這主要是在.NET Framework 的幫助下完成的,但這也是挑戰的第一部分。
您可能不知道,.NET 直到Windows 98 出現時才首次有了這個概念,因此與Windows 95 系統並不相容。因此,實驗的第一個重要部分是反向移植.NET,使其與Windows 95 相容。
在這方面,用於在Windows 98 上執行現代應用程式的開源相容層KernelEx 並沒有起到多大作用。另一個問題是缺少DLL 文件,即使使用轉儲工具移植了所有必要的DLL,.NET 也無法運作。
經過進一步調查,發現一個名為”ndphlpr”的傳統Windows 驅動程式是罪魁禍首,因為它是.NET 的一個必要元件,在舊系統運行時會導致.NET 崩潰,儘管它在Windows 98 中似乎已經過時。此外,也沒有辦法繞過這個驅動程式。
這時,YouTuber 不得不使用WinDbg 工具來幫助”調試”.NET Framework 中的問題,最後,故障排除終於有了回報,因為他發現了一個與某些點擊功能缺失的Windows API 有關的程式碼片段。
F20F 10 44 24 08F205 2CCO
雖然我們在這裡說得很輕鬆,但實際上並非如此,因為當時還沒有WinDbg,這意味著必須克服幾個相容性問題。
解碼後發現,問題是由於user32.dll 庫中缺少”NotifyWinEvent”造成的,而SSE2 在程式碼中混淆了一條指令,使得問題變得更加複雜。不管怎樣,MattKC 嘗試對SSE2 進行了修補,但仍然沒有解決問題。
最後,這位YouTuber 手工製作了一種方法,在可見視窗中顯示錯誤訊息,從而修復了所有剩餘的DLL 相容性怪癖。他的堅持終於得到了回報,揭示了遺留代碼的秘密,證明了即使是幾十年前的系統也可以超越其極限;這的確是一項相當了不起的成就。
這篇文章簡要總結了所取得的成果,而上面的完整影片也非常值得一看。