首页
社区
课程
招聘
[求助]请教调用Dll的非导出函数方法,谢谢
发表于: 2010-2-1 19:54 7319

[求助]请教调用Dll的非导出函数方法,谢谢

2010-2-1 19:54
7319
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
它没有导出的话你就需要想办法得到它的地址了。
用dll的基址+函数入口的偏移应该是比较方便的方法
2010-2-1 20:34
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
知道函数地址和参数
不知道怎么调用
感谢指点
2010-2-2 12:41
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
参考API  CallProAddress
2010-2-2 13:15
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
GetProcAddress是要求Dll函数导出的
------------------------------------------------------------------------------------------------
显式链接到 DLL 的进程调用 GetProcAddress 来获取 DLL 导出函数的地址。使用返回的函数指针调用 DLL 函数。GetProcAddress 将(由 LoadLibrary、AfxLoadLibrary 或 GetModuleHandle 返回的)DLL 模块句柄和要调用的函数名或函数的导出序号用作参数。
2010-2-2 20:16
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
知道了还不能直接call吗?
2010-2-2 21:59
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
push 0
push 0
push 0
call 123456789
2010-2-3 12:22
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
ok
明白了

asm
{
  push xxx
  push xxx
  call  yyy
}

我是想问是否有c/C++的写法
2010-2-3 12:53
0
雪    币: 1052
活跃值: (1248)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
申明 函数指针类型
把 yyy定义成 对应的函数指针, 就可以了
2010-2-3 14:18
0
雪    币: 218
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
.
.
.
HINSTANCE hDLL;               // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer
DWORD dwParam1;
UINT  uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
   lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
                                           "DLLFunc1");
   if (!lpfnDllFunc1)
   {
      // handle the error
      FreeLibrary(hDLL);      
      return SOME_ERROR_CODE;
   }
   else
   {
      // call the function
      uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
   }
}

MSDN 中关于 GetProcAddress 的示例,可参考其中函数指针的写法(此例不是为了说明如何获取DLL导出函数的地址,而是说明如何定义函数指针以C/C++方式编码)。

另外,新手有一点不太明白,如果需要,在 lpfnDllFunc1 函数调用之后用什么非内联汇编语句或者约定编译指令进行堆栈平衡?
2010-5-15 20:54
0
游客
登录 | 注册 方可回帖
返回
//