日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用rundll32.exe运行dll函数

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用rundll32.exe运行dll函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

rundll32 petya.dll, #1

該方法運行dll的第一個方法?


我們知道windows下dll是沒辦法獨立運行的,但是微軟提供了rundll32.exe用于運行dll。

先測試一下:運行“Rundll32.exe shell32.dll,RestartDialog”,會彈出重啟對話框。同樣這種方式可以打開windows系統其他功能。

下面看一下如何定義自己的dll讓rundll32.exe運行。

微軟給出的dll函數原型如下:

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

hwnd - window handle that should be used as the owner window forany windows your DLL createshinst - your DLL's instance handlelpszCmdLine - ASCIIZ command line your DLL should parsenCmdShow - describes how your DLL's windows should be displayed

自定義的測試dll如下:

extern "C" _declspec(dllexport) void __cdecl rundll32dllfun(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine,?

int nCmdShow)
{
MessageBox(NULL,"TEST",lpszCmdLine,MB_OK);
return;
}

生成動態庫rundll32dll.dll。

運行:

rundll32.exe "E:\demo\rudll32dll\Release\rudll32dll.dll",rundll32dllfun ? ? ?

彈出了熟悉的對話框,說明調用成功。

同時可以傳入參數,運行:

rundll32.exe "E:\demo\rudll32dll\Release\rudll32dll.dll",rundll32dllfun ?888 ??

彈出了對話框,并且888顯示了對話框上面,說明參數也可以傳遞了,其中參數在lpszCmdLine中獲取。

運行命令說明:rundll32.exe "xxx.dll",dllfun parameter

這樣我們就可以開發dll作為應用程序來運行了,在進程中只能看到rundll32.exe,需通過進程查看工具查看運行了哪個dll。


rundll32.exe在那里4位系統中的位置說明:

windows/system32/rundll32.exe對應調用64位dll

windows/SysWoW64/rundll32.exe對應調用32位dll

微軟給出的參考文章如下:http://support2.microsoft.com/kb/164787

總結

以上是生活随笔為你收集整理的使用rundll32.exe运行dll函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。