“LogonUI.exe系統(tǒng)錯(cuò)誤,系統(tǒng)在此應(yīng)用程序中檢測(cè)到基于堆棧的緩沖區(qū)溢出”的解決思路
今天某網(wǎng)友電腦上遇到了這樣一個(gè)問(wèn)題:
一開(kāi)始是BAD_SYSTEM_CONFIG_INFO藍(lán)屏,重啟后開(kāi)機(jī)自動(dòng)修復(fù)。參考我的視頻 “開(kāi)機(jī)藍(lán)屏代碼BAD SYSTEM CONFIG INFO問(wèn)題的解決思路” 置頂評(píng)論的代碼,檢測(cè)出是security文件損壞。

收到損壞的security文件,花了點(diǎn)時(shí)間修復(fù)好發(fā)回去,替換后開(kāi)機(jī)又遇到了新問(wèn)題:


LogonUI.exe系統(tǒng)錯(cuò)誤
系統(tǒng)在此應(yīng)用程序中檢測(cè)到基于堆棧的緩沖區(qū)溢出。溢出可能允許惡意用戶獲得此應(yīng)用程序的控制。
嘗試進(jìn)安全模式也是同樣的錯(cuò)誤。
懷疑security損壞嚴(yán)重沒(méi)修復(fù)成功,于是導(dǎo)出虛擬機(jī)security文件里“系統(tǒng)相關(guān)”部分的reg注冊(cè)表,導(dǎo)入替換修復(fù)過(guò)的security文件。再把替換后的security文件覆蓋虛擬機(jī)的security文件,虛擬機(jī)能正常啟動(dòng)進(jìn)桌面,說(shuō)明修復(fù)的security文件應(yīng)該不存在問(wèn)題。
讓網(wǎng)友傳了C:\Windows\System32\winevt\Logs里的application.evtx和system.evtx。

可以看到在security損壞前就已經(jīng)遇到LogonUI.exe系統(tǒng)錯(cuò)誤問(wèn)題。詢問(wèn)網(wǎng)友得知,出現(xiàn)BAD_SYSTEM_CONFIG_INFO前,上一個(gè)月系統(tǒng)更新后開(kāi)始頻繁藍(lán)屏,有時(shí)候需要重復(fù)啟動(dòng)才能進(jìn)系統(tǒng)。
于是用dism++查看補(bǔ)丁,沒(méi)有發(fā)現(xiàn)疑似相關(guān)的補(bǔ)丁。3月9日凌晨才出現(xiàn)的問(wèn)題,前一天3月8日只有一個(gè).net的補(bǔ)丁,應(yīng)該無(wú)關(guān),卸載這補(bǔ)丁估計(jì)也解決不了問(wèn)題。至于上個(gè)月的補(bǔ)丁固化了卸載不了。

于是建議執(zhí)行這些命令:
假設(shè)恢復(fù)環(huán)境或PE里系統(tǒng)盤(pán)是C盤(pán),則執(zhí)行“chkdsk /r c:”,/f參數(shù)很多時(shí)候不管用。
命令執(zhí)行完了,重啟問(wèn)題依舊。
執(zhí)行mdsched檢查內(nèi)存。執(zhí)行到一半沒(méi)發(fā)現(xiàn)錯(cuò)誤,得知故障電腦出問(wèn)題后裝上別人帶系統(tǒng)的硬盤(pán)能正常進(jìn)系統(tǒng),于是中斷檢測(cè),暫時(shí)排除內(nèi)存問(wèn)題。
排除了硬盤(pán)和內(nèi)存問(wèn)題,問(wèn)過(guò)網(wǎng)友出問(wèn)題前沒(méi)有用msconfig,沒(méi)有禁用過(guò)什么服務(wù)。于是建議命令提示符里用sfc檢測(cè)并修復(fù)系統(tǒng)文件。
跟系統(tǒng)里執(zhí)行sfc /scannow不一樣,PE或恢復(fù)環(huán)境里修復(fù)要加參數(shù):
?sfc /SCANNOW /OFFBOOTDIR=C:\? /OFFWINDIR=C:\windows

提示找到了損壞文件,但是有一些文件無(wú)法修復(fù)。描述里提到的log文件并不存在,想生成log文件需要另加參數(shù)。
sfc /SCANNOW /OFFBOOTDIR=C:\? /OFFWINDIR=C:\windows /OFFLOGFILE=c:\cbs.log
執(zhí)行完命令查看cbs.log日志:

可以看到損壞了一堆文件。詢問(wèn)了網(wǎng)友系統(tǒng)版本,以及通過(guò)cbs\cbs.log日志得知版本號(hào),剛好跟我電腦一致,可以從我電腦提取損壞文件修復(fù)。
將上面findstr篩選的字符串輸出到文本,用EmEditor替換文本,用正則表達(dá)式替換去掉無(wú)關(guān)內(nèi)容只保留路徑,再根據(jù)路徑制作批處理從本機(jī)提取出正常的文件。
把提取的文件復(fù)制進(jìn)虛擬機(jī)替換測(cè)試,在確定替換后不影響正常進(jìn)系統(tǒng)時(shí)就把文件發(fā)給網(wǎng)友。
因?yàn)槠陂g漏掉了一些文件,重復(fù)兩次后損壞文件替換完畢,正常進(jìn)入系統(tǒng)!

最后一次替換的文件如下:

至于具體是哪個(gè)文件損壞導(dǎo)致的就懶得深究了,感興趣的可以自己研究。比如用sysmon監(jiān)控logonui.exe開(kāi)機(jī)加載和讀取的文件。