今天奇观了:用 NT API RtlCreateUserProcess 在 Win32 进程中启动了一个 Subsystem 为 Native 的进程(即,PE+ Subsystem = Native,入口点为 NtProcessStartup。smss.exe 就是这样一个程序,它是 Windows 第一个用户态进程,由它启动其他进程再启动 Win32 subsystem。感兴趣可以看下面参考文献 [0] 以及 ReactOS 相关代码。) 正常调用 Win32 CreateProcess 来跑 Native 二进制会报错,试试看 autochk.exe。 然后今天看了一篇文章(参考文献 [1]),发现可以通过 RtlCreateUserProcess 直接跑 Native 二进制,于是试了一下成功了(不懂 Windows 开发,但目测 CreateProcess 或许是一个 Win32 的 RtlCreateUserProcess Wrapper,会检查 Subsystem 是不是 Win32 之类的)。 于是我跑了一下 smss.exe,发现会 BSOD,100% 复现,错误码为 0x000021a。 其实能跑是情理之中的,但会导致 BSOD 却是意外的。欢迎大家自行测试。 另外,NT 开进程的这套 API,和 Fuchsia 好像啊(小声 Windows 版本为 21H2 (OS Build 19044.2006)。 参考文献: [0]: https://learn.microsoft.com/en-us/sysinternals/resources/inside-native-applications [1]: http://www.rohitab.com/discuss/topic/41379-running-native-applications-with-rtlcreateuserprocess/