diff options
author | Trumeet <yuuta@yuuta.moe> | 2022-09-24 23:11:41 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2022-09-24 23:11:41 -0700 |
commit | d68e844f8e97fab05588fdfed0535c492e4b6ed0 (patch) | |
tree | ee982f5171a74b68a7dd2d9407c371816673efcb /SMSSBSOD/README.md | |
parent | 9a94822c314fa8324efb65ffc821fe6fbd607a3f (diff) | |
download | gists-d68e844f8e97fab05588fdfed0535c492e4b6ed0.tar gists-d68e844f8e97fab05588fdfed0535c492e4b6ed0.tar.gz gists-d68e844f8e97fab05588fdfed0535c492e4b6ed0.tar.bz2 gists-d68e844f8e97fab05588fdfed0535c492e4b6ed0.zip |
Add SMSSBSOD
Diffstat (limited to 'SMSSBSOD/README.md')
-rw-r--r-- | SMSSBSOD/README.md | 17 |
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/ |