Python内でRAW関数ポインタを呼び出すことは可能ですか?
例えば:
ctypes.windll.kernel32.GetModuleHandleA(None)
API を呼び出すと、Python は DLL + 関数ポインターを解決して機能させます。しかし、たとえば 0xDEADBEEF (関数ヘッダーに対応) などの生の関数ポインターがある場合、この生のポインターを渡す関数インスタンスを作成するにはどうすればよいですか?
コンパイルされた実行可能ファイルにあるため、関数をエクスポートすることはできませんが、次のようなことができるようにしたいと考えています。
明確にするために... C ++では、次のような方法でRAW関数を呼び出すことができます:
#define myfunction ((void(*)(int a, int b, int c)) 0x00402383)
myfunction(1, 2, 3);
私はPythonで似たようなものを作りたかったのですが、おそらくctypesライブラリを使用していますか? ライブラリ内を掘り下げましたが、関数インスタンスを初期化する方法が見つかりませんでした。
ノート:
- Python エンジンは DLL 内に組み込まれています。
- 関数アドレスを呼び出したいプロセスに DLL を挿入します。