אשמח להסבר על מה זה בדיוק אומר השתלטות על זומבי

עמוד

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

מוצגות 15 תגובות – 1 עד 15 (מתוך 23 סה״כ)
  • מאת
    תגובות
  • #76735
    noyalo
    משתתף

    נראלי שאני מבין מזה אומר להשתלט על זומבי, אך לא סגור על איך בדיוק זה עובד, ו/או להשתמש בזה לטובתי.

    מה שחשבתי:

    דבר ראשון לכתוב בקוד שלי, חלק בקוד, שאותו אני רוצה שהזומבי יריץ בשבילי (בין אם זה משו שישמור עלי, או יתקיף אחרים).

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

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

    "?האם זה בעצם העניין של "השתלטות על זומבי

    #77852
    Yoav
    משתתף

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

    #77849
    noyalo
    משתתף

    סבבה תודה.

    #77820
    Dave
    משתתף

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

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

    add ax,Zombie ;the place of the code to be run by the zombie
    mov [0BEEFh],ax ; put the address on the screen
    mov ax,02688h ;this is the zombie command to replace
    mov dx,0C4DDh ;it is "mov [0C4DDh],ah"
    mov cx,0BEEFh ;the command the zombie will do
    mov bx,026FFh ; it is :"jmp[0BEEFh]
    push ds;replace the segmants because it replaces in es
    pop es
    int 87h ;switch commands and gain control over zombie

    #81529
    ddt
    משתתף

    אני מנסה לעשות שהזומבים של התחרות האחרונה יקפצו אל קוד בזומבי שלי
    אשמח לקבל כמה תשובות לגבי הדוגמה בסוף השרשור כאן כי זה בדיוק מה שאני מנסה לעשות
    מה זאת הכתובת של  [0BEEFh] – לא ראיתי שיש משהו כזה בזומבים של השנה
    למה העברנו את כתובת הטעינה שלנו AX? לא היה עדיף לקפוץ לקוד שלנו אחרי כל האתחול?
    מה זה ה 02688h? כתוב בהערה שזה הפקודה של הזומבי שאנחנו רוצים להחליף אבל זה לא מתאים למה שהמשתמש עידן אמר בפורום
    מה זה [0C4DDh]? זה קוד של מי? מה רוצים לעשות עם זה?
    מה זה 026FFh?
    אני מחפש להחליף את הקוד הפגיע בהפצצה חכמה שפשוט תכתוב לי לתא שם JMP לכתובת אצלי בקוד אז אני מניח שזה פירוש של האופקודים של JMP אבל JMP זה EA או EB לפי מה שראיתי (חלק מהמקומות שמצאתי אומרים אופקוד אחד ואחרים אומרים אופקוד אחר
    יש מקום שנותן לי במדויק אופקוד וגודל לפי פקודה שנותנים לו או קוד שנותנים לו? אפשר לכתוב תוכנית ולעשות DISASSEMBLY אבל זה פחות נוח כל רגע לקמפל כל פקודה)
    איך היינו מחליפים את הכתובות האלו עם הכתובות שעידן נתן כדי שדוגמה פשוטה של קפיצה מזומבי לתוכנית שלי תעבוד?
    דניאל

    #81532
    ddt
    משתתף

    נגיד היה לי:

    label1:

    label2:

    label3:

    label4:

    והייתי רוצה שהזומבי יקפוץ לי ל label3 איך הייתי עושה את זה?

    כרגע אני מצליח לרשום לו JMP לכתובת אבל זאת הכתובת הלא נכונה בחישוב שלי

    נראה לי שאני צריך לכתוב אותה איכשהו בכתובת האבסולוטית שהזכרתם

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

     

    #81533
    Idan Dor
    משתתף

    <p style="text-align: right;">אני לא יודע באיזה אסמבלר אתה משתמש, אבל אני מציע שתנסה:</p>
    <p style="text-align: right;">label3 – label1</p>
    <p style="text-align: right;">לגבי השאלה השנייה שלך, אני יכול לומר לך את התשובה אבל נראה לי יהיה יותר נחמד אם תחפש שורד שמשתלט על זומבי ותנסה להבין איזה פקודה הוא מפציץ במקום JMP</p>
    <p style="text-align: right;"></p>

    #81555
    ddt
    משתתף

    עשיתי כמו שאמרת עם החיסור שלהם.
    אבל ייתכן שיש לי מושג מה אולי הבעיה – הסתכלתי בדיבאגר וראיתי שהוא מנסה לקפוץ לכתובת הנכונה אבל כותב לפני כן שזה jmp word near

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

    כרגע זה קופץ לי לכתובת שיש אחריה הרבה INT3 ואז הזומבי מת

     

     

    #81556
    ddt
    משתתף

    ואת הכתובת שאליה אני קופץ אני מכניס לאוגר CX בשורד שלי לפני ההפצצה

    #81557
    ddt
    משתתף

    אני משתמש ב NASM שמצאתי
    יש אחרים שאיתם אני מכין שורדים?

    #81558
    Idan Dor
    משתתף

    <p style="text-align: right;">JMP Near – מיקום יחסי</p>
    <p style="text-align: right;">דוגמא:</p>
    <p style="text-align: right;">JMP Near 0x10</p>
    <p style="text-align: right;">זה אותו דבר בעצם כמו:</p>
    <p style="text-align: right;">add ip, 0x10</p>
    <p style="text-align: right;">(  ההוספה היא לא פקודה חוקית אבל זה בעצם מה שהקפיצה עושה ב"מילים אחרות")</p>
    <p style="text-align: right;">JMP FAR</p>
    <p style="text-align: right;">היא לא הפקודה שאתה צריך וקשה יותר להשתמש בה בשביל להשתלט על זומבים.</p>
    <p style="text-align: right;">המילים:</p>
    <p style="text-align: right;">label2 – label1</p>
    <p style="text-align: right;">פשוט נותנים לך את המרחק בניהם. לדוגמא:</p>
    <p style="text-align: right;">mov cx, label2 – label1</p>
    <p style="text-align: right;">יכניס את המרחק בניהם לאוגר.</p>
    <p style="text-align: right;">אני לא ממליץ לך להשתלט בעזרת פקודת JMP</p>
    <p style="text-align: right;">כפי שהצאתי לפני תחפש שורד בעבר שהשתלט על זומבי ותנסה להבין בעזרת איזה פקודה הוא עשה את זה.</p>
    <p style="text-align: right;">לגבי Nasm</p>
    <p style="text-align: right;">יש הרבה תוכנות שאפשר להשתמש בהם אבל הם כולם כמעט בדיוק אותו הדבר.</p>

    #81562
    ddt
    משתתף

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

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

    #81563
    ddt
    משתתף

    בשורד הספציפי התכוונתי לדרך השניה שהיא לא ה JMP שאמרת שאני צריך למצוא

    #81661
    Idan Dor
    משתתף

    <p style="text-align: right;">המנוע (וגם המעבד8086) לא תומך בפקודה:</p>
    <p style="text-align: right;">JMP (to location) 0x1234</p>
    <p style="text-align: right;">מבחינתו כל JMP הוא רלטיווי</p>
    <p style="text-align: right;">אז יש שתי אופציות לקפוץ למיקום הראשונה בשימוש אוגר לדוגמא:</p>
    <p style="text-align: right;">mov ax, 0x1234</p>
    <p style="text-align: right;">jmp ax</p>
    <p style="text-align: right;">השניה, שימוש בזיכרון על הזירה לדוגמא:</p>
    <p style="text-align: right;">mov word [0x1234], 0x1234</p>
    <p style="text-align: right;">jmp [0x1234]</p>
    <p style="text-align: right;"></p>
    <p style="text-align: right;">אז אם אתה מתכנן להשתמש ב JMP כדי להשתלט על זומבי אתה חייב להשתמש באחת משתי השיטות האלו.</p>

    #81677
    ddt
    משתתף

    אם זאת הייתה תוכנית בפני עצמה לא הייתה לי בעיה אבל אני הרי מנסה לשים פקודות  את הפקודות האלו בתוך הזומבי ואני מבין איך אני יכול לשלוט איך אני משתמש באחת משתי השיטות שהזכרת בקוד שאני מעביר לזומבי
    mov cx, (label3-label1)
    mov bx, 026ffh
    אני צריך להחליף את 026ffh בפקודה אחרת?
    נורא מבלבל. נראה לי שרק שאני אראה דוגמה אחת שעובדת עם ה JMP אני אבין איך זה עובד ואדע להשתמש בזה אחכ

מוצגות 15 תגובות – 1 עד 15 (מתוך 23 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.