Kursor Windows (.cur)
Microsoft StandardowyWindows Cursor Resource (CUR) to natywny format wskaźnika myszy dla systemu Microsoft Windows, identyczny pod względem architektury kontenera z formatem ICO, lecz określający dokładne współrzędne punktu aktywnego (hotspotu).
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki CUR, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki CUR, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
00 00 02 00REPREZENTACJA ASCII: ....
Normalizacja: Microsoft Windows Resource Specification
Specyfikacja techniczna
| Architektura kontenera | Nagłówek ICONDIR z typem zasobu 2 (kursor), po którym następuje tablica ICONDIRENTRY i dane DIB |
| Kompresja | Neskompresowany strumień DIB lub strumienie kompresowane w formacie PNG (Windows Vista+) |
| Kolejność bajtów (Endianness) | Little-Endian (Intel x86) |
| Przestrzenie kolorów | Device RGB |
| Kanały i struktura | 1-bitowa maska monochromatyczna, 4-bitowa, 8-bitowa lub 32-bitowa BGRA z kanałem alfa |
| Maks. wymiary | Zazwyczaj 32 x 32, 48 x 48 lub 64 x 64 (obsługuje do 256 x 256 w nowoczesnych systemach Windows) |
| Przezroczystość | Binarna maska XOR/AND lub 8-bitowy gładki kanał alfa |
| Streaming i progresywne ładowanie | Katalog ikon i kursorów pulpitu bez obsługi strumieniowania |
Techniczna macierz porównawcza: CUR a konkurencja
| Atrybut techniczny | CUR (Bieżący) | ICO | PNG | SVG |
|---|---|---|---|---|
| Definicja punktu aktywnego | Osadzone współrzędne piksela X/Y | Brak (domyślnie środek/lewy górny róg) | Zdefiniowane w CSS | Zdefiniowane w przestrzeni widoku SVG |
| Identyfikator typu zasobu | 0x0002 (Kursor) | 0x0001 (Ikona) | Standardowy obraz | Wektorowy XML |
| System operacyjny | Natywny podsystem myszy systemu Windows | Powłoka Windows / Ikona ulubionych przeglądarki | Uniwersalna sieć i aplikacje | Uniwersalny wektor |
| Skalowalność | Stałe mipmapy o wielu rozdzielczościach | Stałe mipmapy o wielu rozdzielczościach | Stały rozmiar rastrowy | Nieskończona skalowalność wektorowa |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Kliknięcie myszą rejestrowane jest kilka pikseli obok czubka strzałki kursora.
Główna przyczyna: Uszkodzone lub brakujące współrzędne X/Y punktu aktywnego w tabeli ICONDIRENTRY.
Odzyskiwanie: Ponownie utwórz kursor w konwerterze kursorów File2File, aby wizualnie przeskalować współrzędne punktu aktywnego.
Analiza bezpieczeństwa i wektory ataku na parser
Błędy parsowania formatu CUR w interfejsie GDI (Graphics Device Interface) systemu Windows historycznie umożliwiały wykonanie dowolnego kodu za pomocą specjalnie spreparowanych wymiarów nagłówka.
Znane wektory ataku
- Przepełnienie liczbowe podczas alokacji masek kolorów DIB w starszych dekoderach kursorów.
- Uszkodzone przesunięcia punktu aktywnego wywołujące odczyty wskaźnika poza wyznaczonym zakresem podczas rysowania kursora.
- Uszkodzenie pamięci stosu (heap corruption) podczas analizowania osadzonych strumieni PNG wewnątrz nowoczesnych plików CUR.
Najlepsze praktyki obronne: Sprawdzaj, czy współrzędne punktu aktywnego mieszczą się ściśle w granicach wymiarów klatki (0 <= X < Szerokość, 0 <= Y < Wysokość).
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Określa dokładnie współrzędne piksela aktywnego (X, Y), w którym kliknięcia myszą są fizycznie rejestrowane na ekranie.
- Umożliwia definiowanie kursorów o wielu rozdzielczościach dla zapewnienia ostrości obrazu na standardowych monitorach oraz monitorach o wysokiej rozdzielczości 4K DPI.
- Bezpośrednia, natywna obsługa w systemie operacyjnym Windows bez konieczności instalowania zewnętrznych sterowników wskaźnika.
Ograniczenia techniczne i wady
- Format skoncentrowany na systemie Windows, ze słabą natywną obsługą wyświetlania na urządzeniach mobilnych i w przeglądarkach spoza ekosystemu Windows.
- Tylko wskaźniki statyczne; kursory animowane wymagają wieloklatkowego kontenera .ANI.
- Starsze, 1-bitowe maski XOR powodują powstawanie ostrych artefaktów inwersji na nowoczesnych interfejsach kolorowych.
Ciekawe informacje techniczne
- Jedyną różnicą strukturalną między plikiem ICO a plikiem CUR jest bajt 3 nagłówka: 1 oznacza ikonę, a 2 oznacza kursor.
- W pliku ICO bajty 4 i 6 każdego wpisu reprezentują palety kolorów oraz bity na piksel; w pliku CUR dokładnie te same bajty reprezentują współrzędne X i Y punktu aktywnego (hotspotu).
- Język CSS obsługuje niestandardowe kursory internetowe bezpośrednio za pomocą adresów URL wskazujących pliki .cur.
Często zadawane pytania techniczne
Czym jest punkt aktywny (hotspot) kursora?
Punkt aktywny to dokładna współrzędna piksela wewnątrz obrazu kursora (taka jak sam czubek strzałki lub środek celownika), w której występują zdarzenia kliknięcia.
Czy mogę przekonwertować obraz (PNG/JPG) na plik CUR?
Tak. Narzędzie File2File.app umożliwia konwersję standardowych plików PNG lub JPG na pliki kursorów .CUR systemu Windows z niestandardowym umiejscowieniem punktu aktywnego.
Jak mogę użyć pliku .cur na swojej stronie internetowej?
Możesz zastosować niestandardowe kursory w języku CSS, używając reguły: cursor: url('moj-kursor.cur'), auto;