转载exe文件是成功的,但是获取不到函数地址//Crackme0x03.exe
#include <stdio.h>
#include <windows.h>_declspec(dllexport) int Demo()
{
#define PASSWORD_SIZE 100
#define PASSWORD "myGOODpassword\n" int count=0;
char buff[PASSWORD_SIZE]=""; for(;;)
{
       printf("Enter password:");
   fgets(&buff[0],PASSWORD_SIZE-1,stdin);    if(strcmp(&buff[0],PASSWORD))
   printf("Wrong password\n");
   else
   break;    if(++count>2) return -1;
}
printf("password ok\n");

return 1;
}void main()
{
  HINSTANCE hmod;
  int(*zzz)();  hmod=LoadLibrary("Crackme0x03.exe");
if(hmod)
{
  zzz=(int(*)())GetProcAddress(hmod,"fnDemo");
  if(zzz)
     zzz();
}
}

解决方案 »

  1.   

    定义一个fnDemo的函数指针
    然后GetProcAddress获得函数地址,直接给函数指针
      

  2.   

    源程序打错了:
    但是改正之后,仍然获取不了Demo函数的地址阿!typedef int (WINAPI *MYFUNC)();
    MYFUNC zzz;
    我定义了Demo指针之后
    zzz=(MYFUNC)GetProcAddress(hmod,"Demo");
      

  3.   

    你用depend看看你那个exe文件输出函数名称是什么,如果不同,拷贝下来,按照那个名称来GetProcAddress
      

  4.   

    This function returns the address of the specified exported DLL function. FARPROC GetProcAddress( 
      HMODULE hModule, 
      LPCWSTR lpProcName
    );
      

  5.   

    检查函数参数等类型是否正确,函数名是否与dll中的一致
      

  6.   

    是不是你调用的函数名字和exe中的不一样?
    用autoblue(小城)说的的方法看看....
      

  7.   

    写一个a.def文件加到你的工程中去
    文件内容如下:
    LIBRARY   你的dll文件名
    EXPORTS
       Demo   @1
      

  8.   

    源程序打错了:
    但是改正之后,仍然获取不了Demo函数的地址阿!typedef int (WINAPI *MYFUNC)();
    MYFUNC zzz;
    我定义了Demo指针之后
    zzz=(MYFUNC)GetProcAddress(hmod,"Demo");你的Crackme0x03.exe有和你定义的指针相应的函数吗?
      

  9.   

    关注,我试图使用GetprocAddress函数来使别人的 APIHOOK 失效,但是结果非常让人失望
      

  10.   

    查看Crackme0x03.exe的导出函数表。名字要完全一致