Кто-нибудь из вас сталкивался со следующей проблемой при попытке перезаписать указатель $esp
?
Конечно, попытка использовать допустимый размер буфера всегда работает! Но когда вы пытаетесь увеличить размер буфера, чтобы перезаписать $esp
, и вам удается коснуться первого байта, второго байта или третьего байта $esp
, все работает отлично. . Но как только вы попытаетесь перезаписать все 4 байта $esp
, это полностью изменит его содержимое, а также адрес. Он больше не показывает 41
, так как я использовал "A" для заполнения буфера. Я прикрепил скриншот, может быть, он объяснит более подробно. Спасибо всем.
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
char buffer[500];
strcpy(buffer, argv[1]);
return 0;
}