VC中获取函数的真实地址


我有一个需求,是获取函数的机器码,但是我直接用函数的地址来读取却读不到,后来听说是虚函数地址。经过研究可以计算出函数的真实地址: 

// 计算函数真实地址
 unsigned char* funaddr= (unsigned char*)f;//void f(){}
 if(funaddr[0]==0xE9)// 判断是否为虚拟函数地址,E9为jmp指令
 {
  unsigned long realaddr=(unsigned long)f;
  realaddr += funaddr[2]*0x100 +funaddr[1] +5;
  printf( "函数实际地址:0x%0X/n", realaddr);
 } 

你可能感兴趣的:(Windows内核开发)