קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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

אתה יכול גם להשוות הנדסה לאחור להוכחות של משוואות מתמטיות. אז איך משתמשים בהנדסה לאחור?

מהי הנדסה לאחור?

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

  • ניתוח מקורות של תוכנות שאינן קוד פתוח
  • ניתוח פגיעות
  • ניתוח תוכנות זדוניות
  • פיצוח ותיקון

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

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

instagram viewer

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

חלקים עיקריים בארכיטקטורת מחשבים

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

  • קֶלֶט: קבוצה של שיטות להזנת נתונים.
  • מעבד: המעבד מעבד נתונים נכנסים ומשדר אותם לבעליו. זוהי יחידת העיבוד המרכזית.
  • זיכרון: המרחב שמחזיק נתונים באופן זמני במהלך העיבוד.
  • תְפוּקָה: התוצאה שמשתמש הקצה רואה.

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

צלול לתוך מעמקי המעבד

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

  1. יחידת בקרה: זה אחראי על עיבוד הנתונים במעבד והעברתם לשדות הרלוונטיים. אתה יכול לחשוב על יחידה זו כמנגנון בקרת ניתוב.
  2. ALU: זה קיצור של יחידת לוגיקה אריתמטית. זה המקום שבו מתרחשות כמה פעולות אריתמטיות והגיוניות. אם תחפור עמוק יותר במתמטיקה, תראה שארבע הפעולות הבסיסיות הן בעצם וריאציות על חיבור. אז ה-ALU מבוסס על צבירה. לדוגמה, הפחתת שניים משלוש זהה להוספת מינוס שניים לשלוש.
  3. רושמים: אלו הם האזורים בתוך המעבד שמכילים את הנתונים המעובדים. ישנם סוגים שונים של רישום, בדומה לסוגים שונים של משתנים בשפת תכנות. פנקס אחראי לשמירה על סוג ותכונות הנתונים שהוקצו לו.
  4. אותות: אם אתה רוצה שה-CPU יבצע פעולות רבות ושונות בו-זמנית, יש צורך בשיטה כלשהי לארגן אותן. האלמנטים שעושים זאת נקראים אותות. כל עסקה פועלת לפי אותות המבטיחים שהיא לא מפריעה לתהליך אחר.
  5. אוֹטוֹבּוּס: הנתיב המשמש את הנתונים למעבר מיחידה אחת לאחרת. שימו לב כיצד השם מרמז על תחבורה.

מושגים שתשמעו לעתים קרובות בהנדסה לאחור

הבנה כיצד ה-CPU מעבד נתונים ומאחסן אותם בזיכרון, לצד הרעיון של רגיסטרים, יכולה להיות שימושית מאוד בהנדסה לאחור. בפרט, אתה יכול להשתמש בתרשים שלהלן כדי להבין טוב יותר את מושג הזיכרון:

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

  • 1. EAX: מייצג מצבר רישום. זה בדרך כלל שומר נתונים שנכללים בקטגוריה של פעולות אריתמטיות כאן.
  • 2. EBX: מייצג Base Register. זה משחק תפקיד בטיפול עקיף.
  • 3. EDX: קיצור של Data Register. EDX עוזר לרשמים אחרים.
  • 4. EIP: מייצג Instruction Pointer. מחזיק את הכתובת של הדומיין להרצה.
  • 5. ESP: מכיל את כתובת הבסיס.
  • 6. ESI: מחזיק את מידע אינדקס המקור.
  • 7. EDI: שומר את מידע אינדקס היעד.

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

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

מה תעשה עם כל זה?

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

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