PracticU

דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור

בלי כתוביותעם כתוביות
PracticU › קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting › דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור
מילון מושגים:
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.
SDK - ערכת כלים לפיתוח: אוסף ספריות, כלים ותיעוד שמאפשרים לבנות תוכנה לפלטפורמה או שירות מסוימים.
GitHub - שירות ענן לאחסון מאגרי קוד מבוססי Git, המאפשר שיתוף פעולה, מעקב גרסאות וניהול פרויקטים.
בייט - יחידת מידע המורכבת משמונה ביטים, ומסוגלת לייצג תו בודד או מספר בין 0 ל-255.
ASCII - תקן לקידוד תווים שמייצג אותיות, ספרות וסימנים כמספרים, ומשמש בסיס לייצוג טקסט במחשב.
אתר אינטרנט - אוסף של דפים ומשאבים מקושרים המתארחים תחת כתובת אחת ומוגשים דרך דפדפן.

דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור
בשיעור זה נעצור את קוד האפליקציה בתוך הטלפון באמצע עבודה, נציץ בזיכרון של המכשיר ונגלה את הערכים הסודיים של המשתנים שלו, במקום לנתח את הקוד באופן סטטי. זוהי דיבאגינג, עבודה עם דבאגר, והיא דומה לפרידה רק שאנחנו לא משכתבים דבר, פשוט עוצרים את התוכנה באמצע ומסתכלים מה קורה בזיכרון, ודרך זה נפרוץ את האפליקציה.
נושאי הסיכום המוצגים בשיעור:
1. הכלי וההתקנה: נעבוד עם Android Studio, סביבת הפיתוח הפופולרית ביותר לאפליקציות אנדרואיד, שהרוב המכריע של האפליקציות נכתב בה כיום. ההפעלה הראשונה שלה אורכת זמן, כי היא מתקינה עוד רכיבים ומפשרת את עצמה, ומסיימת בעצמה.
2. בחירת מכשיר האמולטור: בוחרים מכשיר Galaxy S8, ושווה לשים לב שמותר לעבוד על גרסאות 11, 12, 8, 7 ואפילו 5, אך אסור על 9 ועל 10, כי יש בהן באג שמפריע לעבודה שלנו.
3. גילוי כתובת הטלפון: בתוך הטלפון הווירטואלי סוגרים חלונות בהחזרה ימינה, מורידים את התריס העליון, לוחצים זמן ארוך על ה Wi Fi, נכנסים לרשת המחוברת ורואים את כתובת ה IP שלה, וכך נדע להתחבר אליה מרחוק.
4. ייבוא ה APK: במסך הפתיחה של Android Studio בוחרים ב more actions ואז באפשרות של דיבאג ל APK, ומייבאים את הקובץ שלנו מתוך תיקיית ה patch שבהורדות, הגרסה שכבר עקפנו בה את הגנת זיהוי השורש בשיעורים קודמים, כך שלא תעצור אותנו באמצע ותגיד שהמכשיר פרוץ.
5. הקוד מוצג ב smali: בתוך הפרויקט שנפתח כל המחלקות מוצגות בשפת smali, שהיא בעצם האסמבלר של Java, שפת המכונה אליה מתורגם ה Java. זה לא נוח במיוחד לקרוא, אך זה הקוד היחיד שעובד במאה אחוז, ולכן גם סביבת הפיתוח עובדת איתו.
6. JADX כעזר בלבד: אפשר להיעזר ב JADX כדי לראות את הקוד בערך ב Java, אך חשוב להבין שאי אפשר במאה אחוז לתרגם שפת מכונה חזרה לשפה עילית. בכלי האם Tools ו Log Viewer רואים הודעות שגיאה כמו מחלקה שלא נמצאה, והן נובעות מכך שהתרגום ההפוך הוא מקורב. עדיין זה מספיק טוב כדי לדעת מה מחפשים.
7. מה מחפשים: את השורה שמוציאה את הודעת ההצלחה שזה הסוד הנכון, ורוצים שהפונקציה תחזיר אמת. בקוד שכבר הכרנו מתבצעת בסופו השוואה בין המחרוזת שנקלטה מהמשתמש לבין המשתנה שמכיל את הקוד הסודי, והמשתנה הזה מקבל את ערכו מהשורה שאותה מחפשים.
8. מציאת המקום ב smali: בקובץ ה smali נראים שתי מתודות, A ו B, שיושבות בתוך מחלקה A, והקובץ עצמו הוא המחלקה. מזהים את הבלוק לפי הסימנים שמוכרים מה Java, קריאה לפונקציה עם שני פרמטרים, ואז פקודת העברת התוצאה אל המשתנה המקומי. בשפה עילית זאת שורה אחת, ובשפת המכונה זה כמה שורות.
9. הבנת try ו catch: הקריאה יושבת בתוך בלוק של try, בלוק ניסיון, ואחריו נפתח בלוק catch. העיקרון, מנסים לבצע משהו, ואם הוא נכשל, למשל לא הצליח לפתוח הצפנה או לא מצא קובץ או נכשל בשליחה ברשת, מבוצע הקוד שבתוך ה catch שמציג הודעת שגיאה. את המקום זיהינו לפי הקריאה לפונקציה בתוך ה try ולפי סיומו.
10. מדוע ההידור ההפוך אינו מדויק: כל שורה בשפה עילית מתורגמת לכמה פקודות בשפת מכונה, ולפעמים מכניסים לשם בכוונה פקודות זבל שנראות שייכות לדבר אחר לחלוטין, רק כדי לבלבל, ואז אי אפשר להחזיר את השורות חזרה לשפה עילית, ולכן הנדסה לאחור אינה מושלמת.
11. הקובץ על הדיסק: הקובץ שראינו בתוך הכלי מצוי גם על הדיסק, בתיקיות ששמן משקף את שם החבילה, ולכל מחלקה יש קובץ smali משלו, שנוצר על ידי תוכנת הערפול שמצמצמת את השמות. בקובץ מאתרים את שורת הקריאה לפונקציה עם שני המשתנים ואת שורת קבלת התוצאה, סביב שורה 29, ושם רוצים לעצור ולתפוס את הערך.
12. נקודות עצירה שנכשלות: ניסיון להציב נקודת עצירה אדומה נכשל, והודעה אומרת שאין SDK. SDK הוא ערכת כלי הפיתוח של אנדרואיד, ו Android Studio הוא בעצם מעטפת נוחה מסביב לכלי פיתוח שעובדים משורת פקודה. מתקינים אותו, ועדיין אין נקודות עצירה, ואז מבינים שצריך תוספת.
13. התוסף SmaliIde: מורידים את התוסף שנקרא Smali IDE מה GitHub, תוסף שמאפשר דיבאגינג ברמת קוד בייט, שהוא שפת המכונה של Java, כולל נקודות עצירה וצעדים בודדים בתוך הקוד. מתקינים אותו דרך הגדרות של הסביבה, בקטע התוספות, עם האפשרות של התקנה מהדיסק, בוחרים את הקובץ מההורדות, מאשרים ומפעילים את הסביבה מחדש, כי אחרי התקנת תוסף חובה לפתוח מחדש, ומעתה אפשר להציב נקודת עצירה אדומה שעוצרת את הריצה בשורה הזאת.
14. חיבור הטלפון והפעלה במצב דיבאג: למעלה כתוב שאין מכשירים, ובמקום להשתמש באמולטור של הסביבה מחברים את הטלפון שלנו מרחוק בעזרת adb connect אל הכתובת שגילינו, והמכשיר מופיע. לא מפעילים בעזרת כפתור ההרצה הרגיל אלא בכפתור הדיבאג, שאחרי כל פקודה חוזר אל סביבת הפיתוח ובודק מה עוד צריך לעשות, והמסך מראה שהתוכנה ממתינה לדבאגר.
15. עקרונות דבאגר שתקפים לכולם: מה שמוסבר כאן נכון לכל דבאגר בכל תוכנה ובכל שפה. רק דבאגר אחד יכול להתחבר לתוכנה בו זמנית, וקיימות הגנות שמפעילות בעצמן דבאגר ומתחברות לעצמן כדי למנוע ממך להתחבר, והפתרון הוא להפעיל את התוכנה ולהתחבר אליה מיד בעזרת הדבאגר לפני שהיא מספיקה להתחבר לעצמה, לפני שבוצעה אפילו פקודה אחת מהקוד שלה.
16. העבודה בפועל: בחלון הדיבאגר אין כלום כל עוד התוכנה לא הגיעה לנקודה האדומה, היא רצה רגיל. מקלידים בה משהו שרירותי, מאשרים, והתוכנית עוצרת בנקודה האדומה, ה breakpoint, ורואים בדיוק איפה היא עצרה ומי קרא לקוד הזה, שכן בתצוגת הקריאות נראה שהפעולה של אימות הקוד קראה למחלקה הזאת. בעזרת הערכת ביטויים מציבים את שם המשתנה המקומי ורואים את הערך שיושב בו ברגע זה.
17. צעדים בודדים: התוכנית קפואה באמצע, הכול מוקפא בזיכרון ואפשר להסתכל מה יש. פקודת step into מבצעת פקודה אחת ועוברת אל הבאה, והערך במשתנה משתנה. כשמגיעים אל קריאה לפונקציה אפשר לבחור בין step into שנכנס אל תוך קוד הפונקציה וממשיך שם פקודה פקודה, לבין step over שמבצע את הפונקציה מהר וחוזר עם התוצאות, ו step out שמריץ מהר עד סוף הפונקציה הנוכחית וחוזר אל התוכנה הראשית. בתוך הפונקציה ראינו קוד שפותח את ההצפנה של המפתח הסודי, ואחרי סיומה התוצאה נכנסת אל המשתנה המקומי, וזהו בדיוק הקוד הסודי שרצינו לגלות. שימו לב שהריצה דילגה על בלוק ה catch, כי הפעולה הצליחה.
18. פענוח הקוד הסודי: הערך שהתקבל הוא אוסף של קודי ASCII, ואפשר לראותו כטקסט בעזרת תצוגת הטקסט בלחיצה ימנית. פותחים אתר אינטרנט שממיר קודי ASCII לאותיות רגילות, מדביקים את הערכים, וכשההמרה נכשלת בגלל הפסיקים מנקים אותם בעורך טקסט מתקדם בעזרת חיפוש והחלפה שמחליף כל פסיק ברווח ריק, מעתיקים שוב, והטקסט האמיתי מתגלה. אי אפשר להקליד אותו בטלפון כל עוד התוכנה תקועה באמצע, ולכן מורים לה לרוץ מהר עד נקודת העצירה הבאה, מעתיקים את המחרוזת שהתקבלה מהמכשיר אל המחשב הפיזי ואז חזרה אל הטלפון, מקלידים אותה כתשובה, מאשרים, עוצרים שוב בנקודה האדומה, עושים step over שמדלג על הפונקציה, רואים שוב את אותו קוד סודי שחזר, ונותנים לה לרוץ, והאפליקציה מודיעה שזו התשובה הנכונה. הצלחנו לגלות את הסוד מתוך הזיכרון שלה.
בשיעור זה למדנו לדבאג אפליקציה ללא קוד מקור, להציב נקודות עצירה בקוד smali בעזרת ה SDK והתוסף המתאים, לחבר את הטלפון מרחוק ולהריץ את האפליקציה במצב דיבאג, לעבור בעזרת צעדים בודדים בתוך הקוד, לצפות בערכי המשתנים בזיכרון בזמן העצירה, ולפענח את הקוד הסודי שנחשף כקודי ASCII. הרצאה זו חשובה מאוד, ואין לפחד מקוד ה smali, סתם מסתכלים עליו ועל הקוד עד שמבינים איפה צריך לעצור. בשיעור הבא נעסוק בנושא עקיפה של זיהוי ROOT בקבצי smali.
SR12594HE

פרקי ההרצאה: דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור

  1. 00:00

    העיון בזיכרון בזמן ריצה

  2. 00:56

    הכרת Android Studio

  3. 02:06

    קביעת כתובת הטלפון

  4. 03:02

    ייבוא ה-APK לדיבאג

  5. 03:56

    הכרת שפת ה-Smali

  6. 05:27

    איתור השורה החשובה

  7. 07:31

    הבנת קוד ה-Try ב-Smali

  8. 09:37

    קוד עילית מול שפת מכונה

תמלול ההרצאה: דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור

הטקסט המלא של הדקות הראשונות בהרצאה «דיבאג של קובץ APK בתוך Android Studio ללא קוד מקור» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:25

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

  3. 00:49

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

  4. 01:07

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

  5. 01:24

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

  6. 01:35

    מה שאסור לעשות זה על 9 ו-10. זאת אומרת, ה-API פה, פה כשאני לוחץ פלוס ומוסיף מכשירים, אז שימו לב, אסור לי שיהיה כתוב פה אנדרואיד 9 או אנדרואיד 10.

  7. 01:51

    אתם רואים? אסור שיהיה כתוב או 10 או 9. למה? כי יש שם איזשהו באג שמפריע לי. אתם יכולים לעשות או על 11 או על 12 או על 8 או על 7 או על 5 אבל לא על 9 ו-10.

  8. 02:03

    בקיצור יש לי פה מכשיר Galaxy S8 שהפעלתי אותו ואנחנו נכנסים פה בגלאקסי S8 ורואים מה כתובת ה-IP שלו.

  9. 02:12

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

  10. 02:35

    עוד פעם מלמעלה לוחצים על Wi-Fi ולוחצים על רשת ספציפית ומקבלים עליה את הפרטים כולל ה-IP טוב עד שעשינו את זה מה שקרה שנפתח לנו אנדרואיד סטודיו בפעם הראשונה אני יכול ליצור פרויקט חדש תוכנה חדשה לפתוח תוכנה קיימת אבל אני רוצה more actions ודיבאג APK לעבור שורה שורה ב-APK שזה כן אתם יודעים אנדרואיד אפליקיישן

  11. 03:02

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

  12. 03:23

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

  13. 03:36

    אנחנו רואים שפת מכונה כביכול. בואו נראה סתם דוגמה, Main Activity, אנחנו רואים פה לא קוד ב-Java, אלא קוד בשפת מכונה, שתרגמו את ה-Java לשפת מכונה.

  14. 03:48

    עכשיו, זה לא כזה נוח, בגלל שזה לא כזה נוח, אבל זה הדבר היחיד שהוא 100% עובד, בגלל זה Visual Studio עובדת איתה.

  15. 03:56

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

  16. 04:14

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

  17. 04:22

    זה למעשה הקוד האמיתי שכתוב בתוך הקבצים, בתוך ה-APK כביכול, אני אסביר לכם יותר לעומק בהרצאה נפרדת איך זה עובד מאחורי הקלעים זה ה-APK האמיתי, כביכול זה שפת המכונה האמיתית זה הבייטקוד של ג'אווה בייצוג יפה יותר וזה הניסיון שלו לתרגם את זה בחזרה לג'אווה הניסיון הזה טוב אבל לא ב-100% שימו לב אם אני אעשה פה Tools ו-Log Viewer

  18. 04:50

    אני אראה פה למעלה נניח שכל מיני דברים r-class not found כל מיני דברים cannot find r-class יש כל מיני הודעות שגיאה שקורות.

  19. 05:01

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

  20. 05:14

    אז זה נותן לנו מידע כללי שנדע מה אנחנו מחפשים. ומה אנחנו מחפשים? אנחנו מחפשים את השורה הזאת של Success, This is the correct secret, זוכרים את זה?

  21. 05:25

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

  22. 05:33

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

  23. 05:52

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

  24. 06:04

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

  25. 06:14

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

  26. 06:35

    אוקיי, אז יש לנו פה מתודה a ויש לנו פה מתודה b, אתם רואים? מתודה a ומתודה b, זה שני הדברים שיושבים לנו בתוך הקובץ הזה, והקובץ זה קלאס.

  27. 06:47

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

  28. 06:56

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

  29. 07:07

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

  30. 07:21

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

  31. 07:42

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

  32. 07:56

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

  33. 08:06

    אז אני חושד שזה פה ואחרי שקוראים לפונקציה הזאת היא מחזירה ערך ואנחנו move result object ל-v0 במשתנה e0 תשב התוצאה. אני רוצה להציץ ל-v0 הזה ושימו לב אחרי הטראי הזה אתם רואים איך שהטראי מסתיים הפקודה שלי מצטיימת בתוך הטראי מתחילה קאץ׳ הבלוק של קאץ׳ אז זה יושב בדיוק בתוך הטראי לנסות משהו ואם יש פה פשלה אז הוא נופל ל-catch

  34. 08:32

    ונותן לו הודעת שגיאה, error message. אבל try catch אומר תנסה, אם אתה מצליח סבבה, אם אתה לא מצליח תבצע את הקוד בתוך ה-catch.

  35. 08:42

    הקוד הזה שבתוך ה-catch יתבצע אם הקוד של ה-try לא הצליח. מה זה לא הצליח? לדוגמה הוא לא הצליח לפתוח את ההצפנה, לא מצא קובץ, משהו נדפק לו באמצע עבודה, לא הצליח לשלוח משהו ברשת.

  36. 08:54

    try זה לנסות ומה לעשות אם יש שגיאה. אז גם פה אנחנו רואים פה try, אנחנו רואים פה שבתוך ה-try הזה יש לנו את הקריאה לפונקציה שלי, ככה אני זיהיתי אותה לפי הקריאה, ו-move result ל-v0.

  37. 09:09

    ואחרי הפקודה הזאת, שימו לב, try ends מסתיים ה-try שלי ומתחיל ה-catch. אז זה הבלוק שחיפשתי, ובתוך הבלוק הזה מצאתי את הפקודה. עכשיו, מה אני רוצה להראות לכם?

  38. 09:22

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

  39. 09:38

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

  40. 09:55

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

  41. 10:10

    בגלל זה רוורס אינג'ינירינג הוא לא ב-100%. אוקיי, אז בקיצור אנחנו צריכים לתפוס את הערך הזה פה, V0 אחרי הפקודה הזאת.

  42. 10:20

    איך אנחנו נעשה את זה? בואו נמצא את הקובץ הזה בהרדיסק. אז זה נמצא ב-SG Vantage Point Uncrackable 1.a. אנחנו גם פה הולכים ל-sg-winpoint-uncrackable1.a דרך אגב, למה זה a,b,c?

  43. 10:34

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

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

ההרצאה הקודמת: חתימה דיגיטלית על קובץ APK עם jarSigner

ההרצאה הבאה: עקיפה של זיהוי ROOT בקבצי smali

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

  • דיבאג ב-Visual Studio
  • התקנה של Android Studio
  • דיבאג בצד לקוח בתוך Visual Studio Code
  • ריאקט דיבאג עם VS Code - Visual Studio Code

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

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