דף הבית » איך ל » קודים סודיים כי מתכנתים הסתר במחשב

    קודים סודיים כי מתכנתים הסתר במחשב

    מאז האדם הראשון כתב 5318008 על המחשבון, nerds כבר מסתיר מספרים סודיים בתוך המחשב, ושימוש בהם כדי לשאת ולתת לחיצות ידיים חשאיות בין יישומים וקבצים. היום אנחנו לוקחים מבט מהיר על כמה דוגמאות יותר מבדרים.

    מה הם מספרי הקסם?

    רוב שפות התכנות משתמשות בסוג שלם של 32 סיביות כדי לייצג סוגים מסוימים של נתונים שמאחורי הקלעים - פנימי המספר נשמר ב- RAM או בשימוש על-ידי המעבד כ -32 ואפס, אך בקוד המקור הוא ייכתב באחת פורמט עשרוני רגיל, או בפורמט הקסדצימלי, אשר משתמש במספרים 0 עד 9 ואת האותיות A דרך F.

    כאשר מערכת ההפעלה או יישום רוצה לקבוע את סוג הקובץ, הוא יכול להסתכל על תחילת הקובץ עבור סמן מיוחד המסמל את סוג הקובץ. לדוגמה, קובץ PDF עשוי להתחיל עם ערך hex 0x255044462D312E33, השווה ל- "% PDF-1.3" בפורמט ASCII, או קובץ ZIP מתחיל עם 0x504B, השווה ל- "PK", היורד ממכשיר ה- PKZip המקורי. על ידי הסתכלות על "חתימה" זו, ניתן לזהות בקלות את סוג הקובץ גם ללא מטא נתונים אחרים.

    קובצי Java Class הידור מתחילים עם CAFEBABE

    כלי השירות "לינוקס" יכול לשמש מהמסוף כדי לקבוע את סוג הקובץ - למעשה, הוא קורא את מספרי הקסם מתוך קובץ שנקרא "קסם".

    כאשר יישום רוצה להתקשר לפונקציה, הוא יכול להעביר ערכים לפונקציה זו באמצעות סוגים סטנדרטיים כמו מספר שלם, אשר יכול לבוא לידי ביטוי בקוד המקור בפורמט הקסדצימלי. הדבר נכון במיוחד עבור קבועים, שהם מזהים המוגדרים בשמות קריאים אנושיים כמו AUTOSAVE_INTERVAL, אך הם מפתחים לערכים שלמים (או סוג אחר) בפועל. אז במקום מתכנת להקליד את הערך כמו 60 בכל פעם שהם קוראים את הפונקציה בקוד המקור, הם יכולים להשתמש קבוע AUTOSAVE_INTERVAL לקריאה טובה יותר. (הקבועים הם בדרך כלל מוכרים בקלות כי הם כתובים בכל אותיות גדולות).

    כל הדוגמאות הללו יכולות ליפול תחת המונח מג 'יק מספרים, כי הם עשויים לדרוש מספר הקסדצימלי מסוים על מנת פונקציה או סוג הקובץ לעבוד כראוי ... אם הערך אינו נכון זה לא יעבוד. וכאשר מתכנת רוצה להיות קצת כיף, הם עשויים להגדיר ערכים אלה באמצעות מספרים הקסדצימליים כי לאיית משהו באנגלית, הידוע גם בשם hexspeak.

    כיף עם מספרי הקסם: כמה דוגמאות ראויות לציון

    כל AppleScript מסתיים ב- FADEDEAD

    אם תעיין בקוד המקור של לינוקס, תראה ששיחת המערכת ב- _reboot () על לינוקס דורשת מעבר של "קסמים" המשתווה למספר הקסדצימלי 0xfee1dead. אם משהו ניסה לקרוא את הפונקציה הזאת מבלי לעבור את הערך הקסום הראשון, זה פשוט יחזיר שגיאה.

    ה- GUID (מזהה ייחודי גלובלי) עבור מחיצת אתחול של BIOS בתצורת המחיצות של GPT הוא 21686148-6449-6E6F-744E-656564454649, המהווה את מחרוזת ASCII "Hah! IdontNeedEFI", רמז לעובדה ש- GPT יהיה בשימוש רגיל במחשבים שהחליפו את ה- BIOS עם UEFI, אבל זה לא בהכרח צריך להיות.

    מיקרוסופט הסתירה את 0x0B00B135 ב- Hyper-V וירטואלית-מכונה התומכת בקוד המקור שנשלח ל- Linux, לאחר מכן שינו את הערך ל- 0xB16B00B5, ולבסוף החליפו אותו לעשרונית לפני שהוסר מקוד המקור.

    דוגמאות מהנות יותר כוללות:

    • 0xbaaaaaad - בשימוש על ידי iOS לקרוס רישום כדי לציין כי יומן הוא stackshot של המערכת כולה.
    • 0xbad22222 - בשימוש על ידי iOS לקרוס רישום כדי לציין כי יישום ה- VoIP נהרג על ידי iOS כי זה misbehaved.
    • 0x8badf00d - (אכלו אוכל רע) בשימוש על ידי יומני התרסקות iOS כדי לציין כי יישום לקח זמן רב מדי לעשות משהו ונהרג על ידי timeout כלב השמירה.
    • 0xdeadfa11 - (Dead Fall) שבו נעשה שימוש ביומן קריסה של iOS כאשר אפליקציה מפסיקה לפעול על ידי משתמש.
    • 0xDEADD00D - המשמש את Android לציון הפלה של VM.
    • 0xDEAD10CC (נעל המלח) המשמש את יוס לקרוס רישום כאשר יישום נועל משאב ברקע.
    • 0xBAADF00D (מזון רע) המשמש את הפונקציה LocalAlloc ב- Windows לצורך איתור באגים.
    • 0xCAFED00D (אחי קפה) בשימוש על ידי דחיסה Pack200 של Java.
    • 0xCAFEBABE (בייבי קפה) המשמש את ג 'אווה כמזהה עבור קבצים בכיתה הידור
    • 0x0D15EA5E (מחלות) בשימוש על ידי Nintendo על Gamecube ו- Wii כדי לציין אתחול נורמלי קרה.
    • 0x1BADB002 (1 אתחול רע) המשמש את מפרט multiboot כמספר קסם
    • 0xDEADDEAD - בשימוש על ידי Windows כדי להצביע על התרסקות debug ידני באופן ידני, הידוע גם בשם מסך כחול של מוות.

    אלה לא היחידים שם בחוץ, כמובן, אבל רק רשימה קצרה של דוגמאות שנראו כיף. לדעת יותר? ספר לנו את ההערות.

    לראות דוגמאות עבור עצמך

    ניתן לראות דוגמאות נוספות על ידי פתיחת עורך hex ולאחר מכן פתיחת כל מספר סוגי קבצים. יש הרבה עורכי hex freeware זמין עבור Windows, OS X, או Linux - רק לוודא שאתה זהיר בעת התקנת freeware לא לקבל נגוע crapware או תוכנות ריגול.

    כדוגמה נוספת, תמונות התאוששות עבור טלפונים דמוי אדם כמו ClockworkMod להתחיל עם "ANDROID!" אם לקרוא בפורמט ASCII.

    הערה: אל תשנה משהו בזמן שאתה מסתכל מסביב. עורכי Hex יכולים לשבור דברים!