ïýòðрь - Xakep Online
ïýòðрь - Xakep Online
ïýòðрь - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ÊÎÄÈÍÃ<br />
ASSEMBLER<br />
TEXT ÊÐÈÑ ÊÀÑÏÅÐÑÊÈ<br />
& ÆÈÐÍÛÉ ÕÎÌßÊ<br />
ÆÈÇÍÜ<br />
ÏÎÑËÅ BSOD<br />
Ñ ÏÎÌÎÙÜÞ ÎÒËÀÄ×ÈÊÀ<br />
È ÀÑÑÅÌÁËÅÐÀ ÇÀÑÒÀÂÈÌ<br />
ÑÈÑÒÅÌÓ ÏÅÐÅÆÈÒÜ ÃÎËÓÁÎÉ<br />
ÝÊÐÀÍ ÑÌÅÐÒÈ<br />
“<br />
ÂÑÅ ÏÐÅÊÐÀÑÍÎ ÇÍÀÞÒ, ×ÒÎ<br />
ÎÇÍÀ×ÀÅÒ BSOD (BLUE SCREEN OF<br />
DEATH). ÝÒÎ ÏÎÑËÅÄÍÈÉ ÂÇÄÎÕ<br />
ÎÏÅÐÀÖÈÎÍÍÎÉ ÑÈÑÒÅÌÛ, ÏÎÑ-<br />
ËÅ ÊÎÒÎÐÎÃÎ ÎÍÀ ÑÁÐÀÑÛÂÀÅÒ<br />
ÄÀÌÏ È ÓÕÎÄÈÒ ÍÀ ÏÅÐÅÇÀÃÐÓÇÊÓ,<br />
ÒÅÐßß ÂÑÅ ÍÅÑÎÕÐÀÍÅÍÍÛÅ ÄÀÍ-<br />
ÍÛÅ. ÎÄÍÀÊÎ ÍÀ ÑÀÌÎÌ ÄÅËÅ<br />
BSOD — ÅÙÅ ÍÅ ÊÎÍÅÖ, È ÅÑËÈ ÏÅ-<br />
ÐÅÇÀÃÐÓÇÊÓ ÇÀÌÅÍÈÒÜ ÐÅÀÍÈÌÀ-<br />
ÖÈÅÉ, ÒÎ Â 9 ÈÇ 10 ÑËÓ×ÀÅ ÌÎÆ-<br />
ÍÎ ÂÎÇÂÐÀÒÈÒÜÑß Â ÍÎÐÌÀËÜ-<br />
ÍÛÉ ÐÅÆÈÌ È ÓÑÏÅÒÜ ÇÀØÀÒÄÀÓ-<br />
ÍÈÒÜ ÑÈÑÒÅÌÓ ÏÅÐÅÄ ÒÅÌ, ÊÀÊ<br />
ÎÍÀ ÓÌÐÅÒ ÎÊÎÍ×ÀÒÅËÜÍÎ<br />
”<br />
Ñèíèé ýêðàí ïîÿâëÿåòñÿ âñÿêèé ðàç, êîãäà ÿäðî<br />
âîçáóæäàåò íåîáðàáàòûâàåìîå èñêëþ÷åíèå<br />
(ñêàæåì, îáðàùåíèå ïî íóëåâîìó óêàçàòåëþ)<br />
èëè îòëàâëèâàåò çàâåäîìî ëåâóþ îïåðàöèþ<br />
(îñâîáîæäåíèå óæå îñâîáîæäåííîé ïàìÿòè,<br />
íàïðèìåð). Âî âñåõ ýòèõ ñëó÷àÿõ óïðàâëåíèå<br />
ïåðåäàåòñÿ ôóíêöèè KeBugCheckEx, îïèñàíèå<br />
êîòîðîé ìîæíî íàéòè â NT DDK. Îíà çàâåðøàåò<br />
ðàáîòó ñèñòåìû â àâàðèéíîì ðåæèìå,<br />
ïðè íåîáõîäèìîñòè ñáðàñûâàÿ äàìï ïàìÿòè,<br />
ïîêîâûðÿâøèñü â êîòîðîì, ìîæíî îïðåäåëèòü<br />
ïðè÷èíó ñáîÿ.<br />
Ôóíêöèÿ KeBugCheckEx ïðèíèìàåò ÷åòûðå àðãóìåíòà,<br />
âàæíåéøèì èç êîòîðûõ ÿâëÿåòñÿ<br />
BugCheckCode, îïðåäåëÿþùèé ïðè÷èíó ñáîÿ.<br />
Âñåãî ñóùåñòâóåò ñâûøå ñîòíè êîäîâ îøèáîê,<br />
äîêóìåíòèðîâàííûõ â DDK (èùè èõ â ðóêîâîäñòâå<br />
ïî îòëàä÷èêó Using Microsoft Debugger),<br />
îäíàêî â äåéñòâèòåëüíîñòè èõ íàìíîãî áîëüøå.<br />
Äèçàññåìáëèðîâàíèå ÿäðà W2K SP2 ïîêàçûâàåò,<br />
÷òî KeBugCheckEx âûçûâàåòñÿ èç 387<br />
ìåñò (ñ ðàçëè÷íûìè ïàðàìåòðàìè).<br />
Ðàçóìååòñÿ, íå âñå îøèáêè îäèíàêîâû ïî<br />
ñâîåé ôàòàëüíîñòè. Â ìíîãîÿäåðíûõ îñÿõ<br />
ýòî âîîáùå íå ïðîáëåìà. Ïàäåíèå îäíîãî ÿäðà<br />
íå çàòðàãèâàåò äðóãèõ. Âñå ÿäðà ðàáîòàþò<br />
â ðàçäåëüíûõ àäðåñíûõ ïðîñòðàíñòâàõ è ÷àñòè÷íî<br />
èëè ïîëíîñòüþ èçîëèðîâàíû äðóã îò<br />
äðóãà. Ðàçðóøèòü òàêóþ ñèñòåìó î÷åíü òðóäíî,<br />
ìíîãîÿäåðíàÿ àðõèòåêòóðà ÷ðåçâû÷àéíî<br />
óñòîé÷èâà ê ñáîÿì, íî… êàê æå ïðè ýòîì îíà<br />
òîðìîçèò! Ìåæúÿäåðíûé îáìåí ñúåäàåò óéìó<br />
ïðîöåññîðíîãî âðåìåíè. Åñëè çàïèõàòü âñå<br />
êîìïîíåíòû â îäíî ÿäðî, òî ìû ïîëó÷èì ìîíîëèòíîå<br />
ÿäðî ïî òèïó Linux (÷òî, êñòàòè ãîâîðÿ,<br />
ÿâèëîñü ïðè÷èíîé ÿðîñòíîé êðèòèêè ïîñëåäíåãî<br />
ñî ñòîðîíû ìíîãèõ òåîðåòèêîâ).<br />
 Linux, êàê è â BSD, âñå êîìïîíåíòû ÿäðà<br />
(òàì îíè íàçûâàþòñÿ ìîäóëÿìè) èñïîëíÿþòñÿ<br />
â åäèíîì àäðåñíîì ïðîñòðàíñòâå, è íåêîððåêòíî<br />
íàïèñàííûé ìîäóëü ìîæåò íåïðåäíàìåðåííî<br />
èëè óìûøëåííî íàäðóãàòüñÿ íàä ÷óæîé<br />
ñîáñòâåííîñòüþ (ïðåâðàòèòü äàííûå â<br />
âèíåãðåò, íàïðèìåð). Ýòî ôàêò! Îäíàêî ïðè<br />
âîçíèêíîâåíèè íåîáðàáàòûâàåìîãî èñêëþ-<br />
÷åíèÿ â ÿäðå, Linux ãðîõàåò òîëüêî òîò ìîäóëü,<br />
êîòîðûé ýòî èñêëþ÷åíèå è ïîðîäèë, íå<br />
òðîãàÿ âñå îñòàëüíûå. Àâàðèéíûé îñòàíîâ<br />
ñèñòåìû ïðîèñõîäèò òîëüêî ïî ñåðüåçíîìó<br />
ïîâîäó, êîãäà ðóøèòñÿ ÷òî-òî î÷åíü ôóíäàìåíòàëüíîå,<br />
äåëàþùåå äàëüíåéøóþ ðàáîòó<br />
ÿäðà äåéñòâèòåëüíî íåâîçìîæíîé. Êîíå÷íî,<br />
åñëè ïîëåòåë äðàéâåð æåñòêîãî äèñêà, — ýòî<br />
êðàíòû, íî âîò, íàïðèìåð, áåç äðàéâåðà çâóêîâîé<br />
êàðòû ìîæíî êàêîå-òî âðåìÿ è îáîéòèñü,<br />
ñîõðàíèâ âñå íåñîõðàíåííûå äàííûå, è<br />
òîëüêî ïîòîì ïåðåçàãðóçèòüñÿ.<br />
Îïåðàöèîííûå ñèñòåìû ñåìåéñòâà NT èñïîëüçóþò<br />
ãèáðèäíóþ àðõèòåêòóðó, ñî÷åòàþùóþ<br />
ñèëüíûå ñòîðîíû ìîíîëèòíûõ è ìèêðîÿäåð,<br />
÷òî òåîðåòè÷åñêè äîëæíî îáåñïå÷èòü<br />
ïðåâîñõîäñòâî íàä ìîíîëèòíûì Linux'îì<br />
(êñòàòè ãîâîðÿ, ýêñïåðèìåíòàëüíîå ÿäðî<br />
GNU/HURD ïîñòðîåíî êàê ðàç ïî ìèêðîÿäåðíîé<br />
àðõèòåêòóðå). Ëåãåíäàðíî óñòîé÷èâóþ<br />
NT/XP, êîòîðóþ, êàê ãîâîðÿò, ìîæíî óðîíèòü<br />
òîëüêî âìåñòå ñ ñåðâåðîì, íà ñàìîì äåëå<br />
î÷åíü ëåãêî âîãíàòü â ãîëóáîé ýêðàí. Äîñòàòî÷íî<br />
ëþáîìó äðàéâåðó ñäåëàòü ÷òî-òî íåäîçâîëåííîå,<br />
êàê ñèñòåìà àâòîìàòè÷åñêè êàòàïóëüòèðóåò<br />
ïîëüçîâàòåëÿ. Õîðîøî, ÷òî<br />
Microsoft íå ñòðîèò àâèàëàéíåðû!<br />
Åñëè áû ìîæíî áûëî ïåðåñåñòü íà HURD! Íî,<br />
óâû, ñîâìåñòèìîñòü íå äàåò. Âöåïèëàñü çóáàìè<br />
è íå ïóñêàåò! Äàëåêî íå êàæäûé ìîæåò áåçáîëåçíåííî<br />
îòêàçàòüñÿ îò ñâîåé ëþáèìîé NT.<br />
Òàê ÷òî íå áóäåì ñåòîâàòü íà íåèçáåæíîñòü<br />
ñóäüáû, à ëó÷øå âîçüìåì â ðóêè àññåìáëåð è<br />
ïîïûòàåìñÿ ÷òî-íèáóäü òàêîå íàïèñàòü. ×òîíèáóäü<br />
òàêîå, ÷òî ðåøèò âñå íàøè ïðîáëåìû<br />
(çàêîïàòü Áèëëà Ãåéòñà íà 640 Êá íèæå àñôàëüòà<br />
— íå ïðåäëàãàòü).<br />
×ÅÌ ÌÛ ÁÓÄÅÌ ÇÀÍÈÌÀÒÜÑß<br />
Àâàðèéíî çàâåðøèòü ðàáîòó ñèñòåìû, âûáðîñèâ<br />
ñèíèé ýêðàí, — ñàìîå ïðîñòîå, ÷òî<br />
òîëüêî ìîæíî ñäåëàòü ïðè êðàõå ñèñòåìû.<br />
Microsoft íåñïðîñòà ïîøëà ïî ïóòè íàèìåíüøåãî<br />
ñîïðîòèâëåíèÿ. Ìû æå ïîêàæåì, êàê<br />
âûéòè èç ãîëóáîãî ýêðàíà â íîðìàëüíûé ðåæèì,<br />
÷òîáû óñïåòü ñîõðàíèòü âñå äàííûå<br />
åùå äî òîãî, êàê ñèñòåìà ðóõíåò îêîí÷àòåëüíî.<br />
Ýòî äîâîëüíî ðèñêîâàííûé òðþê. Â ñëó-<br />
÷àå ïðîâàëà ìû ìîæåì ïîòåðÿòü âñå, äàæå<br />
íàø äèñêîâûé òîì, êîòîðûé ïîòîì ïðèäåòñÿ<br />
î÷åíü äîëãî âîññòàíàâëèâàòü.<br />
Èíîãäà SoftICE îñòàíàâëèâàåòñÿ íå<br />
íà ïåðâîé êîìàíäå îáðàáîò÷èêà<br />
èñêëþ÷åíèé, à íåïîñðåäñòâåííî<br />
íà ìåñòå ñàìîãî ñáîÿ. Ïîä VM Ware<br />
ïåðâûé ðàç SoftICE 2.6 âñåãäà<br />
îñòàíàâëèâàåòñÿ â îáðàáîò÷èêå,<br />
à âî âñåõ ïîñëåäóþùèõ ñëó÷àÿõ —<br />
íà ìåñòå ñáîÿ. Ýôôåêò ñîõðàíÿåòñÿ<br />
âïëîòü äî ïåðåçàïóñêà VM Ware.<br />
114 XÀÊÅÐ 01 /85/ 06