системы x86изменить возвращаемое значение функции с переполнением буфера
Я пытаюсь изменить возвращаемое значение функции. Например
int foo(){
char buffer[12];
gets(buffer);
return 1;
}
int main(){
int value;
value = foo();
return 0;
}
Foo() всегда возвращает 1. Я знаю, что значения возврата из функций сохраняются в% EAX (так 1 хранятся в% EAX). Есть ли способ, что я могу достигнуть и изменить% е стоимость? Я думаю, что этого не может быть, потому что% eax не появляется в стеке! Правильно?
'foo' всегда возвращает' 1', потому что вы возвращаете 1; '. Выясните, что вы хотите вернуть, а затем «return the_value;». В сборке x86 аргументы предоставляются вызываемому в стеке, возврат возвращается вызывающему в EAX (не в стеке). –
Я думаю, он пытается взломать существующую программу, а не переписывать код. –
Глядя на него снова. Я думаю, вы правы. Спасибо за разъяснения. –