RT,请问高手帮忙具体分析下这句话,不胜感激。

解决方案 »

  1.   

    将0x1900作为一个函数指针(函数原形为void foo()),然后调用之。假设存在这么一个0x1900的函数入口地址。
      

  2.   

    本帖最后由 caozhy 于 2012-06-30 18:54:17 编辑
      

  3.   


    额,感谢4,5楼的回答,我明白这句话的用途,但具体的不太明白能具体说下两个void的用途么非常感谢
      

  4.   

    前面的 void 表示无返回值,后面表示无参数
    void foo(void)
    {
        printf("Hello World!\n");
    }
      

  5.   

    简单的说相当于c#里的委托。
    代码改了一下。你看看。// err.cpp : 定义控制台应用程序的入口点。
    //#include "stdafx.h"void foo()
    {
    printf("Hello World!\n");
    }void * fooadd=&foo;int _tmain(int argc, _TCHAR* argv[])
    {    
    int pfn = (int)&foo;
    printf("%d\r\n", pfn); (*(void(*)(void))pfn)(); /* 等价 foo(); */
    printf("fooadd=%d\r\n",fooadd);
    (*(void(*)(void))4264186)(); /* 等价 foo(); */
    getchar();
    return 0;
    }
      

  6.   

    void * fooadd=&foo;是取函数在dll中的地址。
    (*(void(*)(void))4264186)();这样都是相当于调用那个函数。