עזרה | הריגה

עמוד
מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • מאת
    תגובות
  • #76867
    Moripon
    משתתף

    שלום
    מה שלומכם?
    היום כשהייתי במכון ויצמן ראיתי פלייר עם פרטים על התחרות
    והחלטתי להכנס לראות מה זה
    קראתי על הכל, וזה נשמע מאוד מעניין
    אני גם יודע אסמבלר, אז הבנתי את הרוב
    הקודים לדוגמא וכו'
    הדבר היחיד שלא הבנתי, הוא איך הורגים
    זאת אומרת, איך אני מפריע לאחרים בקוד
    או מה שאני לא צריך לעשות
    אני אשמח אם מישהו יעזור לי
    תודה
    [:D]

    #78163
    GalDor
    משתתף

    מישהו מת אם הוא מנסה להריץ אופקוד לא חוקי.
    מכיוון שלכולם אפשרות לדרוך על כולם, אתה אמור
    לנסות לכתוב פקודה לא חוקית על הקוד של האויב.
    כמו בשורדים לדוגמא, אתה יכול לפזר פקודות לא חוקיות
    באקראי בזירה עד שתפגע במישהו. אתה יכול למצוא
    שיטות יותר ופחות יעילות לעשות את זה, וכו. בעיקרון,
    המנוע עובד בתורות – כל שורד מקבל אותה כמות תורות,
    ובכל תור המנוע מריץ את הפקודה הבאה. אם ניא מוחלפת במשהו כמו:
    0xCC
    אז הוא מת. אם תחפש בעמודים הראשונים של הפורום, תמצא מדריך מפורט על כל מיני שיטות בסיסיות.
    יש מקטע אחד שבו כל השורדים רצים, ולך יש גישה אליו. תנסה לכתוב עליהם ג'נק (אתה יכול אפילו לכתוב עליהם פקודות קפיצה לקוד שלך, וכך לקבל עוד כוח אש ומפציצים שיירו על אויביך…)
    מקווה שעזרתי.

    #78162
    Moripon
    משתתף

    אז ככה
    הבנתי כל מה שכתבת
    אבל אני לא מבין הכל
    ניסיתי למצוא מדריכים בעמודים הראשונים וקראתי את כל הנושאים ב4 עמודים הראשונים
    אבל לא מצאתי משהו שממש מדבר על זה…

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

    ועוד שאלה מה זה STOSW?
    ומה השימושים של זה?

    תודה רבה!

    #78161
    jgeralnik
    משתתף

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

    שומר דברים בתוך הסגמנט המשותף של השורדים שלך. לדוגמה הקוד הבא STOSW

    add ax, 002F
    stosw

    ישמור את הכתובת בזיכרון של הפקודה בשורה
    002F

    מכיוון שיש בעייה קטנה בסימולטור, כדי לקרוא את זה צריך לכתוב
    push es
    pop ds
     LODSWכי הפקודה
    ds עובד רק בסגמנט
     lodsw אחר כך כותבים
    axכתובת הפקודה נשמרת ב

    בהצלחה! ~~~ג'ואי

    #78160
    GalDor
    משתתף

    Here is the post I mentioned:
    http://codeguru.co.il/CS/forums/88/ShowPost.aspx
    STOSW doesn't neccesarily store stuff in your private segment, and there is no problem in the simulator! STOSW stores AX in the address pointed to by ES:DI and then adds (or substracts, depending on the flag DF) two to DI. ES simply points initially to your private segment. LODSW is basically the same, only with loading AX, rather than storing, and using DS:SI instead of ES:DI.
    I hope I helped.

    #78159
    jgeralnik
    משתתף

    Oh, didn't know that, thanks.

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