// 机器码 : 对传入的整型参数进行加一操作,然后返回结果。
unsigned char machineCode[] =
"/xe9/x07/x00/x00/x00/xcc/xcc/xcc/xcc/xcc/xcc/xcc/x55/x8b/xec/x83/xec/x40/x53/x56"
"/x57/x8d/x7d/xc0/xb9/x10/x00/x00/x00/xb8/xcc/xcc/xcc/xcc/xf3/xab/x8b/x45/x08/x83"
"/xc0/x01/x5f/x5e/x5b/x8b/xe5/x5d/xc3";
// 第一种执行方式
void mac_one()
{
int result;
int (*Fun)(int);
Fun = (void*)machineCode;
result = Fun(7);
printf("%d/r/n",result);
}
// 第二种执行方式
void mac_two()
{
int result;
typedef int(*Fun)(int);
Fun p=NULL;
p = (Fun)machineCode;
result = p(7);
printf("%d/r/n",result);
}
// 第三种执行方式
void mac_three()
{
int result;
result = ( ( int (*)(int) ) machineCode )(7);
printf("%d/r/n",result);
}
评论