aboutsummaryrefslogtreecommitdiff
path: root/SMSSBSOD/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'SMSSBSOD/README.md')
-rw-r--r--SMSSBSOD/README.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/SMSSBSOD/README.md b/SMSSBSOD/README.md
new file mode 100644
index 0000000..321ed8f
--- /dev/null
+++ b/SMSSBSOD/README.md
@@ -0,0 +1,17 @@
+今天奇观了:用 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/