ברוכים הבאים לאתר תחרויות קודגורו! › פורומים › אקסטרים › אשמח להסבר על מה זה בדיוק אומר השתלטות על זומבי
- This topic has 22 תגובות, 5 משתתפים, and was last updated לפני 10 שנים, 5 חודשים by Idan Dor.
-
מאתתגובות
-
8 במרץ 2014 בשעה 13:49 #76735noyaloמשתתף
נראלי שאני מבין מזה אומר להשתלט על זומבי, אך לא סגור על איך בדיוק זה עובד, ו/או להשתמש בזה לטובתי.
מה שחשבתי:
דבר ראשון לכתוב בקוד שלי, חלק בקוד, שאותו אני רוצה שהזומבי יריץ בשבילי (בין אם זה משו שישמור עלי, או יתקיף אחרים).
דרך הסתכלות בקוד מקור של זומבי (דרך דיסאסמבלי), להבין מה הוא עושה(איך שהבנתי, לרוב זה נוסחה/משו מתמטקי שלא קל לפתור אותו) , ואז לדעת איך לאתר אותו בזירה בזמן הריצה.
בעצם, ברגע שאני יוכל לדעת איפה הזומבי בזירה – אני יכול לשתול איפה שאמור להיות אצל הזומבי בקוד פעולת קפיצה – אני מחליף בפעולת קפיצה שיגרום לזומבי לקפוץ למיקום בו אני רוצה שהזומבי יריץ?
"?האם זה בעצם העניין של "השתלטות על זומבי
8 במרץ 2014 בשעה 13:59 #77852Yoavמשתתףזה בדיוק עניין ההשתלטות על הזומבים. על ידי פיענוח החידה המתמטית אתה יכול לדעת איפה בדיוק לשתול את קוד הקפיצה אליך
8 במרץ 2014 בשעה 14:09 #77849noyaloמשתתףסבבה תודה.
13 במרץ 2014 בשעה 12:57 #77820Daveמשתתףיש עוד דרך להשתלט על זומבי והיא שימוש בהפצצה חכמה. השלב הראשון הוא באמת לכתוב קטע קוד שהזומבי צריך להריץ ולמקם אותו אצלך בקוד. לאחר מכן אתה תשתמש בהפצצה חכמה ותחליף קטע קוד ספציפי מהזומבי עם פקודת קפיצה לקטע הזה בקוד, ועכשיו הזומבי מריץ את מה שאתה רוצה!
כמובן שכדאי לוודא שהפקודה שתחליף עם פקודת הקפיצה שלך היא רלוונטית, כלומר היא קיימת רק בזומבי (או לפחות לא סביר שהיא תהיה אצל מישהו אחר) ושהיא תקרה בשלב מאוחר בהרצה. הרי אתה רוצה להחליף את הפקודה של הזומבי לפני שהוא מריץ אותה כי אחרת הוא לא יריץ אותה לעולם.דוגמה עם הזומבים של השנה:
השנה הזומבים כתבו למקום ספציפי בזירה, לכן לקחנו את הפקודה שכותבת למקום הספציפי הזה והחלפנו אותה עם קפיצה לקטע קוד שלנו. כמובן שזה יעבוד רק על זומבי ספציפי.add ax,Zombie ;the place of the code to be run by the zombie
mov [0BEEFh],ax ; put the address on the screen
mov ax,02688h ;this is the zombie command to replace
mov dx,0C4DDh ;it is "mov [0C4DDh],ah"
mov cx,0BEEFh ;the command the zombie will do
mov bx,026FFh ; it is :"jmp[0BEEFh]
push ds;replace the segmants because it replaces in es
pop es
int 87h ;switch commands and gain control over zombie9 ביוני 2014 בשעה 18:24 #81529ddtמשתתףאני מנסה לעשות שהזומבים של התחרות האחרונה יקפצו אל קוד בזומבי שלי
אשמח לקבל כמה תשובות לגבי הדוגמה בסוף השרשור כאן כי זה בדיוק מה שאני מנסה לעשות
מה זאת הכתובת של [0BEEFh] – לא ראיתי שיש משהו כזה בזומבים של השנה
למה העברנו את כתובת הטעינה שלנו AX? לא היה עדיף לקפוץ לקוד שלנו אחרי כל האתחול?
מה זה ה 02688h? כתוב בהערה שזה הפקודה של הזומבי שאנחנו רוצים להחליף אבל זה לא מתאים למה שהמשתמש עידן אמר בפורום
מה זה [0C4DDh]? זה קוד של מי? מה רוצים לעשות עם זה?
מה זה 026FFh?
אני מחפש להחליף את הקוד הפגיע בהפצצה חכמה שפשוט תכתוב לי לתא שם JMP לכתובת אצלי בקוד אז אני מניח שזה פירוש של האופקודים של JMP אבל JMP זה EA או EB לפי מה שראיתי (חלק מהמקומות שמצאתי אומרים אופקוד אחד ואחרים אומרים אופקוד אחר
יש מקום שנותן לי במדויק אופקוד וגודל לפי פקודה שנותנים לו או קוד שנותנים לו? אפשר לכתוב תוכנית ולעשות DISASSEMBLY אבל זה פחות נוח כל רגע לקמפל כל פקודה)
איך היינו מחליפים את הכתובות האלו עם הכתובות שעידן נתן כדי שדוגמה פשוטה של קפיצה מזומבי לתוכנית שלי תעבוד?
דניאל9 ביוני 2014 בשעה 18:53 #81532ddtמשתתףנגיד היה לי:
label1:
label2:
label3:
label4:
והייתי רוצה שהזומבי יקפוץ לי ל label3 איך הייתי עושה את זה?
כרגע אני מצליח לרשום לו JMP לכתובת אבל זאת הכתובת הלא נכונה בחישוב שלי
נראה לי שאני צריך לכתוב אותה איכשהו בכתובת האבסולוטית שהזכרתם
ואני גם מנסה לחשב כמה הפרש יש בין ה label1 ל label3 כדי לדעת מה הכתובת שצריך להכניס במקום label3
9 ביוני 2014 בשעה 20:32 #81533Idan Dorמשתתף<p style="text-align: right;">אני לא יודע באיזה אסמבלר אתה משתמש, אבל אני מציע שתנסה:</p>
<p style="text-align: right;">label3 – label1</p>
<p style="text-align: right;">לגבי השאלה השנייה שלך, אני יכול לומר לך את התשובה אבל נראה לי יהיה יותר נחמד אם תחפש שורד שמשתלט על זומבי ותנסה להבין איזה פקודה הוא מפציץ במקום JMP</p>
<p style="text-align: right;"></p>10 ביוני 2014 בשעה 11:43 #81555ddtמשתתףעשיתי כמו שאמרת עם החיסור שלהם.
אבל ייתכן שיש לי מושג מה אולי הבעיה – הסתכלתי בדיבאגר וראיתי שהוא מנסה לקפוץ לכתובת הנכונה אבל כותב לפני כן שזה jmp word nearיכול להיות שאני צריך קפיצה של FAR? קראתי על זה בפורום פה שיש התקפה כזאת אבל עדיין לא למדתי את זה ולא ראיתי איך אני יכול לעשות קפיצה ולא התקפה של FAR שתמיד עובדת לא משנה מה הכתובת הרנדומלית של השורד שלי לעומת איפה שהזומבי נטען.
כרגע זה קופץ לי לכתובת שיש אחריה הרבה INT3 ואז הזומבי מת
10 ביוני 2014 בשעה 11:51 #81556ddtמשתתףואת הכתובת שאליה אני קופץ אני מכניס לאוגר CX בשורד שלי לפני ההפצצה
10 ביוני 2014 בשעה 12:05 #81557ddtמשתתףאני משתמש ב NASM שמצאתי
יש אחרים שאיתם אני מכין שורדים?10 ביוני 2014 בשעה 12:08 #81558Idan Dorמשתתף<p style="text-align: right;">JMP Near – מיקום יחסי</p>
<p style="text-align: right;">דוגמא:</p>
<p style="text-align: right;">JMP Near 0x10</p>
<p style="text-align: right;">זה אותו דבר בעצם כמו:</p>
<p style="text-align: right;">add ip, 0x10</p>
<p style="text-align: right;">( ההוספה היא לא פקודה חוקית אבל זה בעצם מה שהקפיצה עושה ב"מילים אחרות")</p>
<p style="text-align: right;">JMP FAR</p>
<p style="text-align: right;">היא לא הפקודה שאתה צריך וקשה יותר להשתמש בה בשביל להשתלט על זומבים.</p>
<p style="text-align: right;">המילים:</p>
<p style="text-align: right;">label2 – label1</p>
<p style="text-align: right;">פשוט נותנים לך את המרחק בניהם. לדוגמא:</p>
<p style="text-align: right;">mov cx, label2 – label1</p>
<p style="text-align: right;">יכניס את המרחק בניהם לאוגר.</p>
<p style="text-align: right;">אני לא ממליץ לך להשתלט בעזרת פקודת JMP</p>
<p style="text-align: right;">כפי שהצאתי לפני תחפש שורד בעבר שהשתלט על זומבי ותנסה להבין בעזרת איזה פקודה הוא עשה את זה.</p>
<p style="text-align: right;">לגבי Nasm</p>
<p style="text-align: right;">יש הרבה תוכנות שאפשר להשתמש בהם אבל הם כולם כמעט בדיוק אותו הדבר.</p>10 ביוני 2014 בשעה 16:54 #81562ddtמשתתףהייתי שמח בכל זאת להבין איך אפשר לעשות עם JMP כדי לדעת יותר טוב מה קורה במשחק כי אני רואה שזה כן מעלה לי פערים שיש לי
יש איזה שורד ספציפי שכדאי להסתכל עליו? אני לא ממש מכיר את השורדים שהיו או התחרויות לא השתתפתי בתחרות אף פעם וגם האסמבלי שאני יודע זה אחרי שחבר'ה גדולים שהכרתי ניגשו לתחרות ושמעתי על זה והחלטתי לנסות ללמוד
10 ביוני 2014 בשעה 16:57 #81563ddtמשתתףבשורד הספציפי התכוונתי לדרך השניה שהיא לא ה JMP שאמרת שאני צריך למצוא
13 ביוני 2014 בשעה 17:29 #81661Idan Dorמשתתף<p style="text-align: right;">המנוע (וגם המעבד8086) לא תומך בפקודה:</p>
<p style="text-align: right;">JMP (to location) 0x1234</p>
<p style="text-align: right;">מבחינתו כל JMP הוא רלטיווי</p>
<p style="text-align: right;">אז יש שתי אופציות לקפוץ למיקום הראשונה בשימוש אוגר לדוגמא:</p>
<p style="text-align: right;">mov ax, 0x1234</p>
<p style="text-align: right;">jmp ax</p>
<p style="text-align: right;">השניה, שימוש בזיכרון על הזירה לדוגמא:</p>
<p style="text-align: right;">mov word [0x1234], 0x1234</p>
<p style="text-align: right;">jmp [0x1234]</p>
<p style="text-align: right;"></p>
<p style="text-align: right;">אז אם אתה מתכנן להשתמש ב JMP כדי להשתלט על זומבי אתה חייב להשתמש באחת משתי השיטות האלו.</p>14 ביוני 2014 בשעה 09:36 #81677ddtמשתתףאם זאת הייתה תוכנית בפני עצמה לא הייתה לי בעיה אבל אני הרי מנסה לשים פקודות את הפקודות האלו בתוך הזומבי ואני מבין איך אני יכול לשלוט איך אני משתמש באחת משתי השיטות שהזכרת בקוד שאני מעביר לזומבי
mov cx, (label3-label1)
mov bx, 026ffh
אני צריך להחליף את 026ffh בפקודה אחרת?
נורא מבלבל. נראה לי שרק שאני אראה דוגמה אחת שעובדת עם ה JMP אני אבין איך זה עובד ואדע להשתמש בזה אחכ -
מאתתגובות
- יש להתחבר למערכת על מנת להגיב.