使用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函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是群发单显和分别发送,有什么区别,发
- 下一篇: AtCoder Beginner Con