7
A
答えて
11
RunDll32は、LoadLibrary
を呼び出して指定されたDLLをロードし、GetProcAddress
を呼び出して目的の関数の関数アドレスを取得し、その関数を呼び出します。これは、DLL内のちょうど任意のエクスポートされた関数を呼び出すことはできません
、しかし、それは関数は、以下の非常に特定の機能シグネチャを有していることを前提としています
CALLBACK
は、に展開マクロある
void CALLBACK
EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
__stdcall
呼び出し規約。詳細な説明については、this knowledge base articleを参照してください。
DLLの関数に正しいシグネチャまたは呼び出し規約がない場合、多くの不具合が発生します。詳細については、What can go wrong when you mismatch the calling convention?を参照してください。幸いにも(または残念なことに)RunDll32 is written in such a way to ameliorate those types of errorsですが、それでも良いアイデアだとは限りません。 正しい署名を持たない関数を呼び出すためにRunDll32を使用しないでください。それはちょうど次のバージョンのWindowsで出かけるのを待っている時を刻む時間爆弾だ。
2
関数を呼び出すことはできません。関数specifically written to be calledしか呼び出せません。したがって、魔法はありません。
関連する問題
- 1. dropbox.comの複数のファイルアップロード機能はどのように機能しますか?
- 2. JQueryのdatepickerのポップアップ機能はどのように機能しますか?
- 3. jqueryのshow/hide機能はどのように機能しますか?
- 4. 機能の削減はどのように機能しますか?
- 5. セッターテンプレートのライブライブテンプレート機能はどのように機能しますか?
- 6. Facebookのリンク機能はどのように機能しますか?
- 7. Pythonの "all"機能はどのように機能しますか?
- 8. 豚の置換機能はどのように機能しますか?
- 9. JavaScriptのパワー機能はどのように機能しますか?
- 10. Readerモナドの「質問」機能はどのように機能しますか?
- 11. この機能割り当てはどのように機能しますか?
- 12. Safariのリーダー機能はどのように機能しますか?
- 13. AddImplicitRequiredAttributeForValueTypesが実際にどのように機能し、どのように機能していますか?ここ
- 14. Node.jsでは、イベントループはどのように機能しますか?
- 15. reduceLeftで型推論機能はどのように機能しますか?
- 16. ポーリング機能はどのようにcで機能しますか?
- 17. JavaScript []は本当にどのように機能しますか?
- 18. ブートストラップグリッドは実際にどのように機能しますか?
- 19. WPAは実際にどのように機能しますか?
- 20. UpdatePanelは実際にどのように機能しますか?
- 21. このPythonコードはどのように機能しますか?
- 22. NSObjectの継承はどのように機能しますか?
- 23. surfaceflingerのインターフェースはどのように機能しますか?
- 24. このコードはどのように機能しますか? [HARD]
- 25. WPFのNameScopeはどのように機能しますか?
- 26. Androidのスキャナはどのように機能しますか?
- 27. WebAudio:setTargetAtTimeのtimeConstantはどのように機能しますか?
- 28. このJSコピートリックはどのように機能しますか?
- 29. Objective Cのallocはどのように機能しますか?
- 30. Raspberry Piのブートローダはどのように機能しますか?
User32.dll内のSwapMouseButtonは、「magic」が関与する関数の1つの例です。この種の魔法についてはその回答の中で説明しています:http://stackoverflow.com/a/30285986/832220 –
PowrProf.dllの中のSetSuspendStateがこの種の魔法の別の例として使われています。 rundll32.exe PowrProf.dll、SetSuspendState –
User32.dll内のLockWorkStationは、rundll32.exeが呼び出し可能な関数の別の例に過ぎません。コマンドラインは次のとおりです。rundll32.exe User32.dll、LockWorkStation –