#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); }
0则评论给“函数指针与硬编码测试”