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. logstash kv {}機能はどのように機能しますか?
- 2. WatchKit:ディクテーション機能はどのように機能しますか?
- 3. 機能はどのように機能しますか?
- 4. $ watchのコール機能は一度にどのように機能しますか?
- 5. array_udiff()、array_uintersect()などはどのように機能しますか?
- 6. OpenLayers.Control.Scale.template - それはどのように機能し、全く機能しますか?
- 7. マップ機能はReact.jsではどのように機能しますか?
- 8. Schemeではコレクタ機能はどのように機能しますか?
- 9. dropbox.comの複数のファイルアップロード機能はどのように機能しますか?
- 10. JQueryのdatepickerのポップアップ機能はどのように機能しますか?
- 11. この機能割り当てはどのように機能しますか?
- 12. セッターテンプレートのライブライブテンプレート機能はどのように機能しますか?
- 13. Facebookのリンク機能はどのように機能しますか?
- 14. このソート機能はどのように機能しますか?
- 15. Solrのスケール機能はどのように機能しますか?
- 16. この単語置換機能はどのように機能しますか?
- 17. この機能はどのように機能しますか? char * getname(); C++
- 18. ソケットioの発光機能はどのように機能しますか?
- 19. 豚の置換機能はどのように機能しますか?
- 20. Readerモナドの「質問」機能はどのように機能しますか?
- 21. 機能の削減はどのように機能しますか?
- 22. jqueryのshow/hide機能はどのように機能しますか?
- 23. Pythonの "all"機能はどのように機能しますか?
- 24. このトランスポーズ機能はどのように機能しますか?
- 25. Aureliaの機能とルーティングはどのように機能しますか?
- 26. Safariのリーダー機能はどのように機能しますか?
- 27. JavaScriptのパワー機能はどのように機能しますか?
- 28. Kotlinの拡張機能はどのように機能しますか?
- 29. <*>の機能はどのように機能しますか?
- 30. 参照渡しはどのように機能しますか?
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 –