请问:shellcode运行出错,如何更改?
我这个程序调试了很久,还是出现错误。
请看:
/*这里的shellcode就是
push %ebp
mov %esp,%ebp
pop %ebp
ret
*/
unsigned char shellcode[]=
"\x55\x89\xe5\x5d\xc3";
typedef void (*PF)();
int main(void)
{
PF pf=(PF)&shellcode;
(*pf)();
return 0;
}
这个程序在XP的VC6中可以运行通过,可是在我的虚拟机
上(OS是CentOS 5.3)上编译能过,但运行时出错。
我是用gcc编译的,可是执行时就是出现
Segmentation fault,我用gdb调试,说是
(*pf)()错误,可是我看反汇编时,它调用的地址里有以上的
汇编程序,请问这错在哪了?