נצחון ודאי עם 2 הוראות ואחד עם 6 הוראות

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים אקסטרים נצחון ודאי עם 2 הוראות ואחד עם 6 הוראות

הדיון הזה מכיל 7 תגובות, ויש לו 8 משתתפים, והוא עודכן לאחרונה ע״י  ירון לפני 14 שנים, 9 חודשים.

מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ)
  • מאת
    תגובות
  • #77605

    old_smoker
    משתתף

    8086 איננו מכיל הוראות מוגנות –
    CLI – נקה דגל הפרעות
    JMP $-2 – קפוץ לעצמך. ($ = CURRENT OFFSET ).
    התוכנית הנ"ל דואגת שאף אחד לא יקבל זמן מעבד כבר על ההוראה הראשונה – ולעולם לא תגיע להוראה לא חוקית – אחרי 200,000 הרצות – יש לנו מנצח!!!!!

    דרך 2:
    לדחוף למחסנית את ההוראות EA (אופקוד של JMP ),
    את SS ואת SP – RELATIVE VALUE, ולבצע קפיצה. ע"פ החוקים איזור המחסנית הוא מוגן ממתקפה. כל עוד התוכנית לא מותקפת ב 6 הריצות הראשונות (שזה הסיכוי הנמוך ביותר האפשרי וזה מספר ההוראות הדרוש ע"מ לארגן את המחסנית עם ההוראות הדרושות)- היא לנצח תישאר קיימת.

    דרך 1 – על 8086 תוביל לניצחון וודאי ע"פ החוקים.
    דרך 2 – זהו הניצחון עם ההסתברות הכי גבוהה שתוביל לניצחון וודאי ע"פ החוקים.
    מסקנה: שכחו מלהתקיף – תברחו! :)

    #79899

    יותם
    משתתף

    כותרת: אתה יוכל להסביר את זה לאלו שלא מכירים asm כ"כ?
    מה זה CLI?, ואיך קפיצה עצמית מבטיחה הישארות במשחק ?
    הרי אתה קופץ חזרה, אבל התוכנה שאחראית על המשחק ממשיכה לקודים של שאר האנשים, פשוט בתור הבא היא תחזור אצלך על אותה פקודה …

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

    #79900

    old_DL
    משתתף

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

    לגבי הרעיון השני – במקרה הזה מדובר על "נקודה חלשה" ידועה במימוש הנוכחי. בגירסה הבאה של המנוע, איזור המחסנית האישי של כל מתחרה יוגדר כמותר ל-קריאה/כתיבה בלבד, ולא להרצה. או כמאמר הפתגם המפורסם: you can run, but you can´t hide.

    #79901

    זיו ברבר
    משתתף

    כותרת: ביטול שינוי של ה-CS הוא לא הוגן
    לפי החוקים אף אחד לא אוסר עלי להוסיף למשל 1 ל-CS.

    #79902

    שחר
    משתתף

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

    שחר

    #79905

    חיים
    משתתף

    כותרת: מותר ואסור
    לא ברור למה CLI אסור.
    הרי הקוד שלך לא רץ על ה-CPU של המחשב ישירות אלא על ידי unterpreter של מארגני התחרות.

    מצד שני, לא ברור, במקרה זה, מה שונה CLI מ- NOP.

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

    #79906

    יוני
    משתתף

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

    #79907

    ירון
    משתתף

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

מוצגות 8 תגובות – 1 עד 8 (מתוך 8 סה״כ)

יש להתחבר למערכת על מנת להגיב.