ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › הצעות לזומבים
- This topic has 12 תגובות, 11 משתתפים, and was last updated לפני 10 שנים, 8 חודשים by DL!.
-
מאתתגובות
-
30 בינואר 2006 בשעה 12:24 #77100ThothNabuמשתתף
הזומבי הבא הורג על בטוח כל מי שמשתמש ב
Call far
לצורך ירייה
לדוגמא
DIME
שכותב 4 ביית בפקודההסוד הוא שמי שמשתמש ב
call far
לצורך ירייה, מפזר בעצם כתובות של עצמו בכל הזירה…השורד הבא מחפש את הערך
CS=1000h
שמופיע בכל ירייה של מי שמשתמש בCall far
ואז מפציץ לפי הכתובת שכתובה בירייה.
;
mov bx,ax
add bx,1024SEARCH_LOOP:
add bx,17
cmp [bx],1000h
jne SEARCH_LOOP
mov bx,[bx-2]
mov b.[bx-2],0cchjmp SEARCH_LOOP
;
אפשר גם דרך אגב לשים שורדים מהתחרות הקודמת בתור זומבים
30 בינואר 2006 בשעה 13:38 #78549DL!משתתףאחלה רעיון לשורד.
31 בינואר 2006 בשעה 05:20 #78539Helius-Flameמשתתףעם כבר מדברים על זומבים, כמה זומבים יהיו (עם בכלל) ?
והאם לכל "בית" בתחרות יהיו את אותם זומבים ובאותה כמות?
27 בינואר 2008 בשעה 07:41 #78306hzhzמשתתףmov bx,[bx-2]
mov b.[bx-2],0cchמה שתי השורות האלו עושות?
מה עושה הנקודה הזאת בפקודה השניה?28 בפברואר 2008 בשעה 01:49 #78278CodeGuruמנהל בפורוםהשורה הראשונה מעבירה לתוך אוגר
BX
את מה שיש בכתובת
BX-2
והקידומת
b.
בפקודה השניה אומרת שמדובר ב
BYTE
12 באוקטובר 2008 בשעה 10:10 #78171GalDorמשתתףלמען האמת, ברוב המקרים הזומבי סתם ישב ולא יעשה כלום בקצב איטי להחריד – שורדים כמו נינג'ה עושים קפיצה לסגמנט אחר, ובכך במקום לכתוב את מה שאתה מחפש, הם יכתבו ערכים אחרים…
סורקים מתקדמים יותר מחפשים בתים ששונו, ואז מחשבים את הכתובת הלינארית של המפציץ ומתקיפים בחזרה…
מקווה שעזרתי.2 במרץ 2014 בשעה 08:49 #77885ddtמשתתףשאלה ראשונה
מה זה CALL FAR לצורך יריהשאלה שניה
אילו עוד סוגי CALL FAR יש
מתי נשתמש ב CALL FAR לא לצורך יריהשאלה שלישית
למה CS יהיה
CS=1000h
בכל פעם שמשתמשים ב CALL FARשאלה רביעית
איך מזהים שורדים אחרים שמשתשים ב CALL FAR
גם כשהם רצים במשחק וגם כשמנסים לנתח את הקידוד שלהם
את ה DIS ASSEMBLY8 במרץ 2014 בשעה 13:42 #77854noyaloמשתתףאז call farהצעה שלי – אם אנו חושדים שמישו אחר משתמש ב
כדאי לשים את הקוד הזה בשורד שלנו, ואז אחרי שנשתלט על זומבי – שהוא יבצע את העבודה השחורה של ריסוק כל מי שמשתמש ב
call farכי זו רק השערה אם מישו אחר ישתמש בזה או לא…
8 במרץ 2014 בשעה 14:07 #77851Yoavמשתתףבגלל שהכיוון של הטקסט דפוק, כשאני ארשום קול פאר תדע שאני מתכוון לcall far
מה זה קול פאר לצורך ירייה?
להשתמש בקול פאר מתוך רצון להרוג מישהו בעזרת ארבעת הבתים שנכתביםאילו עוד סוגי קול פאר יש? מתי נשתמש בקול פאר שלא לצורך ירייה?
קול פאר זה פקודה אחת, אין לה כמה סוגים. לעומת זאת, אפשר להשתמש במה למטרות שונות: אפשר להשתמש בה כדי להפציץ (כמו שמתואר למעלה) ואפשר להשתמש בה כדי לעבור סגמנט – לשנות את csלמה סי אס שווה אלף בכל פעם שמשתמשים בקול פאר?
כשמשתמשים בקול פאר הסי אס שלך והאי פי שלך נכתבים למחסנית. כשהשורד נטען לזירה בתחילת המשחק הסי אס שלו שווה אלף שזה סגמנט הזירה, ולכן אם לא תשנה אותו בצורה מודעת הוא יישאר אלף.איך מזהים שורדים שמשתמשים בקול פאר?
מחפשים או המילה קול פאר בדיסאסמבלי שלהם, או בצורה יותר פשוטה מסתכלים אם הם כותבים ארבעה בתים בסיבוב בודד – רק קול פאר מסוגל לעשות את זה9 במרץ 2014 בשעה 17:48 #77839Sonמשתתףוהתשובה האחת על כל השאלות האלה יחד – הצוות שלימדתי לקח פרסים שנתיים ברצף בזכות דבר אחד בלבד: הם ישבו לפני התחרות וקראו את כל השורדים של שנים שעברו וכתבו שורדים משלהם שעובדים באותן דרכים כדי לוודא שהם באמת מבינים.
9 במרץ 2014 בשעה 22:33 #77837noyaloמשתתףבמידה כזו או אחרת, זה אומר כתיבת את אותו השורד, לפחות רעיונית, כמו שנים שעברו, אבל בגלל שמבינים את מה שהשורדים עשו – פשוט כותבים אחד חדש…
עם שינויים של הזומבים של אותה תחרות ספציפית..
כן?
11 במרץ 2014 בשעה 08:52 #77828noyaloמשתתףהבעיה בתכנית שכתבת, היא שזה מסתמך על זה שה
CS = 1000
CS למרות שאפשר עקרונית לשנות את ה
למספר הגדול מ1000,ועדיין ירוץ בסדר לפי איך שהמיקום האבסולוטי עובד….
:
המקום שממנו המשחק מריץ את האופקוד הבאה של השורד מחושב כך:
IP + (CS * 0x10) = Absolute place in memory
כך שאם לדוגמא:
IP = 0x1234
CS = 0x1000
0x11234 אז המיקום האבסולוטי הוא
0x10000-0x1ffff מכאן כמובן נובע כי הזירה היא בתחום
וכל מי שיוצא מתחום זה נהרג על ידי המשחק.
השוויון הבא חשוב:
IP = 0x1234
CS = 0x1000
IP + (CS * 0x10) = 0x11234
ואם נגיד נעשה ש:
IP = 0x1224
CS = 0x1001
IP + (CS * 0x10) = 0x11234
שזה אותו מיקום אבסולוטי.
מה שאומר שניתן לייצג כתובת אבסולוטית על הזירה בהמון דרכים כמו בדוגמא למעלה.אז מה שאני רוצה להגיד – הקוד שפורסם פה שהוא נגד
call far
יעבוד רק אם
CS=1000.ומה שצריך לעשות זה במקום להשוות כל מיקום בזיכרון, בטווח CS ההגיוני שאולי אפשר שה
יהיה שווה אליו…אולי לבדוק אם הוא בזיכרון בין 950 ל1050 או משו כזה…
למרות שזה לא מחייב שיצליח, כי אפשר יהיה לעבוד על זה בכך שיכניסו מספר אחר, אבל זה לא ישפיע לרעה על הקוד, ורק יוכל להצליח נגד מי שיחשוב מלכתחילה להחליף את ה
CS
למספר אחר….17 במרץ 2014 בשעה 09:48 #77804Daveמשתתףלפני הכל מה זה בכלל קול פאר
http://courses.engr.illinois.edu/ece390/archive/spr2002/books/labmanual/inst-ref-call.html
מה זה קול פאר לצורך ירייה?
בתחרויות הראשונות אנשים גילו שאפשר להחליף את הסגמנט של המחסנית בסגמנט של הזירה. כלומר לשים בסגמנט המחסנית את הערך אלף.
מה שזה יוצר זה שאתה יכול להפציץ את הזירה באמצעות שימוש במחסנית. פקודות כמו פוש עושות שימוש במחסנית וכך אתה כותב שני בתים אל הזירה
קול פאר לצורך ירייה מנצל את העובדה שהמחסנית שלך על המסך בשביל לכתוב ארבעה בתים בתור. זו התקפה חזקה במיוחד כיוון שהיא כותבת הרבה יותר בתים ממה שתוכל לכתוב ידנית.
החסרון של קול פאר לצורך ירייה הוא שאתה תמיד תכניס אל המחסנית את הכתובת שלך, כך שמתחרים חכמים שמחפשים את זה יוכלו להבין מאיפה אתה מריץ ולהרוג אותך.ניתן להשתמש בקול פאר שלא לצורך ירייה אלא לצורך החלפת סגמנט הריצה *סיאס
למה שתרצה לעשות את זה?
בעיקר בשביל הטעייה והגנה. כפי שכבר אמרו אתה יכול באמצעות שינוי הסיאס* שלך לרוץ ממקום לא צפוי בזירה. ואז אם מישהו מחפש אותך בכתובת ספציפית הוא לא ימצא אותך שם.
כמובן שצריך להיזהר לא לחרוג מגבולות הזירה.סיאס = CS*
על כל שאר השאלות ניתנו תשובות מספקות ביותר.
נקודה חשובה נוספת לגבי קול פאר היא איך לא למות כשאתה עושה אותו. כן זה נשמע מאוד מובן מאליו אבל זו נקודה חשובה.
תסתכל איך שורדים שעושים קול פאר דורסים את עצמם, ומנצלים את כתובת ההרצה שלהם בשביל לדרוס את עצמם עם פקודות מועילות. -
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.