Значение стека [0x4]: 1 - PullRequest
       117

Значение стека [0x4]: 1

1 голос
/ 11 июля 2020

Итак, я столкнулся с чем-то странным, чего я не понимаю. Я читаю теорию сборки и хотел бы знать, что делает этот стек [0x4]: 1.

undefined         AL:1           <RETURN>                                XREF[2]:     00010807(W),
                                                                                                   00010869(W)  
             undefined1        Stack[0x4]:1   param_1                                 XREF[1]:     00010779(*) 

Я не понимаю этого, потому что в статье говорится, что это -0x43, и кстати что то - делать в -0x43? Спасибо.

1 Ответ

0 голосов
/ 16 июля 2020

Думаю, вы путаете param_1 с input. Это разные вещи. param_1, поскольку он находится в функции main, будет переименован в argc. input - это буфер, выделенный в стеке, который будет позже заполнен вызовом gets.

param_1, поскольку это параметр (в этом ABI) с положительным смещением от ESP - в данном случае 0x4 и input, поскольку его локальная переменная будет иметь отрицательное смещение от ESP, в данном случае -0x43. Это связано с тем, что стек растет в сторону более низких адресов.

Обратно к Ghidra, Stack[0x4]:1 означает, что значение этого параметра передается через стек, а значение находится по смещению 0x4, и Ghidra определила, что это вероятно размером 1 байт.

...