马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
unsigned char ShellCode[] =
{
0x55,0x8B, 0xEC,0x83, 0xEC, 0x40,0x53,0x56,0x57,
0x8D, 0x7D, 0xC0,0xB9, 0x10, 0x00, 0x00, 0x00,
0xB8, 0xCC, 0xCC, 0xCC, 0xCC,0xF3, 0xAB,0x8B, 0x45,
0x08, 0x03, 0x45, 0x0C,0x5F,0x5E,0x5B,0x8B, 0xE5,0x5D,0xC3
};
int Plus(int x,int y)
{
return x+y;
}
int main()
{
int (*pFun)(int,int);
pFun = (int (*)(int,int))&ShellCode;
int x = pFun(2,2);
printf("%d\n",x);
return 0;
}
为什么最后等于四
本帖最后由 xieglt 于 2020-8-18 14:51 编辑
unsigned char ShellCode[] =
{
0x55,0x8B, 0xEC,0x83, 0xEC, 0x40,0x53,0x56,0x57,
0x8D, 0x7D, 0xC0,0xB9, 0x10, 0x00, 0x00, 0x00,
0xB8, 0xCC, 0xCC, 0xCC, 0xCC,0xF3, 0xAB,0x8B, 0x45,
0x08, 0x03, 0x45, 0x0C,0x5F,0x5E,0x5B,0x8B, 0xE5,0x5D,0xC3
};
这个字符串是一个函数的二进制码,
用函数指针调用了这段代码,执行后得的返回值是4,
估计这段代码就是将2个参数相加,然后返回。
你可以试试比如说 pFun(100,100),返回值多半是200。
|