Geçtiğimiz ay, Windows’un geriye dönük uyumluluğunun ne kadar geriye gidebildiğini gözler önüne seren eğlenceli bir deneyi sizlerle paylaşmıştık. Şimdiyse buna benzer bir deney MattKC adlı bir YouTuber tarafından yapıldı; ancak bu defa çok daha büyük bir ölçekte.

Youtuber, binlerce uygulamayı 28 yıl önce piyasaya sürülen Windows 95’te kullanılabilir hale getirmek üzere bir girişimde bulundu. Temel olarak .NET Framework yardımıyla gerçekleştirilen bu çalışma, aslında deneyin ilk kısmını oluşturuyor. Bilmeyenler için söyleyelim; .NET Windows 98 çıkana kadar piyasaya sürülmemişti ve dolayısıyla 95 ile uyumlu değildi. Bu yüzden deneyin ilk büyük kısmı .NET’i Windows 95 ile çalışacak şekilde düzenlemek oldu.

Ne yazık ki Windows 98’de modern uygulamaları çalıştırmaya yarayan açık kaynaklı bir uyumluluk katmanı olan KernelEx bu konuda pek yardımcı olmadı. Hatta bir damping aracı kullanarak gerekli tüm DLL’leri taşıdıktan sonra bile .NET çalışmadı.

Youtuber, biraz daha araştırdıktan sonra “ndphlpr” adlı eski bir Windows sürücüsünün sorunun kaynağı olduğunu, zira bu sürücünün .NET için gerekli bir bileşen olduğunu ve Windows 98’de artık kullanılmıyor gibi görünmesine rağmen çökmesine neden olduğunu buldu. Ayrıca bu sürücüyü atlatmanın da görünürde bir yolu yoktu.

Bu noktada YouTuber, .NET Framework ile ilgili sorunu “ayıklamaya” yardımcı olması için WinDbg aracını kullanarak sorunu çözmeye çalıştı ve belirli tıklama işlevleri için eksik bir Windows API’si ile ilgili bir kod parçacığı bulununca nihayet sorun giderme çalışmaları sonuç verdi.

Burada bahsettiğimiz işlem kulağa çok kolay bir çözümmüş gibi gelse de WinDbg o dönemde mevcut olmadığından bazı uyumluluk sorunlarının aşılması zor bir işti. Kod çözme işlemi, sorunun user32.dll kütüphanesinde “NotifyWinEvent” dosyasının olmamasından kaynaklandığını ortaya çıkardı ve bu durum SSE2’nin kod içindeki bir talimatı gizlemesiyle daha da karmaşık hale geldi. Tüm bunlara rağmen MattKC, SSE2’yi yamalamayı denese de sorun yine de çözülmedi.

Son olarak, YouTuber hata mesajlarını görünür bir pencerede görüntülemek için manuel olarak bir yöntem hazırladı ve kalan tüm DLL uyumluluk sorunlarını çözebildi. Israrının karşılığını alan YouTuber, eski kodların bilinmeyen sırlarını ortaya çıkardı ve onlarca yıllık sistemlerin bile sınırlarının ötesine geçilebileceğini kanıtladı.