книги хакеры / журнал хакер / 113_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
C |
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
|
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
NOW! |
r |
|
|
|
|
|
NOW! |
r |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
to BUY |
|
|
|
|
|
|
|
>> ХАКЕР.PROto BUY |
|
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
m |
|
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
|
w Click |
|
|
|
|
|
o |
|||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
|
p |
df |
|
|
|
e |
|
|||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
g |
|
|
|
|||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
НастройкаWin2k3подвиртуаль- |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
ноймашинойVMWare |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Уровнипривилегий,поддерживаемыеядромNT(хорошо |
IRQL_LESS_OR_EQUAL—одинизсамыхчасто |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
заметно,чтоуровнипрерыванияотустройствнаходятсявыше |
встречающихсясинихэкранов,возникающийпри |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
уровнядиспетчеризации,накоторомработаетподкачка |
попыткеобращениякстранице,вытесненнойна |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
страницсдиска) |
дискнатомуровнепривилегий,накоторомподкачка |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
нефункциональна |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
info |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
• Подробное описание |
|
|
|
|
|
|
|||||
|
|
|
|
|
радиаторов, прокладка аэродинамических кабелей, |
Наиболее популярные BSOD’ы |
всех BSOD’ов вместе |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
уменьшение тактовых частот/увеличение таймингов |
и способы их устранения |
спричинамиихвозник- |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
вкупе с увеличением питающего напряжения (большин- |
Появлениемногоядерныхпроцессоровпоставилодрайверы |
новенияирекоменда- |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
ство BIOS это позволяют). Программным путем аппарат- |
«впозу»,кчемубольшинствоизнихоказалосьсовершенно |
циями по их предот- |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
ные глюки никак не исправишь (исключение составляет |
неготово.Синиеэкраныначаливспыхиватьсвероятностью, |
вращению можно |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
блокировка использования битых ячеек памяти, но с |
зависящейотчастотыпоступленияпрерыванийотаппарат- |
найти как в MSDN, так |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
учетом нынешних цен на память эти извращения неак- |
ныхустройств.Рассмотримвполнетипичнуюситуацию: |
и в DDK. Однако и то, |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
туальны). |
потокAвыполняетсянаядре IсIRQL=PASSIVE_LEVEL,в |
и другое, в первую оче- |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
Таким образом, в списке остались лишь драйвера/ |
товремякакпотокBвыполняетсянаядре IIстемжеIRQL. |
редь, ориентировано |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
rootkit’ы. Ну, rootkit’ы удаляем сразу («][акер» неод- |
УстройствоDevice 1посылаетядруIсигналпрерывания, |
на программистов, |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
нократно писал, как), а вот с драйверами проблема. |
котороеловитядрооперационки,повышаетIRQLпроцес- |
знающих ассемблер, |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
Хороших системных программистов очень мало, а фирм, |
сорногоядраIдоDIRQLипередаетуправлениенаобработку |
умеющих работать с |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
разрабатывающих железо — великое множество, вот и |
прерыванияустройства Device 1.Обработчиквыполняет |
отладчиком и готовых |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
приходится нанимать «мальчиков по объявлению», кле- |
первичнуюобработкуситуациииставитотложеннуюпро- |
часами разбирать |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
пающих драйверы в визуальных средах проектирования |
цедуруDpcForIsr() вочередьдлядальнейшейобработки. |
дампы памяти для |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
типа DriverStudio, а потом удивляющихся, почему они па- |
Приэтомфункциядобавляетсявочередьтогопроцессорного |
поиска ошибки в под- |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
дают. Исправление ошибок в драйвере — дело посильное |
ядра,накоторомзапущенобработчик(вданномслучае—это |
опытном драйвере. |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
(достаточно дружить с дизассемблером и отладчиком). |
ядроI). |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Нетрудно, конечно, скачать более свежую версию (в |
УстройствоDevice 1вновьгенерируетпрерывание,которое |
•Если кривой драйвер |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
надежде, что там хотя бы часть ошибок исправлена), но |
наэтотразпосылаетсяядруII,посколькуядроIещене |
при интенсивном пос- |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
лучше и надежнее переконфигурировать ядро опера- |
успеловыйтиизобработчикапрерыванияипонизитьIRQL. |
туплении прерываний |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
ционной системы, сделав его менее чувствительным к |
ОсьповышаетIRQLядраIIдоDIRQLипередаетуправление |
не справляется |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
ошибкам в драйверах. Чем мы сейчас, собственно говоря, |
обработчикупрерыванийустройстваDevice 1,который |
с синхронизацией |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
и займемся. |
ставитещеоднуотложеннуюпроцедуруDpcForIsr()в |
и обрушивает систему |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
очередьнавыполнениеядраII. |
в BSOD, то лучше |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рычаги управления ядром |
Наконец,обработчикипрерыванийнаобоихядрахзавер- |
поступиться произ- |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
Ядро поддерживает множество рычагов управления. Ниже |
шаются,осьпонижаетIRQL,иначинаетсявыполнение |
водительностью, чем |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
перечислены только основные из них. |
отложенныхпроцедур,стоящихвочередяхядраIиядраII. |
надежностью. |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
boot.ini. Файл boot.ini, который находится в корневом |
Врезультате,однаитажепроцедураDpcForIsr()наобоих |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
каталоге системного диска, принимает большое коли- |
ядрахисполняетсяодновременно,обрабатываясразудва |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
чество параметров, управляющих конфигурацией ядра. |
различныхпрерывания!Маленькаянебрежностькодиро- |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Параметры подробно описаны на MSDN: support.microsoft. |
ванияприводиткошибкамсинхронизации,вызывающим |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
com/kb/833721/ru (только документированные ключи) и |
каскадвторичныхошибокиспособнымгенерироватьдобрую |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
в статье Марка Руссиновича «Boot.ini options reference» на |
половинувсехсуществующихсинихэкранов. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
сайте www.ingenieroguzman.com.ar. |
Выход? |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Глобальные флаги. Ядро NT поддерживает так называ- |
Использоватьтолькоодноядро,игнорируявсеостальные, |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
емые «глобальные флаги», управляющие его поведением. |
длячегодостаточноуказатьключ/ONECPUили/NUMPROC=1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Задаются они с помощью утилиты gflags.exe, входящей |
вфайлеboot.ini.Конечно,этоснизитпроизводительность, |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
в комплект поставки «Support Tools», и в DDK, который |
ноесликривойдрайверприинтенсивномпоступлении |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
можно бесплатно скачать с сайта Microsoft. |
прерыванийнесправляетсяссинхронизациейиобрушивает |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Реестр. Ядро Win2k3 поддерживает свыше 128 ключей |
системувBSOD,толучшепоступитьсяпроизводительностью, |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
реестра, большинство из которых не документировано и |
чемнадежностью. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
добыто путем дизассемблирования. Нет смысла расска- |
А кому не знаком BSOD с противным названием IRQL_ |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
зывать обо всех, однако их описание (вместе с полным |
LESS_OR_EQUAL, выпрыгивающий в самый неподходящий |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
путем к реестру) легко найти в Google по имени ключа. |
момент? Что это такое, и почему он возникает? Операци- |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
Практически все ключи описаны в различных источниках |
онные системы семейства NT используют особую систему |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
(форумах, блогах, исходных текстах ReactOS и т.д.). |
приоритетов прерываний Interrupt Request Levels (или |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
xàêåð 05 /113/ 08 |
|
145 |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|