ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › עזרה | הריגה
- This topic has 5 תגובות, 3 משתתפים, and was last updated לפני 15 שנים, 10 חודשים by GalDor.
-
מאתתגובות
-
5 בינואר 2009 בשעה 11:02 #76867Moriponמשתתף
שלום
מה שלומכם?
היום כשהייתי במכון ויצמן ראיתי פלייר עם פרטים על התחרות
והחלטתי להכנס לראות מה זה
קראתי על הכל, וזה נשמע מאוד מעניין
אני גם יודע אסמבלר, אז הבנתי את הרוב
הקודים לדוגמא וכו'
הדבר היחיד שלא הבנתי, הוא איך הורגים
זאת אומרת, איך אני מפריע לאחרים בקוד
או מה שאני לא צריך לעשות
אני אשמח אם מישהו יעזור לי
תודה
[]5 בינואר 2009 בשעה 13:37 #78163GalDorמשתתףמישהו מת אם הוא מנסה להריץ אופקוד לא חוקי.
מכיוון שלכולם אפשרות לדרוך על כולם, אתה אמור
לנסות לכתוב פקודה לא חוקית על הקוד של האויב.
כמו בשורדים לדוגמא, אתה יכול לפזר פקודות לא חוקיות
באקראי בזירה עד שתפגע במישהו. אתה יכול למצוא
שיטות יותר ופחות יעילות לעשות את זה, וכו. בעיקרון,
המנוע עובד בתורות – כל שורד מקבל אותה כמות תורות,
ובכל תור המנוע מריץ את הפקודה הבאה. אם ניא מוחלפת במשהו כמו:
0xCC
אז הוא מת. אם תחפש בעמודים הראשונים של הפורום, תמצא מדריך מפורט על כל מיני שיטות בסיסיות.
יש מקטע אחד שבו כל השורדים רצים, ולך יש גישה אליו. תנסה לכתוב עליהם ג'נק (אתה יכול אפילו לכתוב עליהם פקודות קפיצה לקוד שלך, וכך לקבל עוד כוח אש ומפציצים שיירו על אויביך…)
מקווה שעזרתי.5 בינואר 2009 בשעה 14:34 #78162Moriponמשתתףאז ככה
הבנתי כל מה שכתבת
אבל אני לא מבין הכל
ניסיתי למצוא מדריכים בעמודים הראשונים וקראתי את כל הנושאים ב4 עמודים הראשונים
אבל לא מצאתי משהו שממש מדבר על זה…איך אני בעצם משתיל דבר כזה בקוד של מישהו אחר?
הבנתי שאני צריך לגרום לו לעשות משהו לא חוקי
אבל איך?
כי הרי הקוד הוא קבוע מראש, איך אני יכול להכניס לשם פקודות נוספות?ועוד שאלה מה זה STOSW?
ומה השימושים של זה?תודה רבה!
8 בינואר 2009 בשעה 02:46 #78161jgeralnikמשתתףהקוד נכתב ושמים אותו במקום כלשהו בזכרון. אחר כך התוכנה קורא שורה שורה מהזכרון כדי לדעת מה לעשות. אם מישהו דורס את הקוד שלך, כלומר כותב לזיכרון במקום שהקוד שלך נשמר, התוכנה שלך ינסה לעשות אותו דבר שרשום עכשיו. אם זה לא אופקוד חוקי התוכנה שלך ימות, ואם זה חוקי התוכנה יתבצע אותו פקודה.
שומר דברים בתוך הסגמנט המשותף של השורדים שלך. לדוגמה הקוד הבא STOSW
add ax, 002F
stoswישמור את הכתובת בזיכרון של הפקודה בשורה
002Fמכיוון שיש בעייה קטנה בסימולטור, כדי לקרוא את זה צריך לכתוב
push es
pop ds
LODSWכי הפקודה
ds עובד רק בסגמנט
lodsw אחר כך כותבים
axכתובת הפקודה נשמרת בבהצלחה! ~~~ג'ואי
8 בינואר 2009 בשעה 12:49 #78160GalDorמשתתף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.9 בינואר 2009 בשעה 03:06 #78159jgeralnikמשתתףOh, didn't know that, thanks.
-
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.