PracticU

עקיפה של הגנת Anti-Debugging עם IDA

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › עקיפה של הגנת Anti-Debugging עם IDA
מילון מושגים:
ספרייה - אוסף קוד מוכן, כמו פונקציות ומחלקות, שמפתחים משתמשים בו בתוכניותיהם במקום לכתוב הכול מחדש.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.
מעבד - יחידת העיבוד המרכזית של המחשב, שמבצעת את הפקודות של התוכניות ומנהלת את החישובים.
מעטפת - תוכנה שמפרשת פקודות של המשתמש ומעבירה אותן למערכת ההפעלה, למשל Bash או PowerShell.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.
הקסדצימלי - שיטת ספירה בבסיס 16, המשתמשת בספרות 0-9 ובאותיות A-F, ונפוצה לייצוג ערכים בינאריים בקצרה.
בייט - יחידת מידע המורכבת משמונה ביטים, ומסוגלת לייצג תו בודד או מספר בין 0 ל-255.

עקיפה של הגנת Anti-Debugging עם IDA
בשיעור זה נתחבר בעזרת IDA אל הטלפון ונדבאג את קובץ הספרייה libfoo.so בזמן עבודה, כדי להציץ בזיכרון ולגלות איפה מוחבאת הסיסמה. בדרך ניתקל בהגנת אנטי דיבאגינג שמונעת חיבור דבאגר, נאמת אותה מתוך הטלפון עצמו, וננטרל אותה על ידי טלאים ישירים בקובץ ה SO של הספרייה.
נושאי הסיכום המוצגים בשיעור:
1. נקודת הפתיחה: בשיעור הקודם פתחנו בעזרת IDA את קובץ libfoo.so, הספרייה החיצונית של ה APK שלנו, וברצוננע לתפוס אותו בזמן עבודה ולדבאג אותו כדי להציץ פנימה בזיכרון ולראות מה הסוד שלו ואיפה מוחבאת הסיסמה.
2. חזרה על הנקודות שהצבנו: כיצד הגענו לכתובת של הפונקציה, דרך התצוגות, פתיחת תתי תצוגה וה Exports, שמציגים את הפונקציות שהספרייה מייצאת החוצה. שם היו שתי פונקציות מיוצאות, וענייננו ב bar בכתובת שלה, אליה הגענו בלחיצה כפולה והצבנו בה נקודת עצירה. במעבר זריז על הפקודות ראינו קריאה אל strcmp, השוואת שני מחרוזות, שהיא הכי מעניינת אותנו.
3. חיבור IDA אל הטלפון: הטלפון שלנו חיצוני, ולכן בתפריט הדבאגר בוחרים דבאגר מתאים, למשל דבאגר לינוקס מרוחק או gdb. אחרי הבחירה נפתח כל התפריט, ובתוכו אפשרויות תהליך שבהן מגדירים את כתובת ה IP של הטלפון, שאותה מגלים בלחיצה ארוכה על ה Wi Fi, ואת הפורט שלו, ושומרים זאת כברירת מחדל.
4. ניסיון ההתחברות נכשל: מבקשים מהדבאגר להתחבר אל האפליקציה הרצה ולחקור אותה, דרך attach to process ואז touch process, והוא אינו מצליח להתחבר ומדווח על אין חיבור. הסיבה, שאין בתוך הטלפון את הסוכן, וצריך להציב שם סוכן סודי שיעזור לנו.
5. שרת הדיבאג של IDA: הסוכן נקרא Android Debugger Server, שרת שיעבוד בתוך הטלפון או בלינוקס המרוחק. מתיקיית IDA מורידים את קובץ השרת המתאים, ויש שם שרתים ל Mac, ל Windows ול Windows מרוחק, ואנחנו זקוקים לזה של אנדרואיד עבור מעבד x86, שכן קיים גם אנדרואיד רגיל אך אנחנו זקוקים לאנדרואיד למעבד x86.
6. התקנת הסוכן בטלפון: מתחברים בעזרת adb connect, מדווחים על הצלחת החיבור, ודוחפים את הקובץ בעזרת adb push אל תיקיית ה temp שבפנים. נכנסים פנימה בעזרת adb shell ואז cd temp, רואים את הקובץ עם הרשאות קריאה בלבד, ומוסיפים לו הרשאת הרצה בעזרת chmod עם x, ושוב ls מראה את ה x שהתווסף. ההרשאות מוצגות לפי שלוש קבוצות, הרשאות הרוט של בעל הקובץ, הרשאות הקבוצה שגם היא נקראת רוט, והרשאות של כל מי שאינו משתמש ואינו מהקבוצה, וכעת יש לכולם הרשאת הרצה.
7. הפעלת הסוכן: מריצים את קובץ האנדרואיד x86, והוא מתחיל להאזין בכל כתובות ה IP שבטלפון על הפורט שנקבע. אפשרות נוחה נוספת, לצאת מהטלפון לגמרי בעזרת קונטרול c ולהריץ את הפקודה ישירות בעזרת adb shell עם הפקודה, בלי להיכנס פנימה ידנית, שורת הפקודה נפתחת בתוך הטלפון, מריצה את הפקודה ונסגרת.
8. ההתחברות מצליחה: אחרי שיש בתוך הטלפון את הסוכן שלנו, חוזרים אל touch to process והוא מציג את כל התהליכים הקיימים בטלפון. מחפשים את UnCrackable ומגלים שמופיעים שם שני תהליכים, למרות שהפעלנו אחד בלבד. כשמשהו מופעל פעמיים כנראה שזה טריק שמונע מהדבאגר להתחבר, וזהו טריק אנטי דבאגר ידוע, שהאפליקציה מייצרת לעצמה עותק שמתחבר חזרה אל האפליקציה הראשונה כאילו הוא דבאגר, ואז אף אחד אחר אינו יכול להתחבר, כי רק דבאגר אחד יכול להיות מחובר לאפליקציה.
9. ההתחברות לתהליך השני: ניסיון התחברות אל התהליך הראשון נענה בהודעה שהדבאגר אינו יכול להתחבר אל התהליך שנבחר, כי שם כבר תפוס. מתחברים אל השני, והוא שואל אם הספרייה שרצה שם היא אותה ספרייה שרצה אצלנו, ומאשרים שזה אותו דבר, והוא מסנכרן אותנו אל שם. ניתן ללחוץ הרצה, הקוד רץ, ואפשר לבצע אימות והכול עובד, רק שהוא אינו עוצר בנקודות העצירה שהצבנו.
10. מדוע הנקודות אינן פועלות: אנחנו מחוברים אל התהליך השני והקוד רץ בתהליך הראשון, ולכן ההתחברות הזאת למעשה מונעת מאיתנו. עוצרים את הדבאגר כרגע, כי יש לנו בעיות אחרות לפתור קודם.
11. האמתה מתוך הטלפון: נכנסים אל הטלפון בעזרת adb shell ומריצים ps עם a, שמציג את כל התהליכים שרצים בזיכרון, כמו מנהל המשימות בווינדוס, ומסננים בעזרת grep את שם האפליקציה. מתגלים שני תהליכים, וחושדים ששם חסומה אפשרות הדיבאג. נזכור את שני המזהים שלהם.
12. תיקיית proc ומה שבה: נכנסים לתיקיית proc של מזהה התהליך הראשון. בלינוקס הכול קבצים, וגם מנהל המשימות מוצג בצורת קבצים, ותיקיית ה proc היא תיקייה דינמית של קבצים שמייצגים מידע על התהליך. בקובץ ה maps נראים כל מיפויי הזיכרון של התהליך, ומסננים אל שם הספרייה פו ומגלים שהתהליך משתמש בגרסת x86 שלה, וכך ידענו על מה להסתכל ואיפה לשנות. יש גם קובץ שנקרא status שמכיל מידע על התהליך, ומעניין אותנו שם מספר התהליכונים שרצים במקביל, ובעיקר שדה ה tracer pid, שמעיד על הדבאגר המחובר.
13. האמתה מתקבלת: בקובץ ה status של התהליך הראשון מופיע tracer pid עם המזהה של התהליך השני, כלומר לתהליך הזה מחובר דבאגר, והתהליך השני נוצר על ידי הראשון והוא האבא שלו, הוא התחבר חזרה אל אביו ונעשה לו דבאגר, ולכן אנחנו איננו יכולים להתחבר. צריך להוציא את הפקודה שמחברת אותו כדבאגר.
14. איפה הקוד הזה נמצא: הכול קורה כבר לא ב Java אלא בתוך קובץ ה SO, ברמת הספרייה המקומית, בתוך ה DLL, ולכן JADX כבר איננו מעניין אותנו ומחפשים כאן, ב IDA, איפה הסיפור הזה קורה. הפקודה ptrace היא זו שמחברת את הדבאגר, ומי שרוצה ב C++ לרשום חיבור של דבאגר כותב אותה. מחפשים בקונטרול F את ptrace ומתגלות שתי פונקציות שלה, עם קו תחתון ובלי. מסתכלים מי משתמש בהן בעזרת cross reference שנפתח בלחיצה ימנית, ומתגלה שאליהן מפנה פונקציה בשם 720. פותחים את רשימת הפונקציות, מוצאים בה את 720 בעזרת קונטרול F, ונכנסים אל קודה, שאותו אפשר להציג כרצף או כריבועים, ובתוכו מוצאים את הקריאה אל ptrace.
15. הטלאי עצמו: רוצים למחוק את הקריאה הזאת, אך אסור לפגוע בפקודות שאחריה, בכתובת הבאה כבר יושבת פקודה אחרת ואסור להזיז אותה, צריך רק להחליף את הקריאה הזאת. קודם כול פותחים באפשרויות הכלליות את הצגת מספר ה opcodes, פקודות שפת המכונה, ומציבים שמונה, והכלי מציג את הבתים המקוריים של הפקודה, חמישה בתים שמשמעותם ptrace לפי תקן ה x86. מחליפים את חמשת הבתים האלה בבתים אחרים שלא יעשו דבר, וקיימת בשפת מכונה פקודה שאינה עושה כלום, nop, שבמעבדי x86 הקוד שלה הוא 90 בבסיס הקסדצימלי. שימו לב שהערך הזה משתנה לפי סוג המעבד, במעבדים אחרים לו ערכים אחרים, ומעניין אותנו רק Intel x86. דרך העריכה ותכנות הטלאי עם שינוי בייט מחליפים חמישה בתים בערך 90, בלי לגעת בפקודה הבאה, והיא נשארת בדיוק באותה כתובת, התזוזה שנראית היא ויזואלית בלבד. מחפשים אם יש עוד קריאות אל ptrace, מתגלה שגם השנייה מפנה אל אותה פונקציה, ומחליפים גם אותה באותו אופן, חמישה בתים של 90, ומאמתים שאין יותר הפניות אל ptrace.
16. החלת הטלאים על הקובץ: כל מה שעשינו עדיין אינו נשמר בתוך הקובץ, הכול נמצא ברשימת הטלאים של הכלי, שבה כתוב בכל שורה את הכתובת ואת ההחלפה, במקום הבתים המקוריים יוכנסו בתים של 90. ישנם שני טלאים בדיוק, ואפשר גם לבצע החזרה שלהם אם איננו מרוצים. בעריכה, בתוך תכנות הטלאי, מבצעים את החלת הטלאים אל קובץ הקלט, והכלי שואל על איזה טווח ועל איזה קובץ, ומבצע. את ההצלחה רואים בשעת העדכון של קובץ הספרייה שהשתנתה. שימו לב שהקבצים האלה הם קבצים שהכלי יוצר תוך כדי עבודה, ואם סוגרים אותו ועונים שלא לשמור, כל העבודה כולל נקודות העצירה והטלאים נעלמת, אם לא בוצעה החלת הטלאים קודם.
17. הרכבה מחדש, חתימה והתקנה: עכשיו יש לנו קובץ ספרייה מתוקן שמאפשר לדבאגר שלנו להתחבר. מתקינים אותו בתוך הטלפון, מוחקים את תיקיית ה patch הישנה, ומרכיבים מחדש את התיקייה בעזרת apktool בפקודת הבנייה, הפעם בלי ההגנה על השורש וגם בלי הטלאי של ה ptrace. לדעת המרצה, פונקציית ה init שראינו היא זו שהפעילה את כל ההגנות האלה בפנים. לאחר מכן חותמים על הקובץ בעזרת jarsigner עם המפתח שיצרנו קודם והסיסמה שלו, מסירים את האפליקציה מהטלפון ומתקינים אותה מחדש בעזרת adb install. בהרצה נשארת ההתראה על השורש שאינה יוצאת, אך הפעם מתקינו גרסה עם שני טלאים, אחד שמונע את היציאה והשני שאמור למנוע את הקטע של הדיבאגינג.
18. האימות הסופי: מריצים שוב את רשימת התהליכים עם הסינון והאפליקציה מופיעה רק פעם אחת, ונכנסים לתיקיית ה proc שלה ומקריאים את ה status ואת ה tracer pid, שמראה שאין דבאגר מחובר, ולכן עתה אפשר להתחבר עם הדבאגר אל תוך הספרייה, וזה מה שנעשה בהרצאה הבאה, נתחבר עם הדבאגר ונתחיל לנתח את הספרייה.
בשיעור זה חיברנו את IDA אל הטלפון דרך שרת הדיבאג שהותקן בתוכו, גילינו טריק אנטי דיבאגינג שבו האפליקציה מייצרת עותק של עצמה שמתחבר אליה כדבאגר וחוסם את החיבור שלנו, אימתנו זאת מתוך הטלפון בעזרת ps ותיקיית proc עם קובץ ה status וה tracer pid, איתרנו ב IDA את קריאות ה ptrace בתוך פונקציה 720 דרך הפניות צלב, הצגנו את בתי ה opcode והחלפנו את חמשת הבתים של כל קריאה בבתים של nop, החלנו את הטלאים אל קובץ הספרייה, בנינו וחתמנו את ה APK מחדש והתקנו אותו, ואימתנו שהאפליקציה מופיעה פעם אחת ושהדבאגר אינו חסום עוד. בשיעור הבא נעסוק בנושא דיבאג של קובץ so עם IDA ופריצה לתוך UnCrackable Level 2.
SR12597HE

פרקי ההרצאה: עקיפה של הגנת Anti-Debugging עם IDA

  1. 00:00

    חזרה על פתיחת ה-SO

  2. 01:00

    בחירת דיבאגר מרוחק

  3. 02:28

    הצורך בסוכן במכשיר

  4. 03:06

    העברת סוכן הדיבאג למכשיר

  5. 04:59

    התחברות לתהליך הרץ

  6. 05:35

    הכרת טריק ה-Anti-Debugging

  7. 08:13

    חקירת תהליך דרך תיקיית Proc

  8. 10:46

    הוכחת החיבור ל-Debugger

תמלול ההרצאה: עקיפה של הגנת Anti-Debugging עם IDA

הטקסט המלא של הדקות הראשונות בהרצאה «עקיפה של הגנת Anti-Debugging עם IDA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:23

    שמנו פה breakpoint, דרך אגב איך ידעתי להגיע לכתובת F60? באתי ל-views, open sub views ויש פה exports, מייצאת הספרייה הזאת האקספורטס הזה כתב לי שיש פה שתי פונקציות שמייצאים ואני מעוניין בפונקציית בר בכתובת f60 אני עושה דאבל קליק מגיע לכאן ושמתי פה ברקפוינט עברנו זריז על כל מיני פקודות וראינו פה קול לסטרינג קומפר שזה הכי מעניין אותנו להשוות שני סטרינגים

  3. 00:53

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

  4. 01:11

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

  5. 01:30

    בואו נראה מה ה-IP של הטלפון הזה, אני עושה לחיצה ארוכה על Wi-Fi ומחפש את ה-IP שלו. 10.10.102.174, הוא מתחבר ל-IP הזה בפורט 2.3.9.4.6, אני שומר את זה as default, יופי, ועכשיו אני רוצה להגיד לו, תקשיב, אתה תתחבר לי לאפליקציה הזאת שעובדת, אני רוצה לחבר אותך ולחקור את האפליקציה.

  6. 01:59

    אז אני עושה דבאגר, attach to process, תתחבר ל-process, עובד, ב-IP ההוא שציינתי לך, אני עושה לו את touch process והוא לא מצליח להתחבר, למה הוא לא מצליח להתחבר?

  7. 02:12

    כי אין לו שם בפנים את הסוכן, אתם רואים הוא כותב לי פה 10, 100, 102, 174, בפורט 2394 לא יכול להתחבר, no connection, למה? כי אין לי את הסוכן ההוא, אני צריך שם איזשהו סוכן סודי שיעזור לי, אז זה נקרא Android Debugger Server, שרת שיעבוד בתוך הטלפון הזה, אוקיי, או בלינוקס המרוחק, שיהיה לי שם סוכן משלי.

  8. 02:39

    אז אני הולך לתיקיית עאידה פרו, מחפש דבאג SRV, דבאג סרבר. יש פה כל מיני סרברים ל-Mac, ל-Windows, Windows Remote, ואני צריך פה אנדרואיד x86.

  9. 02:54

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

  10. 03:20

    נעשה פוש לקובץ הזה העתקנו אותו לתיקיית temp שם בפנים וניכנס לתיקיית temp הזאת adb-shell אני בתוך הטלפון עכשיו cd-tmp אני נכנס פנימה אני בתוך הטלפון נושא ls-l אני רואה את הקובץ שלי זה הקובץ שזרקתי פנימה אבל יש לו רק הרשאות read אתם רואים רק read יש לו אני צריך פה execute שנוכל להריץ אותם אז אני עושה פקודת change mode פלוס x מוסיף x לקובץ android x68 נעשה עוד פעם ls-l ורואים שלקובץ שלי הופיע הx

  11. 04:00

    פה אתם רואים זה הרשאות של root של היוזר הזה זה הרשאות של הקבוצה גם היא נקראת רוט וזה הרשאות של כל מי שלא יוזר ולא קבוצה הזאת. אוקיי, בקיצור יש לכולם הרשאות אקזיקיוט ועכשיו נשאר לנו רק להריץ אותו.

  12. 04:18

    אנחנו עושים פה אנדרואיד x86 והנה הוא מתחיל להאזין בפורט שלנו listening on, הוא מאזין בכל כתובות הIP שיש בטלפון הזה על פורט 23946. יופי.

  13. 04:29

    מה עוד יכולנו לעשות? יכולנו לצאת מהטלפון לחלוטין לחצי ctrl+c, יצאתי חזרה לווינדוס שלי ואני יכול להריץ פקודת ADB Shell וישר להגיד לו מה להפעיל ADB Shell וישר תפעיל את הקובץ כאילו אני לא חייב לעשות Shell ידנית ושם בפנים לעשות אלא ישר תפתח CMD בתוך הטלפון ותריץ שם את הפקודה הזאת והזאת זאת גם אפשרות אותו דבר הנה הוא

  14. 04:53

    בתוך הטלפון מאזין אחרי שיש לנו בתוך הטלפון את הסוכן שלנו אנחנו יכולים לחזור ולעשות את touch to process עכשיו הוא מראה לי את כל מה שקיים בתוך הטלפון אתם רואים את כל הפרוצסים שקיימים בטלפון אני עושה search ומחפש Uncrackable ואני רואה פה שניים זה מעניין למה יש שניים למרות שהפעלתי אחד כשאני רואה שמשהו מופעל פעמיים כנראה שזה טריק שמונע

  15. 05:20

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

  16. 05:48

    לא יכול להתחבר כי רק דבאגר אחד יכול להיות מחובר לאפליקציה אז אם אני עכשיו אנסה להתחבר כנראה לכאן אני אקבל סירוב אני עושה הנה the debugger cannot attach to the selected process הוא לא יכול להתחבר למה כי שמה כבר תפוס בטח אבל אם אני אתחבר לשני זה לא יעזור לי touch to process אם אני אתחבר לשני השני דווקא

  17. 06:08

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

  18. 06:40

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

  19. 06:50

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

  20. 07:02

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

  21. 07:18

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

  22. 07:26

    מה אני רוצה? אני רוצה ADB של להיכנס לתוך הטלפון. הנה אני בתוך הטלפון. עכשיו בתוך הטלפון אני מריץ פקודות PS מינוס A. תראה לי את כל הפרוצסים בזיכרון.

  23. 07:39

    הנה הוא מראה לי את כל התוכנות שרצות בזיכרון, זה כמו Task Manager בווינדוס ואני עושה לו Grap Uncrackable 2. טוב, בואו נעתיק את זה מכאן כי אין לי כוח לכתוב.

  24. 07:50

    Grap Uncrackable 2 ואני רואה שבאמת יש לי פרוצס 3097 Uncrackable 2 ו-3113. אני חושד שפה חסומה האופציה של דיבאג. בואו נראה. תזכרו שאחד 3097 והשני 3113. אוקיי, אז אנחנו ניכנס פנימה לתוך התיקייה שנקראת PROC 3097. מה זה התיקייה הזאת?

  25. 08:17

    זה למעשה כמו Task Manager שמוצג בצורת קבצים. כשאומרים בלינוקס הכל קבצים, מתכוונים שאפילו Task Manager, כל הפרוצסים הם כמו קבצים.

  26. 08:27

    אז יש לנו פה תיקייה לתהליך 3097, שזה זה. ושימו לב, דרך אגב, התהליך 3113, מי האבא שלו? האבא שלו זה 3097. זאת אומרת, ה-3097 הזה יצר את זה.

  27. 08:43

    אוקיי, אז אנחנו בראשון. מה אנחנו יכולים לראות פה בתוך ה-Task Manager הזה, בתוך ה-Process הזה? תיקיית פרוקס, זו תיקייה דינמית כאילו.

  28. 08:51

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

  29. 09:09

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

  30. 09:31

    אז יכלתי לעשות את זה בהתחלה להריץ את זה ולחקור את התהליך סתם אני חוקר תהליך אז אמרנו ps גיליתי את המספר שלו עשיתי cut לקובץ Maps, מצאתי שזה x86.

  31. 09:46

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

  32. 10:11

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

  33. 10:26

    PS-A Grap Uncrackable 2. ואנחנו רואים ש-3113 מחובר כדבאגר ל-30.97. איך אני יודע? כי בתיקיית 30.97 אני עושה cut לסטטוס ומגלה שטרייס ספיד 3113.

  34. 10:44

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

  35. 10:59

    אנחנו צריכים להוציא את הפקודה שמחברת אותו כדבאגר להוציא את הפקודה הזאת. שימו לב הכל קורה כבר לא בג'אווה הכל קורה בתוך קובץ SO הזה כן? בתוך הרמה של ה-Native Library, בתוך ה-DLL.

  36. 11:16

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

לקורס המלא: קורס האקינג לאנדרואיד אונליין

ההרצאה הקודמת: הסבר על JNI ועל קבצי SO

ההרצאה הבאה: דיבאג של קובץ so עם IDA ופריצה לתוך UnCrackable-Level2

הרצאות קשורות מקורסים אחרים

  • Debugging in JavaScript
  • עקיפה של AMSI
  • הבדלים בין Testing לבין Debugging
  • העלאת הרשאות - עקיפה של UAC

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP