Ютубер показывает, как он перенес «тысячи приложений» в прошлое, в Windows 95
Похожий эксперимент провел ютубер MattKC, но в гораздо более масштабном масштабе: он поставил перед собой задачу воскресить «тысячи приложений» для Windows 95, выпущенной 28 лет назад. В основном это удалось сделать с помощью .NET Framework, но это была и первая часть задачи.
Если вы, возможно, не знаете, .NET не дебютировал до появления Windows 98 и, следовательно, не был совместим с 95. Итак, первая большая часть эксперимента заключалась в резервном портировании .NET, чтобы заставить его работать с Windows 95.
В этом отношении KernelEx, уровень совместимости с открытым исходным кодом для запуска современных приложений в Windows 98, не сильно помог. Другая проблема заключалась в отсутствии файлов DLL, хотя даже после переноса всех необходимых DLL с помощью инструмента дампа .NET не работала.
После дальнейших раскопок было обнаружено, что виновником был устаревший драйвер Windows с именем «ndphlpr», поскольку он оказался обязательным компонентом для .NET, что приводило к его сбою, хотя в Windows 98 он казался устаревшим. также не видно способа обойти этот драйвер.
Это было тогда, когда ютубер прибегнул к использованию инструмента WinDbg, чтобы помочь «отладить» проблему с .NET Framework, и, наконец, устранение неполадок принесло свои плоды, поскольку был обнаружен фрагмент кода, связанный с отсутствующим API Windows для определенных функций щелчка.
F2 0F 10 44 24 08 F2 05 2C CO
Как бы просто это ни звучало здесь, это было совсем не так, поскольку WinDbg в то время не существовало, а это означало, что нужно было решить несколько проблем совместимости.
Расшифровка показала, что проблема, по-видимому, была вызвана отсутствием «NotifyWinEvent» в библиотеке user32.dll, что еще больше усложнялось тем, что SSE2 запутывал инструкцию в коде. Тем не менее, MattKC попытался исправить SSE2, но это все равно не решило проблему.
Наконец, ютубер вручную создал метод отображения сообщений об ошибках в видимом окне, что позволило ему исправить все оставшиеся проблемы совместимости DLL. Его настойчивость принесла свои плоды: он раскрыл секреты устаревшего кода и доказал, что даже системы, созданные десятилетиями, могут выйти за пределы своих возможностей; действительно впечатляющее достижение.
В этой статье очень кратко изложено, что было достигнуто, а полное видео, указанное выше, стоит посмотреть.