התגובות שלי בפורום
-
מאתתגובות
-
ddtמשתתף
אני משתמש ב NASM שמצאתי
יש אחרים שאיתם אני מכין שורדים?ddtמשתתףואת הכתובת שאליה אני קופץ אני מכניס לאוגר CX בשורד שלי לפני ההפצצה
ddtמשתתףעשיתי כמו שאמרת עם החיסור שלהם.
אבל ייתכן שיש לי מושג מה אולי הבעיה – הסתכלתי בדיבאגר וראיתי שהוא מנסה לקפוץ לכתובת הנכונה אבל כותב לפני כן שזה jmp word nearיכול להיות שאני צריך קפיצה של FAR? קראתי על זה בפורום פה שיש התקפה כזאת אבל עדיין לא למדתי את זה ולא ראיתי איך אני יכול לעשות קפיצה ולא התקפה של FAR שתמיד עובדת לא משנה מה הכתובת הרנדומלית של השורד שלי לעומת איפה שהזומבי נטען.
כרגע זה קופץ לי לכתובת שיש אחריה הרבה INT3 ואז הזומבי מת
ddtמשתתףנגיד היה לי:
label1:
label2:
label3:
label4:
והייתי רוצה שהזומבי יקפוץ לי ל label3 איך הייתי עושה את זה?
כרגע אני מצליח לרשום לו JMP לכתובת אבל זאת הכתובת הלא נכונה בחישוב שלי
נראה לי שאני צריך לכתוב אותה איכשהו בכתובת האבסולוטית שהזכרתם
ואני גם מנסה לחשב כמה הפרש יש בין ה label1 ל label3 כדי לדעת מה הכתובת שצריך להכניס במקום label3
ddtמשתתףתודה!!!!
ddtמשתתףזה באמת עבד לי!!!!
ddtמשתתףאני מנסה לעשות שהזומבים של התחרות האחרונה יקפצו אל קוד בזומבי שלי
אשמח לקבל כמה תשובות לגבי הדוגמה בסוף השרשור כאן כי זה בדיוק מה שאני מנסה לעשות
מה זאת הכתובת של [0BEEFh] – לא ראיתי שיש משהו כזה בזומבים של השנה
למה העברנו את כתובת הטעינה שלנו AX? לא היה עדיף לקפוץ לקוד שלנו אחרי כל האתחול?
מה זה ה 02688h? כתוב בהערה שזה הפקודה של הזומבי שאנחנו רוצים להחליף אבל זה לא מתאים למה שהמשתמש עידן אמר בפורום
מה זה [0C4DDh]? זה קוד של מי? מה רוצים לעשות עם זה?
מה זה 026FFh?
אני מחפש להחליף את הקוד הפגיע בהפצצה חכמה שפשוט תכתוב לי לתא שם JMP לכתובת אצלי בקוד אז אני מניח שזה פירוש של האופקודים של JMP אבל JMP זה EA או EB לפי מה שראיתי (חלק מהמקומות שמצאתי אומרים אופקוד אחד ואחרים אומרים אופקוד אחר
יש מקום שנותן לי במדויק אופקוד וגודל לפי פקודה שנותנים לו או קוד שנותנים לו? אפשר לכתוב תוכנית ולעשות DISASSEMBLY אבל זה פחות נוח כל רגע לקמפל כל פקודה)
איך היינו מחליפים את הכתובות האלו עם הכתובות שעידן נתן כדי שדוגמה פשוטה של קפיצה מזומבי לתוכנית שלי תעבוד?
דניאלddtמשתתףבכל מקרה אני מנסה סתם לגרום לזומבים האלו למות ולא מצליח.
הבסיס של ההתקפה החכמה שלי הוא:
mov ax, 0E2F4h
mov dx, 0BEA0h
mov cx, 0cccch
mov bx,cx
STD
Int 87h
ניסיתי לשחק עם הכיוון כדי להבין את מה שהסתברת ועם שני הכיוונים זה לא מתקיף את החיבור בין העותקים של הזומביםddtמשתתףואוו אתה צודק… מרוב ששיחקתי עם כל מיני שורדים וזומבים משנים קודמות לא שמתי לב שאני רץ עם זומבים לא של תחרות 9.5…. איזה בושות…
אתה מתכוון בלפגוע בסוף הלולאה שהוא יעשה את האתחול, יריץ פעם אחת ללולאה ואז יגיע לחלק של הפקודות שהחלפתי בהפצצה החכמה שזה היה החיבור בין העותק הראשון לשני – נכון?
אתה ממש עוזר לי להבין את כל מה שלא ברור ויכול להיות שעוד יומיים לא הייתי שם לב שהזומבים הם של תחרות אחרת – זה באמת לא הסתדר לי כי אני רואה לולאה
ddtמשתתףאז רק כדי לוודא – יש רק מקום אחד שבו הזומבים פגיעים להתקפה חכמה?
מה זאת אומרת שהקוד לא רץ שוב?
אולי זה יסביר לי משהו כי נראה שהקוד של הזומבי (האמצעי) נמצא בלולאה כי יש שם loop 0x16 אבל כשאני מריץ אותו בלי שורדים אחרים (רק עם שורד שלא עושה כלום ולא מנסה לפגוע בו) הוא מת מהר מאוד (תמיד בסיבוב 17) ואני עדיין מנסה לראות עם דיבאגר למה הוא מת ככה אחרי כל כך קצת סיבובים.עוד שאלה – אבל אם אין לולאה אז דווקא הכי מסתדר היה לנסות להתקיף אותו כמה שיותר מהר מלמעלה לפני שהוא יספיק למות?
אם אתה מתקיף אותו מלמטה כמה סיבובים זה לוקח לך? האם אתה מספיק להשתלט עליו לפני שהוא מת בסיבוב ה 17?ddtמשתתףואיפה אתה בכלל רואה שיש ב DISASSEMBLY את הפקודה של sub si, 2?
- התגובה הזו עודכנה לפני לפני 10 שנים, 5 חודשים ע"י ddt.
ddtמשתתףתודה על ההסברים המפורטים שלך בכל השרשורים וגם תודה באותה הזדמנות ל CGX.
רק כדי לוודא – ההתקפה החכמה תעבוד גם אם נתקיף מלמטה נכון? מה האותיות המדויקות שאיתן נצליח להתקיף את הזומבי מהכיוון השני?
ואיך היינו מתקנים את הזומבי הזה כדי שלא תהיה אפשרות להתקין משני הכיוונים?
ddtמשתתףיש לי עוד שאלה ממש חשובה
הבנתי מהקריאה בפורום שלא הייתה הגנה מספיק טובה על הזומבים מפני הגנה חכמה.
לא הצלחתי למצוא ב DIS ASSEMBLY את הערך המדויק שאותו לקחו כדי להפציץ חכם את הזומבי.הנה ה DIS:
00000000 EB10 jmp short 0x12
00000002 BEA095 mov si,0x95a0
00000005 93 xchg ax,bx
00000006 FC cld
00000007 AD lodsw
00000008 FD std
00000009 39D8 cmp ax,bx
0000000B 73FF jnc 0xc
0000000D 0C90 or al,0x90
0000000F AD lodsw
00000010 E2F4 loop 0x6
00000012 BEA095 mov si,0x95a0
00000015 93 xchg ax,bx
00000016 FC cld
00000017 AD lodsw
00000018 FD std
00000019 39D8 cmp ax,bx
0000001B 73FF jnc 0x1c
0000001D 0C90 or al,0x90
0000001F AD lodsw
00000020 E2F4 loop 0x16
00000022 BEA095 mov si,0x95a0
00000025 93 xchg ax,bx
00000026 FC cld
00000027 AD lodsw
00000028 FD std
00000029 39D8 cmp ax,bx
0000002B 73FF jnc 0x2c
0000002D 0C90 or al,0x90
0000002F AD lodsw
00000030 E2F4 loop 0x26
איזה רצף הוא ייחודי בחיבור בין שלושת העותקים שלו כדי שאפשר היה להפציץ את החלק האמצעי האמיתי של הזומבי?
אני מחפש ממש את הערך ב HEX כדי לראות למה זה לא פגיע.גם במקום אחר בפורום שהיתה קבוצה שהראית איך הם משתלטים על הזומבי מהתחרות הזאת אין בכלל ערכים של HEX שמופיעים ב DIS של השורד.
ddtמשתתףלגבי 1 – אז DI זה ה OFFSET של הכתובת שמצוינת ב ES שאותה מפציצים? לא מסתדר לי.
אם אני רוצה להפציץ מתחילת הזירה אני צריך שיהיה ב ES את הערך 0000?
אז למה צריך גם את DI אם הכתובת מצוינת ב ES ויש מספר ידוע של תאים שמהכתובת הזו מפציצים?
אני אשמח אם מישהו יכול להשלים ולענות על 3 ו 4.
ואם
לגבי 5 – זה יכול להיות אם כל האחרים גם לא מעתיקים את עצמם בזמן הזה.ddtמשתתףלגבי הפצצה חכמה –
הסתכלתי במנוע ועל פניו אתה צודק לגבי מאיפה מתחיל החיפוס (כתובת אפס): for (int i = 0; i <= 0xFFFF; ++i) {
אבל הדוגמה הבאה אומרת ששמים ב DI אפס כדי להגיד שמתחילים לחפש מאפס אז ייתכן וצריך לבדוק את הנקודה האם זה מתחיל תמיד באפס.push cs
pop es
xor di,di
mov ax, 39d8h
mov dx, 7405h
mov cx, 0cccch
mov bx,cx
int 87hאז לא ברור לי למה שמו ב DI אפס ומה התפקיד שלו בהפצצה החכמה.
-
מאתתגובות