从Windows子系统为Linux进程调用Win32/NT-Native API



如何从Windows Subsystem for Linux(WSL)中的Linux二进制文件调用Windows API函数?我很确定没有记录在案的方法可以做到这一点,但尽管如此,尝试一下可能会很有趣。

我对调用Win32函数感兴趣,如果不可能的话,至少调用Windows NT本机API(NT*,Zw*)。本机API至少应该是可用的,因为运行Linux进程(lxss)的组件依赖于这些API。

可能需要构建一个类似LoadLibrary的自定义函数来加载windows DLL。另一个想法是在进程内存中搜索已知的内核函数(即它们的用户模式入口点)。

有没有人尝试过这种方法,并想分享一个解决方案?

简而言之,你做不到。

运行Linux进程的实际进程不是Win32进程,无法加载和执行Win32用户模式代码,也无法调用标准的Win32 NT内核入口点。

有关WSL使用的PicoProcess基础设施的更多信息,请阅读本博客和/或观看随附的视频。

如果您确实想从WSL内部运行的代码中"调用"Windows代码,您可能需要考虑使用某种形式的套接字/消息传递/RPC/REST调用技术,其中关系的另一端/两端可以侦听并响应通过某种网络/套接字/管道携带的消息。

相关内容

  • 没有找到相关文章

最新更新