Bug总能在你意想不到的地方给你个措手不及,只是它所带来并不是惊喜,而是Blue Screen Of Death !
既如此,只能兵来将挡。
先介绍一下程序的大体流程:
NTSTATUS
XXXProcessDirents(…)
{
do {
KeEnterCriticalRegion();
ExAcquireResourceSharedLite(&fcb->Resource, TRUE);
/* access several members of fcb structure */
ExReleaseResourceLite(&fcb->Resource);
KeLeaveCriticalRegion();
XXXXProcessDirent(…);
} while (list_is_not_empty(….));
return status;
}
NTSTATUS
XXXXProcessDirent(…)
{
HANDLE handle = NULL;
XXXX_FILE_HEADE fileHead;
……
/* open file */
status = ZwCreateFile(&handle, GENERIC_READ, &oa, &iosb, NULL, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
FILE_OPEN, 0, NULL, 0);
/* read file header*/
status = ZwReadFile(handle, ioevent, NULL, NULL, &iosb, (PVOID)&fileHead,
sizeof(XXXX_FILE_HEADE), &offset, NULL);
/* check whether file is interesting to us */
if (status == STATUS_SUCCESS && iosb.Information == sizeof(……)) {
/* it’s my taste, haha */
}
/* close file, not interested in it any more */
if (handle){
ZwClose(handle);
}
return status;
}
过程比较简单,XXXProcessDirents()会循环调用XXXProcessDirent(),直至列表中所有项全检查完毕。
下面再来看windbg分析吧:
1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
IRQL_NOT_LESS_OR_EQUAL (a)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high. This is usually
caused by drivers using improper addresses.
If a kernel debugger is available get the stack backtrace.
Arguments:
Arg1: 0abc9867, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000001, bitfield :
bit 0 : value 0 = read operation, 1 = write operation
bit 3 : value 0 = not an execute operation, 1 = execute operation (only on chips which support this level of status)
Arg4: 806e7a2a, address which referenced memory
Debugging Details:
------------------
WRITE_ADDRESS: 0abc9867
CURRENT_IRQL: 2
FAULTING_IP:
hal!KeAcquireInStackQueuedSpinLock+3a
806e7a2a 8902 mov dword ptr [edx],eax
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0xA
PROCESS_NAME: System
TRAP_FRAME: b9019bbc -- (.trap 0xffffffffb9019bbc)
ErrCode = 00000002
eax=b9019c40 ebx=00000000 ecx=c0000211 edx=0abc9867 esi=c0000128 edi=8842d268
eip=806e7a2a esp=b9019c30 ebp=b9019c68 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010286
hal!KeAcquireInStackQueuedSpinLock+0x3a:
806e7a2a 8902 mov dword ptr [edx],eax ds:0023:0abc9867=????????
Resetting default scope
LAST_CONTROL_TRANSFER: from 806e7a2a to 80544768
STACK_TEXT:
b9019bbc 806e7a2a badb0d00 0abc9867 804f4e77 nt!KiTrap0E+0x238
b9019c68 806e7ef2 00000000 00000000 b9019c80 hal!KeAcquireInStackQueuedSpinLock+0x3a
b9019c68 b9019d24 00000000 00000000 b9019c80 hal!HalpApcInterrupt+0xc6
WARNING: Frame IP not in any known module. Following frames may be wrong.
b9019cf0 80535873 00000000 8896fb20 00000000 0xb9019d24
b9019d10 b79d87ff ba668a30 8859b7e8 00000440 nt!ExReleaseResourceLite+0x8d
b9019d2c b79d8a5c 8a3ff2f0 00000003 ba6685f0 XXXXX!XXXProcessDirents+0xef
b9019d88 b79e163a e2f6b170 00000001 00000001 XXXXX!XXXKernelQueryDirectory+0x20c
b9019ddc 8054616e b79e1530 88a8ae00 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
问题出在系统函数ExReleaseResourceLite()及KeAcquireInStackQueuedSpinLock()上,且程序要写的地址为0abc9867 ,明显不对,所以此处可做栈损坏推断。
第一嫌疑要考虑的是,XXXProcessDirents()中有锁保护的部分,此部分是果真是最容易造成栈损坏buffer复制操作。但经过仔细检查及测试,便排除了此部分出错的可能。
在排除第一嫌疑后,就没有明显目标了。只好再接着看windbg log:
貌似KeAcquireInStackQueuedSpinLock()要写的地址是LockHandle的LockQueue->Next,而LockHandle一般都在从当前堆栈分配的,由此可肯定之前对于栈损坏的推断。可问题是,是谁导致的栈损坏。
Stack中有hal!HalpApcInterrupt()调用记录,它是处理APC的软中断。hal!HalpApcInterrupt()会一般会调用nt!KiDeliverApc()来处理线程的APC队列。但当ExReleaseResourceLite()调用的时候,线程还处于临界区内(Critical Section),此时User mode APC及Kernel mode normal APC都会被禁止的,但Kernel mode special APC不会。
Kernel Special APC最常见的情况便是由IoCompleteRequest()添加的:在APC Level中调用IopCompleteRequest()以处理Irp的Stage 2的清理工作。
至此,问题终于有些眉目了。分析代码中唯一有可能导致APC添加的地方就在函数XXXXProcessDirent()中的ZwReadFile()调用,而且fileHead正是于堆栈中分配的。
想到此处,此bug的根据原因便付出水面:
XXXXProcessDirent()没有处理ZwReadFile()返回STATUS_PENDING的情况,此情形下,XXXXProcessDirent()退出并继续执行,而之前的ZwReadFile()的IRP完成操作也在同时进行(还没有完成),并且此完成操作所要写的fileHead地址,正是早已被回收并加以重用的当前栈。
搞清楚之后,便在调用ZwReadFile()后,特别针对STATUS_PENING的情况来调用ZwWaitForSingleObject()以确保读操作全部完成后,再进行下一步操作。
到此,问题解决!
一个蓝屏的问题,竟然如此之绕,不禁让我想起刘震云的《一句顶一万句》,只是这能顶一万句的一句到底是哪句呢?
<下一步打算写写APC相关的东西,操作系统将APC隐藏得太深,总让人捉摸不定!>
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Подробнее можно узнать тут – http://vyvod-iz-zapoya-korolev2.ru
Вывод из запоя показан при:
Получить дополнительные сведения – вывод из запоя капельница
При остром алкогольном отравлении появляются головокружение, рвота, сильная слабость, скачки давления, нарушение дыхания, обмороки и судороги. Это сигнал о том, что организм не справляется с интоксикацией, и без срочного медицинского вмешательства возможны опасные осложнения, вплоть до комы.
Узнать больше – нарколог на дом вывод
Вывод из запоя включает комплекс мер, направленных на детоксикацию организма, стабилизацию состояния и снятие абстинентного синдрома. В течение первых часов специалист контролирует давление, пульс, дыхание и уровень сознания. Современные методики позволяют уменьшить тошноту, тремор, тревогу, болевой синдром и другие проявления отравления. Эффективность лечения повышается, когда пациент соблюдает рекомендации и после стабилизации продолжает лечение алкогольной зависимости.
Подробнее – vyvod iz zapoya
Вывод из запоя нужен, когда зависимый не может прекратить употребление спиртного без медицинской поддержки. Лечение запоя в клинике или на дому строится вокруг оценки самочувствия, осторожной детоксикации, восстановления организма и выбора дальнейшего лечения алкоголизма. Врач подбирает формат помощи после осмотра: для одного обратившегося достаточно капельницы на дому, другому обратившемуся требуется стационар, наблюдение и более длительное лечение.
Получить больше информации – срочный вывод из запоя геленджик
Вывод из запоя — это медицинский процесс, направленный на безопасное прерывание длительного употребления алкоголя, очищение организма от токсинов, восстановление физического состояния человека и снижение риска опасных осложнений. Если зависимый продолжает пить несколько дней, недель, месяцев или даже года, нарушается работа нервной, сердечно-сосудистой, пищеварительной и выделительной системы, страдают внутренние органы, ухудшается сон, появляются страх, тремор, тошнота, головная боль, слабость и выраженный абстинентный синдром. В такой ситуации важно не ждать, а вызвать врача или нарколога, чтобы получить профессиональное лечение быстро, анонимно и под контролем специалистов.
Получить дополнительные сведения – наркологический вывод из запоя в анапе
В статье рассмотрим ключевые моменты, которые помогут сориентироваться при выборе капельницы от запоя, понять механизм действия и особенности процедуры, а также избежать типичных ошибок при обращении за медицинской помощью.
Подробнее можно узнать тут – врача капельницу от запоя в первоуральске
Вывод из запоя в Люберцах требуется в ситуациях, когда человек несколько дней употребляет алкоголь, не может самостоятельно остановиться, плохо спит, испытывает тремор, тошноту, тревогу, скачки артериального давления, слабость и выраженное ухудшение самочувствия. В таких случаях обычные домашние советы часто не помогают, а самостоятельное прерывание запоя может быть опасно из-за абстиненции, обезвоживания, нарушений работы сердца, печени, нервной системы и головного мозга.
Получить дополнительную информацию – http://vyvod-iz-zapoya-v-lyubercah14-2.ru
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Получить дополнительные сведения – vyvod iz zapoya kruglosutochno
Люди подскажите Ситуация критическая Дети напуганы В больницу тащить страшно Короче, врач приехал и поставил систему — нарколог на дом круглосуточно без выходных Приехал через 40 минут В общем, телефон и цены тут — вывод из запоя на дому москва круглосуточно https://chastnyj.narkolog-na-dom-moskva-uxm.ru Не ждите пока станет хуже Перешлите тем кто в такой же ситуации
Алкогольная зависимость и ее острые последствия требуют немедленного врачебного вмешательства. Наша наркологическая служба в Люберцах предлагает оперативный вызов нарколога в любое время и день недели, врач выезжает по указанному адресу сразу после оформления заявки. Мы понимаем, что в критической ситуации счет идет на минуты, поэтому выезд специалиста организован так, чтобы вы или ваш близкий человек получили квалифицированную поддержку максимально быстро. Когда врач приезжает на вызов, то в первую очередь проводит обследование состояния пациента, чтобы понять, какая медицинская помощь нужна и требуется ли госпитализация в стационар. Такой подход позволяет избежать опасных осложнений хронического алкоголизма, включая нарушения работы сердца, печени и нервной системы, еще на догоспитальном этапе.
Получить больше информации – vyzov-narkologa-na-dom-kruglosutochno
Зависимость — это заболевание, которое разрушает не только тело, но и личность. Оно затрагивает мышление, поведение, разрушает отношения и лишает человека способности контролировать свою жизнь. Наркологическая клиника в Волгограде — профессиональное лечение зависимостей строит свою работу на понимании природы болезни, а не на осуждении. Именно это позволяет добиваться стойких результатов, восстанавливая пациента физически, эмоционально и социально.
Углубиться в тему – narkologicheskaya-klinika-volgograd9.ru/
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Выяснить больше – вывод из запоя вызов на дом геленджик
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Узнать больше – вывод из запоя круглосуточно
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Углубиться в тему – https://vyvod-iz-zapoya-v-koroleve14.ru
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Исследовать вопрос подробнее – vyvod iz zapoya kruglosutochno
thxx
Москва, всем привет Брат снова сорвался Соседи стучат в стену Нужен врач прямо сейчас Короче, врач приехал и поставил систему — нарколог на дом срочно Через пару часов человек пришёл в себя В общем, не потеряйте контакты — помощь нарколога на дому в москве https://anonimnyj.narkolog-na-dom-moskva-tfb.ru Звоните прямо сейчас Перешлите тем кто в такой же ситуации
Этот этап лечения направлен на купирование острых симптомов, связанных с абстинентным синдромом. Пациенту назначаются современные препараты, способствующие выведению токсинов, нормализации работы сердца, печени, центральной нервной системы.
Узнать больше – наркологическая клиника вывод из запоя
thank you
thxx
В клинике лечение запоя рассматривается как первый этап, а не как единственная мера. Вывод из запоя снижает выраженность алкогольной интоксикации, но лечение алкоголизма продолжается после стабилизации. Нарколог объясняет, какие методы подходят пациенту, как быстро можно начать лечение, когда допустимо кодирование и почему реабилитация в стационаре иногда безопаснее, чем помощь на дому.
Подробнее – врач вывод из запоя
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Подробнее можно узнать тут – скорая вывод из запоя геленджик
thank you
Вывод из запоя в Химках — медицинская услуга для людей, которым необходимо безопасно прервать продолжительное употребление спиртного, уменьшить проявления абстинентного синдрома и стабилизировать работу организма. Запой опасен не только выраженным похмельем: продукты распада этанола оказывают токсическое влияние на клетки мозга, печень, сердце, сосудистую и нервную системы. У человека может резко изменяться артериальное давление, учащаться пульс, появляться рвота, тремор, бессонница, тревога, боль, судороги или галлюцинации. В таких ситуациях самостоятельное снятие симптомов лекарственными средствами из домашней аптечки способно привести к серьезным осложнениям, поэтому помощь лучше доверить опытному врачу.
Получить дополнительную информацию – анонимный вывод из запоя
Обращение в клинику необходимо, если самочувствие ухудшается, период запоя длится несколько дней, появляется слабость, тревога, бессонница, тошнота или признаки алкогольной абстиненции. Врач оценивает самочувствие, уточняет стаж употребления, возраст, хронические болезни и прошлый опыт лечения. Если человек пьет долго и самостоятельно выйти из запоя не может, вызов нарколога на дому помогает быстро начать лечение.
Углубиться в тему – вывод из запоя на дому цена в геленджике
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Подробнее – vyvod-iz-zapoya-v-lyubercah14-2.ru/
Снятие запоя – это не только прекращение приема спиртных напитков, но и целый комплекс мероприятий, включающий очищение и восстановление организма, а также нормализацию общего состояния больного. В современных условиях наркологическая клиника может предложить вывод из запоя на дому, лечение запоя в стационаре, капельницу, детоксикацию, медикаментозный курс, психологическую поддержку, кодирование, реабилитацию и дальнейшее сопровождение семьи. Такой подход позволяет не просто вывести человека из тяжелого состояния, а определить причины зависимости, подобрать индивидуально эффективное лечение алкоголизма и снизить вероятность повторного срыва.
Подробнее можно узнать тут – нарколог вывод из запоя
Схема помощи зависит от состояния, стажа употребления, противопоказаний и дальнейших целей лечения.
Детальнее – вывод из запоя на дому круглосуточно
Состояние пациента отслеживается на каждом этапе, от первичной консультации до дальнейших рекомендаций.
Выяснить больше – срочный вывод из запоя
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Разобраться лучше – вывод из запоя на дому круглосуточно анапа
thxx
Зависимость — это заболевание, которое разрушает не только тело, но и личность. Оно затрагивает мышление, поведение, разрушает отношения и лишает человека способности контролировать свою жизнь. Наркологическая клиника в Волгограде — профессиональное лечение зависимостей строит свою работу на понимании природы болезни, а не на осуждении. Именно это позволяет добиваться стойких результатов, восстанавливая пациента физически, эмоционально и социально.
Подробнее тут – частная наркологическая клиника в волгограде
Заявку можно оставить в любое время, специалист быстро сориентирует по дальнейшим действиям.
Подробнее можно узнать тут – vyvod-iz-zapoya-deshevo
Москва, всем привет Муж просто потерял себя Дети напуганы В больницу тащить страшно Короче, врачи приехали и поставили систему — нарколог на дом вывод из запоя эффективно Через пару часов человек пришёл в себя В общем, телефон и цены тут — вывести из запоя анонимно вывести из запоя анонимно Звоните прямо сейчас Перешлите тем кто в такой же ситуации
Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
Подробнее можно узнать тут – вывод из запоя в стационаре
Лечение начинается с оценки клинической картины. Врач-нарколог проводит осмотр, при необходимости назначает обследование, ЭКГ, анализы, тест на употребление веществ, проверяет основные показатели, уточняет данные о принимаемых лекарствах, хронических диагнозах, аллергии, опыте кодирования и прошлых попытках остановиться. На этой основе назначается детоксикация: витаминно-минеральный раствор, средства для восстановления водно-солевого баланса, успокоительные препараты, нейропротекторы, кардиопротекторы, гепатопротекторы и другие медикаменты, которые улучшают самочувствие, поддерживают функции головного мозга, печени, сердца и нервной системы.
Выяснить больше – vyvod-iz-zapoya-v-lyubercah14-4.ru/
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Узнать больше – kodirovanie ot alkogolizma na domu
Люди помогите советом Отец не выходит из штопора Соседи стучат в стену Таблетки не помогают Короче, только это реально спасло — нарколог на дом срочно Приехал через 40 минут В общем, жмите чтобы сохранить — телефон нарколога на дом телефон нарколога на дом Нарколог на дом — это реальный выход Перешлите тем кто в такой же ситуации
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Подробнее можно узнать тут – vyvod iz zapoya na domu krasnogorsk
Вывод из запоя в Королеве требуется, когда человек несколько дней употребляет алкоголь, не может остановиться, плохо спит, испытывает тревогу, тошноту, тремор, слабость, потерю аппетита и признаки похмельного синдрома. В такой момент главное — не пытаться лечить запойное состояние случайной дозой лекарственных средств, а обратиться к врачу. Наркологическая клиника подбирает лечение индивидуально: учитываются возраст пациента, срок употребления спиртного, стаж алкоголизма, наличие хронических заболеваний, самочувствие, риск развития осложнений и желание больного начать путь к трезвости.
Подробнее – vyvod-iz-zapoya-na-domu
Зависимость — это заболевание, которое разрушает не только тело, но и личность. Оно затрагивает мышление, поведение, разрушает отношения и лишает человека способности контролировать свою жизнь. Наркологическая клиника в Волгограде — профессиональное лечение зависимостей строит свою работу на понимании природы болезни, а не на осуждении. Именно это позволяет добиваться стойких результатов, восстанавливая пациента физически, эмоционально и социально.
Подробнее – https://narkologicheskaya-klinika-volgograd9.ru/
Продолжительное употребление алкоголя постепенно истощает водно-солевой баланс, снижает уровень глюкозы и калия, нарушает сон и усиливает психическое напряжение. Чем дольше длится запой, тем сложнее зависимому выйти из него без медицинской поддержки. Особенно высокая вероятность осложнений наблюдается у людей старшего возраста, при сердечно-сосудистой недостаточности, заболеваниях печени, перенесенном инсульте, эпилептических припадках и тяжелых формах алкоголизма. Срочный выезд требуется, когда самочувствие быстро ухудшается, а близкие не знают, как правильно действовать.
Подробнее – vyvod-iz-zapoya-na-domu-kruglosutochno
thxx
Вывод из запоя необходим, когда человек несколько дней употребляет алкоголь, не может самостоятельно остановиться и чувствует выраженное ухудшение здоровья. Продолжительный запой носит опасный характер: в крови накапливаются продукты распада этанола, развивается обезвоживание, нарушается обмен веществ, повышается нагрузка на сердце, печень, почки и головной мозг. Даже если зависимый уверен, что сможет выйти из запоя сам, резкое прерывание употребления способно привести к тяжелой абстиненции, судорожным припадкам, алкогольному делирию и другим серьезным последствиям.
Получить дополнительные сведения – вывод из запоя
Заявку можно оставить в любое время, специалист быстро сориентирует по дальнейшим действиям.
Разобраться лучше – http://vyvod-iz-zapoya-v-koroleve14.ru/
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Узнать больше – вывод из запоя цена геленджик
Частная наркологическая клиника организует лечение запоя на дому, амбулаторное сопровождение, медикаментозное снятие похмельного синдрома и лечение в стационаре. Нарколог выезжает круглосуточно, оценивает физическое и психическое самочувствие пациента, проверяет пульс и артериальное давление, а затем определяет подходящий вариант лечения. Все услуги оказываются анонимно, без передачи сведений по месту работы и без постановки на государственный учет.
Углубиться в тему – вывод из запоя на дому королев
Москва, всем привет Муж просто потерял себя Жена в истерике Таблетки не помогают Короче, единственное что вытащило из запоя — вывод из запоя в Москве круглосуточно Через пару часов человек пришёл в себя В общем, жмите чтобы сохранить — вывод из запоя на дому круглосуточно вывод из запоя на дому круглосуточно Не ждите пока станет хуже Перешлите тем кто в такой же ситуации
Лечение алкоголизма не сводится к одному уколу или сеансу. Перед кодированием нарколог уточняет длительность запоев, количество алкоголя, состояние печени, сердца, сосудов и головного мозга. Специалисты изучают данные анализов, оценивают возможные побочные реакции и определяют, подходит ли медикаментозное, психотерапевтическое, аппаратное или комбинированное лечение. Если больной недавно пил, первым этапом становится детоксикация, а потом проводится кодирование от алкоголизма выбранным методом.
Подробнее можно узнать тут – kodirovanie ot alkogolizma gipnozom