Windows XP uruchamiał stare programy dzięki ukrytej bazie

Windows XP zyskał opinię systemu, który radził sobie niemal z każdym starszym programem. Microsoft osiągnął to m.in. dzięki specjalnej bazie zgodności, która rozpoznawała aplikacje i zmieniała sposób działania systemu tylko na czas ich pracy.

Domyślna tapeta Windows XPDomyślna tapeta Windows XP
Oskar Ziomek

Za tym rozwiązaniem stała baza Application Compatibility Database. System porównywał nie tylko nazwę pliku .exe, ale też m.in. rozmiar, sumę kontrolną, wersję i datę programu. Potrafił również sprawdzać inne pliki w folderze aplikacji, by odróżnić starsze wydanie od nowszego.

Gdy Windows XP znajdował dopasowanie, uruchamiał tzw. shims, czyli małe poprawki pośredniczące między aplikacją a funkcjami systemu. Taki mechanizm mógł zmieniać dane wysyłane przez program, modyfikować odpowiedź systemu albo wykonać własny kod przed uruchomieniem właściwej funkcji Windows.

Jednym z przykładów było podszywanie się pod starszą wersję systemu. Jeśli aplikacja działała tylko po wykryciu konkretnego wydania Windows, XP mógł zwrócić jej informację, że komputer pracuje np. pod kontrolą Windows 98. Program dostawał więc inną odpowiedź, niż wynikało to ze stanu faktycznego.


WIDEO
Groźny jailbreak modeli Moonshot AI. Eksperci wykazali luki w chińskim oprogramowaniu

Microsoft szedł jednak dalej niż tylko zmiana numeru wersji. Jak opisywał Raymond Chen, jedna z poprawek o nazwie EmulateHeap potrafiła podmienić standardowy mechanizm zarządzania pamięcią na odpowiednik znany z Windows 95. Było to potrzebne programom napisanym tak, że zależały od dawnego sposobu przydzielania pamięci.

Takie obejścia miały też znaczenie biznesowe. Chen pisał już w 2003 r., że każda zablokowana aplikacja mogła zniechęcić użytkownika lub firmę do przejścia na nowy system. W praktyce wystarczał jeden kluczowy program, by aktualizacja całego biura przestała mieć sens albo stała się znacznie droższa.

Microsoft rozwijał te poprawki przez lata. Przy starcie Windows XP system miał ok. 200 poprawek zgodności, a aktualizacja Application Compatibility Update z kwietnia 2011 r. podmieniła plik Sysmain.sdb w XP SP3 na wersję o wielkości 1 206 508 bajtów. Nie wszystkie problemy dało się w ten sposób obejść, bo shims działały tylko wewnątrz procesu aplikacji i nie naprawiały niezgodnych sterowników trybu jądra.

Wybrane dla Ciebie
NIE WYCHODŹ JESZCZE! MAMY COŚ SPECJALNIE DLA CIEBIE