
הטקסט המלא של הדקות הראשונות בהרצאה «פריצה של UnCrackable-Level2 עם GUI FRIDA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזו אנחנו סוף סוף נציץ פנימה בעזרת פרידה לתוך הפונקציית סטרינג קומפר ונראה איזה סטרינג היא מעבירה שימו לב הסטרינג הראשון שלה זאת אומרת הארגומנט הראשון הפרמטר הראשון נקרא s1 ככה הדה קומפיילר של גידרה קרא לו והוא מגיע מתוך משתנה a0
מה זה a0 זה מה שג'אווה מעבירה לבדיקה זה האינפוט של יוזר, אז אנחנו מקבלים ארגומנט ראשון שזה היוזר אינפוט, בואו נקרא לזה כאן, אפשר לקרוא לזה כאן rename variable user input, זה סתם בשבילי שאני, יהיה לי סדר בראש, אז user input שווה ל-get array מתוך משתנה
0, למעשה הוא לוקח את ה-0 ומעביר אותו ל-user input וזה מה שמגיע ל-string compare, זה היוזר אינפוט. אחרי זה יש לנו כאן את הדבר הסודי הזה ואחרי זה את האורך הסטרינג לבדיקה אנחנו רוצים להציץ לארגומנט השני לפרמטר השני של פונקציה כדי לדעת מה קורה הם ממוספרים 012 איך נעשה את זה ככה קודם כל בטלפון
אנחנו נפעיל את הפרידה סרבר כי שימו לב זאת תוכנה מקורית אתם רואים אני עושה אוקיי זה ישר יוצאת אנחנו מפעילים פרידה סרבר ריצ'ק פרידה סטטוס ו-Fore Start Existing Frida Server תכריח להפעיל, תפעיל בכוח, אל תוריד גרסה חדשה, תפעיל את מה שקיים, והוא מפעיל לי את ה-Frida, ואני רואה פה Running.
הממשק הגרפי של האפליקציה הזאת נוראי. בקיצור, עובדת לי ה-Frida בתוך הטלפון, נהדר. עכשיו אני יכול להתחבר אליה. איך אנחנו מתחברים?
אנחנו ב-CMD, קודם כל ככה. קודם כל אנחנו עושים ADB Connect ו-ADB Devices, בודקים שטלפון קיים ומחובר, כותבים פקודת RMS, שזה מפעיל לי את הממשק גרפי, את התוכנה, את אתר אינטרנט בפורט 5000, ואני מתחבר אליו.
אני למעשה התחברתי לאתר אינטרנט שישלח פקודות לשם, ואנחנו רוצים להיכנס לאנדרואיד, להפעיל את האפליקציה, לעשות ספון.
דרך אגב, ה-touch לא יצליח לי, כי האפליקציה חסומה ל-debugging. אני אעבוד כדבאגר, ספורן עוקף את הבעיה של החסימות, למה? כי ספורן נכנס דרך זייגוטה, למעשה פרידה יושבת בתוך זייגוטה ודרך התהליך הראשי שמשוכפל לכל התוכנות החדשות שמופעלות, הוא מכניס לשם את הסוכן, למעשה הסוכן יושב בזייגוטה הראשי ומשוכפל לכל הילדים,
שכל תוכנה שמופעלת זה הילד של זייגוטה. ואת טאץ' אני עושה כמו דבאגר, אבל הדבאגר פה חסום, דיברנו על זה לפני כן אז אני עושה ספון וככה אני עוקף את ההגבלה ותוך כדי ההפעלה שנייה לפני הפעלה אני רוצה לשנות את פונקציית האקזיט כבר בתוך הזיכרון של הפרוצס אני מחליף את פונקציית האקזיט של מערכת ההפעלה שימו לב לסתם הודעת
הא הא הא אני לא יוצא מכאן בקיצור ככה אנחנו עושים מפעילים לבד את התהליך ועוקפים את האקזיט ברגע שעשינו את זה יש לנו פה root detected אבל אוקיי לא יוצא החוצה מה המטרה שלנו כשאנחנו פה בפנים?
אני מזכיר לכם להציץ פנימה לזיכרון של StringCompare. אז אנחנו הולכים ל-Freada Scripts, שימו לב, לואוד פרידה סקריפטס, ובלואוד פרידה סקריפטס למעלה מחפשים נייטיב.
למה נייטיב? כי כל הספריות העזר הן נייטיב. enum, native, lib. native libraries זה בעצם ה-DLLים של לינוקס.
enum, enum זה לאסוף מידע. אני רוצה הוק, הוק זה להיכנס פנימה. אוקיי, אז מה אנחנו רואים פה? אנחנו רואים פה איזה טמפלייט שהם נתנו לנו, ואנחנו נעבוד עם הטמפלייט הזה, רק שאני רוצה ישר לעשות לו קופי פייסט, טוב, עוד מעט נעשה קופי פייסט, לנוטפד.
כאן, בתוך משתנה native-lib, אני מכניס לאיזה ספרייה אני רוצה לעשות הוק, להיכנס פנימה. בתוך הספרייה יש הרבה פונקציות, אני רוצה את הפונקציה הזאת, StringCompare.
זה נכנס לתוך משתנה עזר, native-library ו-native-function. איך שהוא מזהה אותם, מופעל הקוד הזה. הקוד כאן יופעל עם הזיהוי של ההפעלה, ואחרי שהוא יופעל, השליטה תעבור לפונקציה המקורית.
מה אנחנו רוצים? מה אנחנו רוצים? אנחנו רוצים ככה, להדפיס על המסך ארגיומנט 0 וארגיומנט 1. נכון, להדפיס. אנחנו מגבילים בגודל ל-23, כי אנחנו יודעים שהגודל חייב להיות 23. אתם רואים פה?
יש פה אפילו if. הוא לא ייכנס בכלל ל-StringCompare בלי גודל 23. הגודל המושווה בפונקציה זה 23. יופי. ואני גם מוסיף if.
למה אני מוסיף if? כי אני כבר בדקתי את זה ויהיה לנו המון פלט, ואני לא רוצה המון פלט. אני מנסה לצמצם אותו, אז אני אומר, תקשיב, איך שאתה נכנס פנימה, אתה בודק האם הארגומנט השני, מי זה הארגומנט השני?
הארגומנט השני זה 0,