首页
社区
课程
招聘
[求助]怎么获取函数指针的地址。
发表于: 2010-7-31 18:40 4676

[求助]怎么获取函数指针的地址。

2010-7-31 18:40
4676

源代码。
void why_here()
{
        printf("admin");
}

typedef void (* FN)();

int _tmain(int argc, _TCHAR* argv[])
{
         char buff[1024]={0};
         char* p = buff;
        UINT len= 0;
        char* pf =(char* )&why_here;

        while (1)
        {
                *p = *pf;
                printf("\\x%02x",*pf);
                if (*pf == 195)
                {
                        break;
                }
                p++,pf++;
                len++;
        }
        FN* f = (FN*)buff;
                (*f)();
从图中可以看出,pf得到的地址并不是函数why_here的真正地址。求大虾给解答一下。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • a.jpg (114.17kb,116次下载)
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 191
活跃值: (95)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
release版就正常了,debug的程序每个函数都经过了一个jmp跳转到函数头。像这样:

call xxx

xxx:
  jmp yyy

yyy{};
2010-7-31 19:37
0
雪    币: 203
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢指点,确实是这样!
2010-7-31 22:46
0
游客
登录 | 注册 方可回帖
返回
//