ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › On kengerus and moving with call far – KenGeruX Code
- This topic has 7 תגובות, 2 משתתפים, and was last updated לפני 11 שנים, חודש 1 by
Idan Dor.
-
מאתתגובות
-
23 בפברואר 2014 בשעה 12:07 #77912
Idan Dor
משתתףאשמח לענות על כל שאלות שיש לכם
25 בפברואר 2014 בשעה 13:47 #77907ddt
משתתףאיך מתגוננים מה int 0x87? מישהו יכול לפרסם דוגמה של שורד שמתקיף עם int 0x87 ושורד אחר שמתגונן מההתקפה שלו ושניהם רצים ביחד
"Ip + cs * 0x10= Absolute place in memory "
איפה בקוד של המנוע יש את קטע הקוד שעושה את זה?
אפשר להסביר מה זה "יעילות הפצצה" או מה זה שורד יותר יעיל או יותר מהיר?
למה לפעמים משתמשים בשני movsw ביחד, לפעמים יש 4 movsw אחד אחרי השני ולפעמים יש אפילו 8 כאלו?
אם "גם קנגורו1 וגם קנגורו2 רצים מאותו מקום על הזירה" זה לא בעייתי בשבילכם כי אם מישהו יפגע במקום הזה אז שני השורדים שלכם ימותו בבת אחת נכון?
מה זה אומר ששורד מתחיל ל"התפורר"?
למה בכלל אני ארצה לכתוב שורד או קוד שמתאבד? זה לא לאבד את השורד שלי בלי שאחרים יפגעו בו? מה היתרונות של זה? מתי אני ארצה להשתמש בזה?
איך אני יכול להשתלט על זומבי? מישהו יכול להביא דוגמה לזומבי הכי פשוט ולתוכנית הכי פשוטה שמשתלטת על הזומבי?
מה זה מפציץ רנדומלי? למה השורד בשם פוביה יש לו חולשה למפציפים רנדומליים? איך אני מזהה שורד שיש לו חולשה למפציצים רנדומליים או בכלל איך מזהים חולשות של שורד?
האם יש דוגמה הכי פשוטה לשורד של מפציץ רנדומלי?
"השיטה שבא השתמשנו כדי להשתלט על זומבים היא שיטה דומה לשיטה של פוביה המכונה משפט השאריות הסיני"
יש כמה שיטות להשתלט על זומבים או על הזומבים האלו? מה ההבדל בין השיטה של קנגרו לשיטה של פוביה?
מה זה השיטה של משפט השאריות הסיני? מתי אני צריך להשתמש בה?
לא משתלטים על כל הזומבים בבת אחת? האם צריך להשתלט על זומבי ואז על זומבי אחר?
"אז השיטה עובדת רק 3/4 מהמקרים"
מתי היא לא עובדת? מתי היא כן עובדת?האם אפשר לראות את הקוד של האסמבלי שיצר את הזומבים? איך הוא שונה מהייצוג שלהם ב disassembly? האם זה אחד לאחד?
האם מישהו יכול לכתוב דוגמה של קוד של זומבי? או את הקוד שיצר את הזומבים שיש בתחרות?
ראיתי שיש לך בשורד של את הקוד של הזומבי – ;The zombie code
איך השגת את הקוד של הזומבי כדי לשים אותו בתוך השורד שלך?
למה בכלל לשים את הקוד של הזומבי בתוך הקוד של השורד? הרי אתה יכול להריץ רק שורד אחד אז למה לשים קוד של זומבי ולא קוד שלך?מתי אתה תגרום לקוד שלך לעבוד ומתי לקוד של הזומבי בתוך הקוד שלך לעבוד?
מה זה ה extra segment?
25 בפברואר 2014 בשעה 22:35 #77904Idan Dor
משתתףאוקיי זה הרבה שאלות אני מקווה שאני יפספס כלום.
הגנה הכי יעילה מ 87 זה להעתיק את הקוד שלך שלוש פעמים ולקפוץ בתחילת הקוד לתוך הקוד האמצעי ככה ה 87 יפגע בחיקויי קוד שלך.
לגבי תקיפה בעזרת 87 יש לי בקוד תקיפה משוג זה כך שאני תוקף שתי זומבים ואומר להם לקפוץ אל הקוד שלי.
אני לא יודע איפה בקוד של המנוע זה רשום אבל ככה זה עובד במעבד האמיתי וזה גם נכון במנוע.
מספר ה
movsw
שיש ברצף מתאים לאורך הפקודה/פקודות שאני מריץ אני ממליץ לך לקרוא על מה הפקודה movsw עושה.
נכון שזה שהם רצים מאותו מקום מהזירה אומר שאם הם מתים הם מתים ביחד אבל בגלל שהם רצים מאותו מקום אז יש להם רק 50% סיכוי להיפגע מהפצצה ולכן בסופו של דבר זה לא משנה.
כשרשמתי "מתפורר" התכוונתי שהקוד התחיל למות באופן באופן עיקבי כשיניתי קבועים נגד כלום, זה בגלל המשחק הכל כך גדול שיש בו עם סגמנטים, יותר מדי קל לנסות לגשת למקום בזיכרון שאין לי גישה אליו ולמות.
אתה אף פעם לא רוצה מפציץ שמתאבד זה לא תכונה זה בעיות בקוד ובקונכפס של השורד הזה, כנראה אפשר לכתוב גרסא יותר יציבה של השורד הזה אבל אני לא בטוח.
הזומבים הם תמיד חידה מתמטית או במדעי המחשב במקרה הזה החידה הייתה קשורה בשאריות אז אני ממליץ לך לקרוא את הקוד של הזומבים של השנה ולהבין את האלגוריתם שלי או של פוביה לפתור את חידתם.
מפציץ רנדומלי הוא מפציץ שבמקום להפציץ שורות שורות הוא מפציץ יותר לאט אבל במקומות "רנדומלי" שהם לא באמת רנדומלים, דוגמא הכי טובה לזה היא השורד שניצח את התחרות השנה תריץ את השורד שלו ותסתכל על מה הוא עושה.
לקוד יש גודל ממוצע- זה הגודל שאם יפגיעו בו אתה תמות, עכשיו בגלל איך שהשורד פוביה בנוי הוא מרבית הזמן עושה המון בדיקות שהם מאוד גדולות בזיכרון והוא לא כותב את עצמו מחדש יותר מידי, ולכן פגיעה רנדומלית בקוד הארוך והפגיעה שלו תהרוג אותו. לגבי איץ מזהים את זה או הבנת הקוד שלו או הרצה והתבוננות בעזרת דיבאגר.
דוגמא פשוטה אני די בטוח שיש אחד כזה איפשהו אבל אני לא לגמרי בטוח.
שנינו השתמשנו בשיטה זהה אני פשוט בחרתי מספרים לשארית שהם קצת מעפנים ולא הבנתי בדיוק את הבעיה בהם אז להם זה עובד ב 500/501 פעמים כזה, אני ממליץ לך לקרוא את הקוד שלהם.
לגבי שאלה זה אני ממליץ לך לקרוא את הקוד של הזומבים.
את צריך לשתמש במשפט זה רק במקרים של שאריות מה שאומר שכנראה לא בזמן הקרוב כי הזומבים משתנים.
זה קצת מסובך לגבי מתי זה עובד ומתי לא אבל זה עובד כאשר
ax = address
al + ah < 0xff
זה קשור במספרים שאני משתמש בהם במשפט השאריות הסיני לפוביה גם יש את הבעיה הזאת אבל אצלם היא הרבה פחות רצינית.
את הקוד של הזומבי יש לכולם והוא משתנה כל שנה.
החלק של הקוד שלי שרשום עליו the zombie code
זה לא באמת הקוד שהזומבי אלה זה הקוד שאני גורם לזומבי שהשתלטתי עליו בעזרת 87 להריץ, בקוד הזה אני גורם לזומבים שלי להפציץ את המפה למות אחרי קצת זמן.
זה רווחי לשים את הקוד האמיתי של הזומבי בתוך הקוד שלך כדי לחסום לפעמים 87 על הזומבי שאנשים אחרים (לדוגמא אני) עושים כדי להשתלט.
הקוד הזה כרגע עובד הוא פשוט ימות קצת אם אשחק עם המשתנים.
extra segment
זה המקום בזיכרון שהוא פרטי לשתי השורדים שלך נהוג לשמור בו קוד ואז להעתיק אותו לזירה.
אני חושב שלא פיספסתי משהו.28 בפברואר 2014 בשעה 14:15 #77897ddt
משתתףתודה על ההסבר המפורט היו כמה שאלות שהתפספסו
לא משתלטים על כל הזומבים בבת אחת? האם צריך להשתלט על זומבי ואז על זומבי אחר?
האם אפשר לראות את הקוד של האסמבלי שיצר את הזומבים? איך הוא שונה מהייצוג שלהם ב disassembly? האם זה אחד לאחד?
האם מישהו יכול לכתוב דוגמה של קוד של זומבי? או את הקוד שיצר את הזומבים שיש בתחרות?
אפשר להסביר מה זה "יעילות הפצצה" או מה זה שורד יותר יעיל או יותר מהיר?
28 בפברואר 2014 בשעה 16:14 #77894Idan Dor
משתתףהסיבה היחידה שלא השתלטתי על כולם באותו הזמן זה כי יותר קל ופשוט להשתלט על אחד כל פעם (עם שתי שורדים – שתי כל פעם) אפשר להשתלט על כולם ביחד אבל זה קצת יותר מסובך ויש סיכון שמישהו יפריע להשתלטות (תלוי במה הזומבי עושה)
לגבי קוד זומבי לדוגמא, הנה הקוד של הזומבים של השנה
push cs
pop es
int 0x87
and ax,0x7fff @LoopStart:
push ax
mov bl,[0xc0de]
test bl,bl
jns @AlmostEndLoop
div bl
mov [0xc0dd],ah @AlmostEndLoop:
pop ax
jmp @LoopStartההבדל היחדי בין ששת הזומבים הוא ש
0xc0dd and 0xc0de
changed to
0xc1dd and 0xc1de
and to 0xc2dd and 0xc2de
…
and to 0xc5dd and 0xc5deלמקרה שאתה שואל ה 87 הוא כדי לדאוג שלא תוכל להשתמש בזומבים כדי להפציץ חכם אחרים.
לגבי יעילות הפצצה- יעילות הפצצה היא כמות הבתים שאתה פוגע בהם בממוצע לאופקוד, לשורדים טובים יש בדרך כלל 1.9 ממוצע בתים לאופקוד ובעזרת בנית שורדים מסוג אחר אז אפשר להגיע עד ל-4 בתים לאופקוד.
(לפני שאתה שואל- לדרך ההפצצה קוראים call far)
שורד הוא יעיל ככל שהוא מפציץ יותר בממצוע, ושורד הוא פחות פגיע ככל שיש לו פחות בתים שאפשר אם פוגעים בהם להרוג אותו.28 בפברואר 2014 בשעה 16:31 #77893ddt
משתתףלא הבנתי למה אם יש לזומבי הזה את ה INT87
אז אני לא יכול להשתמש בו כדי להפציץ חכם אחרים
הפקודה הזאת היא פקודה התקפית אז למה היא מונעת התקפה ממישהו אחר
צריך פקודה של הגנה או משהו כזהואם אפשר גם להסביר כמה שאפשר האם יש קשר בין הזומבים
ואיך יש משהו הם עושים עם שאריות
איך רואים את זה בהרצה
כלומר איך מגיעה כאן שאריתוהאם זה משנה איזה שניים אתה משתלט או שזה שתיים כלשהם
תוך כמה זמן אפשר להשתלט עליהם
ומה קורה אם כולם מנסים להשתלט עליהם בבת אחת כי הבנתי שכולם מקבלים את הזומבים לפני התחרות אז איפה יש ייתרון לכל אחד
איך נראה קטע קוד שמשתלט על הקוד של הזומבי שאתה הראית
בלי כל שאר התוכנית
רק הפקודות שמשתלטות על מה שהראית
אני רוצה להריץ ביחד ולהבין את זהתודה כמובן על כל העזרה
5 במרץ 2014 בשעה 13:49 #77869Idan Dor
משתתףהזומבי מבזבז את ה 87 שלו יותר מהר מאשר שאפשר להשתלט עליו ולכל שורד 87 בודד אז הזומבי שאתה משתלט עליהם הם בלי 87.
אפשר בערך תוך כזה 15-30 אופקודים להשתלט עליהם בערך לא באמת ספרתי.
במקרה שלי זה כן משנה על איזה מהם אני משתלט כי אני רוצה שהם יהיו מיד לפני הזומבים הבאים שהם משתלטים עליהם כדי שיהיה יותר סיכוי שאני יקבל את הזומבים ולא מישהו אחר.
כולם יכולים לנסות להשתלט על איזה זומבים שהם רוצים ואם כולם מנסים בבת אחת אז או שאחד מהם מקבל אותו או שאף אחד מהם מקבל את הזומבים בגלל שהם עלולים להפריע אחד לשני.
אם אתה רוצה קוד שמשתלט עליהם פשוט תריץ את הקוד של פוביה ההתחלה שלו עושה בדיוק את מה שאתה מבקש והוא עושה אותה שש פעמים פעם לכל זומבי. -
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.