WindowsサブシステムのLinux(WSL)内のLinuxバイナリからWindows API関数を呼び出すにはどうすればよいですか?私は確かに文書化された方法はないと確信していますが、それでもやってみると面白いかもしれません。LinuxプロセスのWindowsサブシステムからWin32/NT-Native APIを呼び出しますか?
私はWin32関数を呼び出すことに興味がありますか、それができない場合、少なくともWindows NTネイティブAPI(Nt *、Zw *)に興味があります。 Linuxプロセス(lxss)を実行するコンポーネントはこれらのAPIに依存するため、ネイティブAPIはごくわずかしか使用できません。
Windows DLLを読み込むカスタムLoadLibraryライクな関数を構築する必要があります。もう1つの考え方は、既知のカーネル関数(つまり、ユーザーモードエントリポイント)をプロセスメモリで検索することです。
誰もがこれを実験して解決策を共有したいと思いますか?
このプレゼンテーション - https://github.com/ionescu007/lxss/blob/master/The%20Linux%20kernel%20hidden%20inside%20windows%2010.pdf - (少なくとも私には)Linuxプロセスがそうであることを示唆しています。 -called picoは、アドレス空間にマップされていないntdllを処理しました。また、すべてのシステムコールはWSL用のピコプロセスプロバイダによって処理されます(私はそれらが異なるシステムサービスディスパッチテーブルを使用するだけなので、NTシステムコールはユーザスペースから到達できません)。 –