Como pular uma linha fazendo um estouro de buffer em C
Quero pular uma linha em C, a linhax=1;
na seção principal usandobufferoverflow
; no entanto, não sei por que não consigo pular o endereço de4002f4
para o próximo endereço4002fb
apesar de contar 7 bytes de forma<main+35>
para<main+42>
.
Também configurei as opções do ambiente randomniZation e execstack em um ambiente Debian e AMD, mas ainda estou recebendox=1;
. O que há de errado com este procedimento?
Utilizei o dba para depurar a pilha e os endereços de memória:
0x00000000004002ef <main+30>: callq 0x4002a4 **<function>**
**0x00000000004002f4** <main+35>: movl $0x1,-0x4(%rbp)
**0x00000000004002fb** <main+42>: mov -0x4(%rbp),%esi
0x00000000004002fe <main+45>: mov $0x4629c4,%edi
void function(int a, int b, int c)
{
char buffer[5];
int *ret;
ret = buffer + 12;
(*ret) += 8;
}
int main()
{
int x = 0;
function(1, 2, 3);
x = 1;
printf("x = %i \n", x);
return 0;
}