Windows 光标 (.cur)
Microsoft มาตรฐานWindows Cursor Resource (CUR) คือรูปแบบตัวชี้เมาส์ดั้งเดิมของ Microsoft Windows ซึ่งมีโครงสร้างคอนเทนเนอร์ที่เหมือนกับไฟล์ ICO ทุกประการ แต่ระบุพิกัดออฟเซ็ตของฮอตสปอต (Hotspot) อย่างแม่นยำ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CUR โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ CUR โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
00 00 02 00การแสดงผลรูปแบบ ASCII: ....
มาตรฐาน: Microsoft Windows Resource Specification
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ICONDIR header with resource type 2 (Cursor) followed by ICONDIRENTRY array and DIB data |
| การบีบอัด | Uncompressed DIB or PNG compressed streams (Windows Vista+) |
| การจัดลำดับไบต์ (Byte Endianness) | Little-Endian (Intel x86) |
| พื้นที่สี | Device RGB |
| ช่องสัญญาณและโครงสร้าง | 1-bit monochrome mask, 4-bit, 8-bit, or 32-bit BGRA with alpha |
| ขนาดสูงสุด | Typically 32 x 32, 48 x 48, or 64 x 64 (supports up to 256 x 256 in modern Windows) |
| ความโปร่งใส | XOR/AND binary mask or 8-bit smooth alpha channel |
| การสตรีมและแบบโปรเกรสซีฟ | Non-streamable desktop icon/cursor directory |
ตารางเปรียบเทียบทางเทคนิค: CUR กับคู่แข่ง
| คุณลักษณะทางเทคนิค | CUR (ปัจจุบัน) | ICO | PNG | SVG |
|---|---|---|---|---|
| การกำหนดฮอตสปอต | พิกัดพิกเซล X/Y ฝังตัว | ไม่มี (ค่าเริ่มต้นตรงกลาง/มุมซ้ายบน) | กำหนดใน CSS | กำหนดในพอร์ตมุมมอง SVG |
| ID ประเภททรัพยากร | 0x0002 (Cursor) | 0x0001 (Icon) | ภาพมาตรฐาน | เวกเตอร์ XML |
| ระบบปฏิบัติการ | ระบบย่อยเมาส์ดั้งเดิมของ Windows | Windows Shell / Favicon ของเบราว์เซอร์ | เว็บและแอปสากล | เวกเตอร์สากล |
| ความสามารถในการปรับขนาด | Mipmaps หลายความละเอียดแบบคงที่ | Mipmaps หลายความละเอียดแบบคงที่ | แรสเตอร์ขนาดคงที่ | การปรับขนาดเวกเตอร์แบบไม่จำกัด |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
การคลิกเมาส์ลงทะเบียนห่างจากปลายลูกศรเคอร์เซอร์ไปหลายพิกเซล
สาเหตุหลัก: พิกัดฮอตสปอต X/Y ในตาราง ICONDIRENTRY เสียหายหรือขาดหายไป
การกู้คืน: สร้างเคอร์เซอร์ใหม่ใน File2File Cursor Converter เพื่อปรับเทียบพิกัดฮอตสปอตใหม่ด้วยสายตา
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ข้อบกพร่องในการวิเคราะห์ไฟล์ CUR ในอินเทอร์เฟซอุปกรณ์กราฟิกของ Windows (GDI) ในอดีตเคยยอมให้เกิดการรันโค้ดตามอำเภอใจผ่านมิติส่วนหัวที่ถูกสร้างขึ้นมาโดยเฉพาะ
เวกเตอร์การโจมตีที่ทราบ
- การเกิดจำนวนเต็มล้น (Integer overflow) ระหว่างการจัดสรรมาสก์สี DIB ในตัวถอดรหัสเคอร์เซอร์รุ่นเก่า
- ออฟเซ็ตฮอตสปอตที่เสียหายทำให้เกิดการอ่านพอยเตอร์นอกขอบเขตระหว่างการบลิตเคอร์เซอร์
- หน่วยความจำกอง (Heap) เสียหายเมื่อแยกวิเคราะห์สตรีม PNG ที่ฝังอยู่ภายในไฟล์ CUR สมัยใหม่
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- กำหนดพิกัดฮอตสปอตของพิกเซลที่แน่นอน (X, Y) ซึ่งเป็นจุดที่การคลิกเมาส์ลงทะเบียนบนหน้าจอจริงๆ
- เปิดใช้งานการกำหนดเคอร์เซอร์หลายความละเอียด เพื่อการแสดงผลที่คมชัดบนจอภาพมาตรฐานและจอภาพ 4K ที่มี DPI สูง
- ระบบปฏิบัติการ Windows รองรับการใช้งานได้โดยตรงทันทีโดยไม่ต้องใช้ไดรเวอร์ตัวชี้ของบุคคลที่สาม
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- เป็นรูปแบบที่เน้น Windows เป็นหลัก โดยมีการรองรับการแสดงผลดั้งเดิมบนอุปกรณ์มือถือและเบราว์เซอร์ที่ไม่ใช่ Windows ค่อนข้างน้อย
- เป็นตัวชี้แบบนิ่งเท่านั้น เคอร์เซอร์แบบภาพเคลื่อนไหวจะต้องใช้คอนเทนเนอร์ .ANI แบบหลายเฟรม
- มาสก์ XOR แบบ 1 บิตรุ่นเก่าทำให้เกิดอาร์ทิแฟกต์การกลับสีที่ดูหยาบกระด้างบนอินเทอร์เฟซสีสมัยใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ความแตกต่างเชิงโครงสร้างเพียงอย่างเดียวระหว่างไฟล์ ICO และไฟล์ CUR คือไบต์ที่ 3 ของส่วนหัว: 1 สำหรับไอคอน และ 2 สำหรับเคอร์เซอร์
- ในไฟล์ ICO ไบต์ที่ 4 และ 6 ของแต่ละรายการจะแสดงระนาบสีและบิตต่อพิกเซล แต่ในไฟล์ CUR ไบต์เดียวกันนั้นจะแสดงพิกัดฮอตสปอต X และ Y
- CSS รองรับเคอร์เซอร์เว็บแบบกำหนดเองได้โดยตรงโดยใช้ URL ที่ชี้ไปยังไฟล์ .cur
คำถามทางเทคนิคที่พบบ่อย
ฮอตสปอตของเคอร์เซอร์คืออะไร
ฮอตสปอตคือพิกัดพิกเซลที่แน่นอนภายในภาพเคอร์เซอร์ (เช่น ปลายสุดของลูกศรหรือจุดศูนย์กลางของเป้าเล็ง) ซึ่งเป็นจุดที่เกิดเหตุการณ์คลิกขึ้น
ฉันสามารถแปลงรูปภาพ (PNG/JPG) เป็นไฟล์ CUR ได้หรือไม่
ได้ File2File.app ช่วยให้คุณสามารถแปลงไฟล์ PNG หรือ JPG ทั่วไปให้เป็นไฟล์เคอร์เซอร์ .CUR ของ Windows พร้อมกับการกำหนดตำแหน่งฮอตสปอตเองได้
ฉันจะใช้ไฟล์ .cur บนเว็บไซต์ของฉันได้อย่างไร
คุณสามารถใช้เคอร์เซอร์กำหนดเองใน CSS ได้โดยใช้คำสั่ง: cursor: url('my-cursor.cur'), auto;