Адреса памяти - PullRequest
       36

Адреса памяти

0 голосов
/ 23 ноября 2018

Я работаю над Overthewire narnia2 (ctf game).В настоящее время я учусь использовать GDB, и у меня есть простой вопрос.

    (gdb) x/200x $esp-0xac
0xffffd5a4: 0x08048534  0xffffd5c8  0xf7e5b7d0  0xffffd5c8
0xffffd5b4: 0xf7ffd920  0xf7e5b7d5  0x08048494  0x08048534
0xffffd5c4: 0xffffd5c8  0x6850c031  0x68732f2f  0x69622f68
0xffffd5d4: 0x50e3896e  0x89e18953  0xcd0bb0c2  0x41414180
0xffffd5e4: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd5f4: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd604: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd614: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd624: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd634: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd644: 0x41414141  0x62626262  0xf7e2a200  0x00000002
0xffffd654: 0xffffd6e4  0xffffd6f0  0x00000000  0x00000000
0xffffd664: 0x00000000  0xf7fc5000  0xf7ffdc0c  0xf7ffd000
0xffffd674: 0x00000000  0x00000002  0xf7fc5000  0x00000000
0xffffd684: 0x59e07c0a  0x6308501a  0x00000000  0x00000000



    (gdb) x/200x $esp

0xffffd7a0: 0x000036b2  0x0000000e  0x000036b2  0x00000017
0xffffd7b0: 0x00000001  0x00000019  0xffffd7eb  0x0000001a
0xffffd7c0: 0x00000000  0x0000001f  0xffffdfe8  0x0000000f
0xffffd7d0: 0xffffd7fb  0x00000000  0x00000000  0x00000000
0xffffd7e0: 0x00000000  0x00000000  0x8b000000  0xb1cfbc04
0xffffd7f0: 0x91563e77  0xcb1ff506  0x6957e20c  0x00363836
0xffffd800: 0x00000000  0x00000000  0x00000000  0x72616e2f
0xffffd810: 0x2f61696e  0x6e72616e  0x00326169  0x41414141
0xffffd820: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd830: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd840: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd850: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd860: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd870: 0x41414141  0x41414141  0x41414141  0x41414141
0xffffd880: 0x41414141  0x31414141  0x2f6850c0  0x6868732f
0xffffd890: 0x6e69622f  0x5350e389  0xc289e189  0x80cd0bb0

на что я смотрю, когда делаю $ esp-0xac?Я также видел другие методы, такие как $ esp-0x14, но почему бы не сделать простой $ esp?что наиболее часто используется и почему?

1 Ответ

0 голосов
/ 23 ноября 2018

на что я смотрю, когда делаю $ esp-0xac?

Регистр $esp указывает на границу (в памяти) между используемой и неиспользуемой частью стека.На i*86 процессорах стек увеличивается до более низких адресов, поэтому все, что находится выше (по более высоким адресам), $esp содержит используемую часть стека (локальные переменные, адреса возврата, сохраненные регистры и т. Д.) И все, что находится ниже (по более низким адресам).содержит текущую неиспользуемую часть стека.

Затем команда x/200x $esp-0xac проверяет содержимое 43 32-битных слов используемого в настоящее время стека и 157 слов неиспользуемой части стека.

Я также видел другие методы, такие как $ esp-0x14, но почему бы не сделать простой $ esp?

$esp-0x14 позволит вам взглянуть на последние 5 использованных словстека.Использование $esp позволит вам взглянуть на неиспользованную часть стека.Вы могли бы сделать это, но это несколько бессмысленно.

что наиболее часто используется и почему?

Изучение стека полезно, когда вы хотитегде хранится какое-то конкретное значение (например, во время анализа переполнения буфера эксплойта / стека) или при отладке на уровне машинных инструкций.

...