שְׁאֵלָה:
מנסה להנדס קוד C שהוא הרכבה של 64 סיביות
user2303586
2013-04-28 08:46:02 UTC
view on stackexchange narkive permalink

זהו הקוד שאני מסתכל עליו

  0x0000000000401048 < + 70>: mov 0x401ba0 (,% rax, 4),% eax  

This הוא מערך של 15 מספרים שלמים. רק תוהה כיצד אוכל לגשת למדדים 0 עד 15 ב- gdb

תודה

שְׁלוֹשָׁה תשובות:
0xC0000022L
2013-04-28 20:44:36 UTC
view on stackexchange narkive permalink

GDB מאפשר לך להשתמש בקסטות בסגנון C, אז פשוט עשה זאת, אם אתה יודע את הכתובת:

  (gdb) print / x (int [15]) (* 0x401ba0) 

פלט לדוגמא יהיה:

  $ 1 = {0x5241c031, 0x41535341, 0x41554154, 0x55574156, 0x48e58948, 0x31f0e483, 0x31f631ff, 0xe8c931d2, 0x31, 0x31 0x580f0174, 0x7c00f883, 0xec8948c7, 0x415f415d, 0x415d415e}  

אם יש לך את כתובת המערך שלך במרשם, תוכל גם להשתמש במשתנה המתאים ( $ eax וכו ').

אתה הגורו.
0x90
2013-04-28 09:06:58 UTC
view on stackexchange narkive permalink
  (gdb) dump dump זיכרון בינארי dump.raw 0x401ba0 0x401bdc  

זרוק זיכרון לקובץ dump.raw מכתובת 0x401ba0 קוד> עד לכתובת 0x401bdc

אפשרות נוספת תהיה לבחון:

  x / nfu <address> זיכרון הדפסה.n: כמה יחידות להדפיס (ברירת מחדל 1) .f: עיצוב תו (כמו "הדפסה"). U: Unit.Unit הוא אחד מ: b: Byte, h: חצי מילה (שני בתים) w: Word (ארבעה בתים) g: מילה ענקית (שמונה בתים)).  
זה יביא: x / 15w 0x401ba0
scottt
2013-04-29 02:15:33 UTC
view on stackexchange narkive permalink

לקריאה וכתיבה ל- 15 האלמנטים במערך:

  (gdb) קבע משתנה $ A = (int *) 0x401ba0 (gdb) p $ A [0] = 1. .. (gdb) p $ A [14]  

לבחינת הערך הנוכחי שלהם,

  (gdb) x / 15dw $ A  
בנסיבות מסוימות ייתכן שיהיה צורך בכתיבה מוגדרת (== "בהגדרת כתיבה").


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...