使用Rundll32运行DLL中的函数

标签: , ,

Windows系统中包含名为Rundll32.exe的命令行实用程序,通过这个程序可调用DLL中导出的函数。

但是,使用Rundll32.exe程序并不能调用从任何DLL导出的任何函数。Rundll32只能调用使用以下原型编写 <entrypoint> 函数:

void CALLBACK
EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

Rundll32执行以下步骤:

  1. 它分析命令行。
  2. 它通过 LoadLibrary() 加载指定的 DLL。
  3. 它通过 GetProcAddress() 获取 <entrypoint> 函数的地址。
  4. 它调用 <entrypoint> 函数,并传递作为 <optional arguments> 的命令行尾。
  5. 当 <entrypoint> 函数返回时,Rundll.exe 将卸载 DLL 并退出。

参考链接:http://support.microsoft.com/kb/164787/zh-cn

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. 批处理技术内幕:Unicode
  2. 用VBS检测U盘插入和弹出事件(二)
  3. VBS获取重定向的URL
  4. C语言调用API获取程序自身的路径
  5. Python Proxy,快速、轻量级的HTTP代理服务器

留下回复