int get_input()
{
char buffer[8];
gets(buffer);
puts(buffer);
return 1;
}
-------------------------------
0x08048464 <+0>: push %ebp
0x08048465 <+1>: mov %esp,%ebp
0x08048467 <+3>: sub $0x10,%esp
0x0804846a <+6>: mov %gs:0x14,%eax //ssp 保护技术的东西。
0x08048470 <+12>: mov %eax,-0x4(%ebp) //把ssp的那个 对比的随机数放入ebp紧挨着的地址。
0x08048473 <+15>: xor %eax,%eax
0x08048475 <+17>: lea -0xc(%ebp),%eax //把buffer的地址给eax
0x08048478 <+20>: mov %eax,(%esp) // 把buffer的地址压栈传参,为call做准备。
0x0804847b <+23>: call 0x8048360
0x08048480 <+28>: lea -0xc(%ebp),%eax //把buffer的地址给eax
0x08048483 <+31>: mov %eax,(%esp) // 把buffer的地址压栈传参,为call做准备。
0x08048486 <+34>: call 0x8048380
=> 0x0804848b <+39>: mov $0x1,%eax //为return1 做准备。
0x08048490 <+44>: mov -0x4(%ebp),%edx //將ebp下紧挨的ssp的哪个随机数给edx。
0x08048493 <+47>: xor %gs:0x14,%edx //比较edx与 gs:0x14.ssp的技术。
0x0804849a <+54>: je 0x80484a1
0x0804849c <+56>: call 0x8048370 <__stack_chk_fail@plt>
0x080484a1 <+61>: leave
0x080484a2 <+62>: ret
参考:http://www.ibm.com/developerworks/cn/linux/l-cn-gccstack/
阅读(2320) | 评论(0) | 转发(0) |