流沙团
函数指针与硬编码测试
2017-11-4 流沙团
#include "stdio.h"
#include "windows.h"

unsigned char arr[]={
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
};

void main()
{
__asm{
mov eax,eax
}

int (*p)(int,int);
int (__stdcall *px)(int,int);

p= (int (__cdecl *)(int,int))&arr;
int x = p(1,2);
printf("%d \n",x);
return;

}






测试案例二






#include "stdio.h"

unsigned char code[]={
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,
0x03,0x45,0x10,0x03,0x45,0x14,
0x03,0x45,0x18,0x5F,0x5E,
0x5B,0x8B,0xE5,0x5D,0xC3
};

void main()
{
int (__cdecl *px)(int,int,int,int,int);
px = (int (__cdecl *)(int,int,int,int,int))&code;

int res = px(1,1,1,1,1);

printf("%d \n",res);

}



发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容