
הטקסט המלא של הדקות הראשונות בהרצאה «התקנת Ghidra ותוסף JNI» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הזו אני רוצה להתקין גידרה שזה המתחרה הגדול של עאידה והוא נועד לעשות רוורס אינג'ינירינג להנדס לאחור קבצים להיות דבאגר אבל אנחנו לא הולכים להשתמש בו כדבאגר כי אנחנו משתמשים בפרידה אבל להנדס בעזרתו לאחור את הקבצים ולהבין מה קורה בצורה סטטית בקובץ אנחנו נעשה אז גידרה הוא שייך ל-NSA, Nation Security
Agency, זה כמו המוסד או השב"כ האמריקאי הם פיתחו את הגידרה ורק שחררו אותה לפני כמה שנים בשבילנו שימו לב הם עד עכשיו מתחזקים אותה זאת אומרת המוסד או השב"כ אני לא יודע בדיוק האמריקאי הוא זה שמתחזק את הקוד שלה וזה מדהים שהם נתנו לנו את הכלי שלהם בחינם באופן סורס בגיטאפ ואנחנו יכולים להתקין אותו ולהשתמש בו חופשי כדי להתקין אותו צריך
jdk11 בוא נעשה קונטרול קליק נוריד פה jdk 11 שימו לב יש גם 16-17 הם רוצים 11 נתקין 11 זה ללינוקס זה לווינדוס אבל x86 וזה לווינדוס 64 ביט יופי זה פה ואנחנו צריכים jdk שימו לב לא gre אלא את jdk jre זה java runtime environment זה סביבת הרצה מאוד קטנה זה רק מה שצריך בשביל להריץ את הקובץ
JDK זה כולל את ההרצה של הקובץ וגם כלי פיתוח. ה-D הזה זה Java Development Kit, ערכה למתכנת של Java.
ה-D הזה זה Java Development Kit, ערכת מתכנת, וזה Java Runtime Environment, רק להריץ את הקוד של Java. אם הייתי רוצה רק להריץ את הקוד של Java, הייתי משתמש בזה.
אם אני רוצה כלים נוספים, כלי עזר נוספים שיש להם מפתח, זה זה. JDK כולל הכל. יופי, אז לקחתי את ה-JDK בקובץ MSI, שימו לב, ההתקנה אוטומטית.
MSI, יש לי פה MSI ואני מתקין אותו. Next, Next, Next, לא משנה כלום. עושה על הכל Next, Next, Next. התקנתי את ה-JDK, שירוץ פה. זה מה שהם ביקשו, Install JDK, אני מזכיר לכם, אנחנו בגידרה.
גידרה מבקשת להתקין JDK, עשינו. עכשיו היא מבקשת להוריד את ה-Release של גידרה, אפשר מפה ואפשר גם מכאן. אתם רואים גם פה יש בצד ריליסים בוא נוריד מכאן אני לוחץ כאן על הריליס האחרון ולוקח את קובץ זיפ יופי הנה הוא מוריד לי אותו בינתיים סיימנו להתקין את ה-JDK אפשר לסגור אותו אז עוד פעם נכנסנו לאתר של גיטאפ של גידרה
התקנו את ה-JDK x64 לווינדוס הורדנו את הריליס עכשיו אנחנו צריכים לעשות לו unzip אקסטרקט אנזיפ ולהריץ קובץ בת לווינדוס זה מה שצריך לעשות אנזיפ ולהריץ את הקובץ זה הכל נורא פשוט בוא נחכה שהוא ירד הוא סיים לרדת איזה יופי נעשה שואו אין פולדר ויש לנו תגיד רקאן נעשה רייט קליק אקסטרקט אול שיפתח את הכל לתיקייה הזאת אני עושה הכל ברירת מחדל
ועושה לאנזיפ עכשיו סיימנו לעשות אנזיפ עכשיו אנחנו נכנסים לתיקייה שלו לוקחים את הקובץ גידרה, אני שם לו שורטקאט לשולחן העבודה שיהיה לי קל להריץ אותו בעתיד, דסקטופ ומריץ גידרה run.
איזה יופי, יש לנו פה גידרה עובדת, נהדר. עכשיו אנחנו צריכים להחליט מה אנחנו עושים עם הגידרה הזאת. דבר ראשון, צריך ליצור פרויקט. קובץ של פרויקט, בואו נעשה New Project, Non-Shared Project, אנחנו לא רוצים להסתבך עם שיתופים.
איפה הקובץ של הפרויקט יהיה? שיהיה בתיקייה הזאת זה לא משנה ונקרא לו Uncrackable 2. יופי, עכשיו תראו פה בתוך תיקיית אלכס הזאת, see users, אלכס, תראו מה יקרה, כרגע אין פה אף קובץ, ברגע שאני אלחץ finish, אתם רואים פה, הוא יוצר לי פה קובץ Uncrackable,
אתם רואים? את הקבצים האלו הוא יוצר. למעשה זה הקבצים של הפרויקט, אוקיי? יכלנו לשים את זה במקום יותר טוב. אז יש לנו את הפרויקט, מה אנחנו יכולים לעשות בפרויקט הזה?
אנחנו יכולים להפעיל קוד בראוזר, לעבור על הקוד מקור, להפעיל דבאגר, להתחבר לתוכנה שתרוץ בתוך טלפון, זאת אומרת אם אני מפעיל פה תוכנה הדבאגר יודע להתחבר אליה ולהראות לי את הזיכרון שלה, ויש פה עוד version tracking שעל זה לא נדבר עכשיו.
אני רוצה קוד בראוזר לעשות ואני נכנס לתוך ניתוח הקוד. השאלה זה איזה קובץ אני רוצה לנתח בתוך הטלפון, איזה קובץ בדיוק מעניין אותי.
אני מניח שאני לא יודע מה השם של הספרייה. אז מה אני עושה? אני עושה CMD, אני עושה ADB Shell, נכנס לתוך הטלפון, והדבר היחיד שאני יודע זה שם של האפליקציה, Uncrackable 2. אז אני אעשה פה קופי, פייסט, ואני רואה שיש לי שניים Uncrackable, מעניין אותי הראשון.
השני נועד למנוע דבאגינג. דיברנו על זה לפני כן, מעניין אותי הראשון, זה האמיתי עכשיו אני נכנס לתוך תיקיית פרוק שזה כמו טאסק מנג'ר לתוך התיקייה של התהליך הזה ויש פה הרבה קבצים שמייצגים בעצם מידע דיברנו על זה לפני כן זה קטע של לינוקס לייצג הכל בתור קבצים ואני עושה קאט לקובץ מפס שיש פה המון המון המון דברים
כל המיפויים של הזיכרון נמצאים פה זה לא באמת קובץ זה ייצוג כאילו זה קובץ זה מידע דינמי זה כמו טאסק מנג'ר ואני רוצה לחפש איך הוא קרא ל-SO, הנה כל מיני SO'ים שיש לנו.
בואו נעשה משהו שמסתיים ב-SO, עדיין יש הרבה. הנה אנחנו רואים כל מיני ספריות שהוא הטעין. אני עכשיו מחפש את הספרייה שלנו, היא נקראת פו, נכון משהו עם פו?
הנה, ליפ פו, נכון, הנה ככה היא נקראת ליפ פו, ואני רואה שזה x86, זה מה שבאתי להראות לכם. ככה אני יודע בדיוק איזה ספרייה אני צריך לפתוח, אם זה x86 או לא אוקיי אחרי זה אני בא לקובץ apk עושה לו לקובץ npk אני פותח אותו מחפש עם apk-tool-debug אני עושה apk-tool-debug אולי צריך לכשום פה apk-tool-debug לקובץ הזה זה נקרא get-so-file אני עושה לו debug
עשינו את זה בהרצאות קודמות לכן אני רק כותב כדי שיהיה לכם תיעוד מסודר אבל אין טעם לעשות את זה עוד פעם כי הוא יפתח את הקובץ לכאן ובפנים יש ליב ובליב יש לפי סוג המעבד בגלל זה עשיתי את הפקודה הזאת בשביל לראות איזה סוג מעבד הוא התאין אם אני לא בטוח נכנסתי כאילו לטאסק מנאג'ר שלו ובx86 אני רואה את הספרייה היחידה שיש לי פה בתיקיית
ליב אוקיי ואני לוקח את הספרייה הזאת כמו שעשינו בעאידה ואני זורק אותה פה לתוך קוד בראוזר בתוך הקוד בראוזר אני פותח אותה זה כמו פייל open והוא אומר לי איזה פורמט ועושה אוקיי, והוא מתחיל לנתח אותה.
אני עושה לו אוקיי. Would you like to analyze it now? האם אתה רוצה לנתח ולהבין את המשמעות של כל הפקודות שיש פה? הוא אומר לי איזה סקריפטים יינתחו אותו, איך אתה רוצה לנתח אותו.
יש פה כל מיני סקריפטים שעכשיו ירוצו ויינתחו. חסר לי פה מקום במסך עד שהוא פה יעבוד. אני קצת אקטין לו את ה-DPI שיהיה קטן יותר, כי פשוט שום דבר לא נכנס לי במסך.
הנה, כפתור אוקיי פה לא נכנס לי למסך למטה יופי ככה נראה הקוד שלנו זה הקוד בשפת מכונה זה הפירוש שלו בשפת c אנחנו מחפשים functions ובפונקשנס בוא נסגור רק את זה כי אין לי מקום במסך וגם את זה אני אסגור כי אין לי מקום במסך בפונקשנס אני מחפש את הזה שלי הנה פונקציית בר אותו דבר הוא ניתח את זה ואמרתי לו להתין
פונקציית בר והוא מראה לי אותה כאן על המסך נהדר עכשיו, אני רואה את הפונקציה הזאת גם בשפת מכונה, אתם רואים פה, וגם בשפת C++ הוא עושה לזה Decompile, הופך את זה משפת מכונה, מפקודות כאלו של שפת מכונה, איפה זה?
הנה, מכל מיני פושי ב-X ופקודות של שפת מכונה לשפת C++ שאני מנסה להבין אותה. אני רואה שאני לא מבין כלום פה. למה אני לא מבין כלום?
אני רואה פה שהוא לא זיהה שזה הפרמטר הראשון הוא gni הוא לא זיהה שזה gni שזה java native interface ובגלל זה הוא לא יודע לפרש וכותב לי פה כל מיני דברים שהם מסובכים לי מדי להבין אז במקום לשבור את הראש אני רוצה להפעיל לו סקריפט נוסף שיודע לעשות analyze לקוד של gni זאת אומרת להוסיף לו עוד כלי אנליזה נוסף שידע לזהות שזה gni ואיך אני יודע שזה הוא לא זיהה כי כי הפרמטר הראשון ב-GNI
לפי התקן של GNI חייב להיות המשתנה סביבה של GNI עצמו ולא אינטג'ר פשוט. בקיצור, ואני רואה פה גם שהוא לא מזלי לי שום פונקציה.
בקיצור, יש פה בווינדו סקריפטים, סקריפט מנאג'ר. הבעיה שבסקריפט מנאג'ר הזה אין GNI מוכן, יש פה מלא מלא סקריפטים ומלא מלא תיקיות, הוא יודע לעשות המון המון דברים, לדוגמה לאייפון לנתח כל מיני סקריפטים שעושים כל מיני דברים.
אבל אני רוצה פה gni ואני לא רואה פה את ה-gni אז אני רוצה להוסיף לכאן סקריפט מנג'ר אוקיי בוא נשמור את הכל אני שומר את הזה וסוגר אותו סגרתי אותו דרך אגב בתיקיה של אלכס אתם רואים פה נשארו הקבצים שלו ככה הפרויקט שלי נשמר אתם רואים זה הקבצים של הפרויקט יופי מה אני רוצה עכשיו אני רוצה עכשיו להוריד סקריפט של gni לגידרה אז אני הולך לגוגל
בגלל שזה הכל חינמי, גם הסקריפט הוא חינמי,