Как мы можем получить значение буфера, используя GDB - PullRequest
0 голосов
/ 24 февраля 2019

Я хотел бы понять, как работает стек.Я использую GDB, чтобы разобрать мой код.

Я разбираю следующий код:

int main(){
   char*buf;
   buf="TEST";
   return 0;
}

После компиляции я запускаю gdb и разбираю код.Я получил такой результат:

   0x080483db <+0>: push   %ebp
   0x080483dc <+1>: mov    %esp,%ebp
   0x080483de <+3>: sub    $0x10,%esp
   0x080483e1 <+6>: movl   $0x8048470,-0x4(%ebp)
   0x080483e8 <+13>:    mov    $0x0,%eax
   0x080483ed <+18>:    leave  
   0x080483ee <+19>:    ret  

Я установил точку останова по инструкции 0x080483e8, затем я запускаю.

Когда я печатаю значение по адресу 0x8048470, я получаю TEST\n, но не получаю тот же результат, когда выполняю команду x\s $ebp-0x4.Поскольку содержимое 0x8048470 было перемещено в -0x4(%ebp), я не должен получить одинаковое значение на обоих адресах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...