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隐藏得太深,总让人捉摸不定!>
ко ланта ко ланта
Этот информативный текст сочетает в себе темы здоровья и зависимости. Мы обсудим, как хронические заболевания могут усугубить зависимости и наоборот, как зависимость может влиять на общее состояние здоровья. Читатели получат представление о комплексном подходе к лечению как физического, так и психического состояния.
Обратитесь за информацией – каковы последствия наркомании для личности семьи
Алкогольный запой представляет собой тяжелое состояние, вызванное длительным бесконтрольным употреблением спиртных напитков. Без медицинского вмешательства вывести организм из запоя может быть сложно и даже опасно. Срочная помощь нарколога требуется при следующих признаках:
Подробнее тут – капельница от запоя цена
Снятие запоя – это не только прекращение приема спиртных напитков, но и целый комплекс мероприятий, включающий очищение и восстановление организма, а также нормализацию общего состояния больного. В современных условиях наркологическая клиника может предложить вывод из запоя на дому, лечение запоя в стационаре, капельницу, детоксикацию, медикаментозный курс, психологическую поддержку, кодирование, реабилитацию и дальнейшее сопровождение семьи. Такой подход позволяет не просто вывести человека из тяжелого состояния, а определить причины зависимости, подобрать индивидуально эффективное лечение алкоголизма и снизить вероятность повторного срыва.
Подробнее можно узнать тут – нарколог вывод из запоя
Вывод из запоя в Люберцах требуется, когда человек несколько дней находится в запойном состоянии, принимает алкоголь, не может самостоятельно остановиться, плохо спит, испытывает тремор, тревогу, тошноту, слабость, скачки давления или признаки отравления. В таких случаях важно не ждать, что организм полностью справится сам, а обратиться за медицинской помощью: врач оценивает состояние пациента, длительность запоя, количество спиртного, наличие хронических заболеваний и подбирает безопасное лечение.
Выяснить больше – нарколог вывод из запоя
Эти действия помогают быстро восстановить водно-электролитный баланс и снизить нагрузку на внутренние органы. После проведения процедур врач дает рекомендации по дальнейшему наблюдению и реабилитации.
Выяснить больше – нарколог на дом круглосуточно цены
В этой статье обсуждаются актуальные медицинские вопросы, которые волнуют общество. Мы обращаем внимание на проблемы, касающиеся здравоохранения и лечения, а также на новшества в области медицины. Читатели будут осведомлены о последних событиях и смогут следить за тенденциями в медицине.
Смотрите также… – пью и не пьянею причины
В этой статье мы обсудим процесс восстановления после зависимостей, акцентируя внимание на различных методах и подходах к реабилитации. Читатели узнают, как создать план выздоровления и использовать полезные ресурсы для достижения устойчивых изменений.
Связаться за уточнением – лечение алкоголизма
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Ознакомьтесь с аналитикой – хронический алкоголизм и наркомания
В этой публикации мы рассматриваем важную тему борьбы с зависимостями, включая алкогольную и наркотическую зависимости. Мы обсудим методы лечения, реабилитации и поддержку, которые могут помочь людям, столкнувшимся с этой проблемой. Читатели узнают о перспективах выздоровления и важности комплексного подхода.
Расширить кругозор по теме – депрессия симптомы у женщин
Лечение в стационаре позволяет провести детоксикацию, снять абстинентный синдром, уменьшить тревожность, восстановить сон и подготовить человека к дальнейшей терапии алкогольной зависимости. В нашей клинике помощь организована круглосуточно: можно оставить заявку через форму сайта, получить онлайн-консультацию, вызвать специалиста, заказать транспортировку или уточнить цены по телефону. Поэтому в нашей частной клинике в Краснодаре лечение проходит строго анонимно.
Выяснить больше – вывод из запоя в стационаре клиника геленджик
Этот обзор содержит информацию о передовых достижениях в области медицины. Мы разберем инновационные технологии, которые меняют подход к лечению и диагностике, а также их влияние на эффективность оказания медицинской помощи.
Где можно узнать подробнее? – https://stop-narcology.ru/article/tremor-ruk-u-alkogolikov-prichiny-simptomy-i-lechenie
После первичной консультации пациент проходит обследование, позволяющее точно определить стадию зависимости и сопутствующие патологии. Используются лабораторные анализы, оценка неврологического статуса и сбор анамнеза. Уже на этом этапе начинается выстраивание контакта между пациентом и врачом, что особенно важно для доверия и готовности включиться в процесс.
Ознакомиться с деталями – http://narkologicheskaya-klinika-volgograd9.ru/lechenie-v-narkologicheskoj-klinike-volgograd/https://narkologicheskaya-klinika-volgograd9.ru
Этот обзор содержит информацию о передовых достижениях в области медицины. Мы разберем инновационные технологии, которые меняют подход к лечению и диагностике, а также их влияние на эффективность оказания медицинской помощи.
Исследовать вопрос подробнее – антибиотики и алкоголь последствия таблица
Эта доказательная статья представляет собой глубокое погружение в успехи и вызовы лечения зависимостей. Мы обращаемся к научным исследованиям и опыту специалистов, чтобы предоставить читателям надежные данные об эффективности различных методик. Изучите, что работает лучше всего, и получите информацию от экспертов.
Прочесть всё о… – Наркологическая клиника Трезвое общество в Иваново
Для вызова специалиста необходимо позвонить на горячую линию или оставить заявку через официальный сайт, например, на портале государственных услуг. Специалист приедет в оговоренное время, обеспечив полную анонимность и соблюдение медицинской тайны.
Изучить вопрос глубже – вызвать нарколога на дом срочно в каменске-уральском
Заявку можно оставить в любое время, специалист быстро сориентирует по дальнейшим действиям.
Подробнее – vyvod-iz-zapoya-v-moskve-stacionar
Помощь можно получить анонимно, с аккуратным оформлением и внимательным отношением к личным данным.
Ознакомиться с деталями – http://vyvod-iz-zapoya-v-koroleve14-1.ru
Алкогольный запой представляет собой тяжелое состояние, вызванное длительным бесконтрольным употреблением спиртных напитков. Без медицинского вмешательства вывести организм из запоя может быть сложно и даже опасно. Срочная помощь нарколога требуется при следующих признаках:
Детальнее – https://kapelnica-ot-zapoya-nizhniy-novgorod0.ru/kapelnicza-ot-zapoya-na-domu-nizhnij-novgorod
В этой статье обсуждаются актуальные медицинские вопросы, которые волнуют общество. Мы обращаем внимание на проблемы, касающиеся здравоохранения и лечения, а также на новшества в области медицины. Читатели будут осведомлены о последних событиях и смогут следить за тенденциями в медицине.
Прочесть всё о… – ломка
Этот обзор посвящен успешным стратегиям избавления от зависимости, включая реальные примеры и советы. Мы разоблачим мифы и предоставим читателям достоверную информацию о различных подходах. Получите опыт многообразия методов и найдите подходящий способ для себя!
Практические советы ждут тебя – можно ли алкоголь при гипертонии
Екатеринбург, всем привет Близкий человек уже несколько дней в запое Дети напуганы Нужен врач прямо сейчас Короче, только это реально спасло — нарколог дом с осмотром Осмотрел и поставил капельницу В общем, телефон и цены тут — вызвать нарколога на дом цены https://kruglosutochno.narkolog-na-dom-ekaterinburg-17.ru Не ждите пока станет хуже Перешлите тем кто в такой же ситуации
Алкогольный запой представляет собой тяжелое состояние, вызванное длительным бесконтрольным употреблением спиртных напитков. Без медицинского вмешательства вывести организм из запоя может быть сложно и даже опасно. Срочная помощь нарколога требуется при следующих признаках:
Изучить вопрос глубже – posle-kapelniczy-ot-zapoya nizhnij novgorod
Схема помощи зависит от состояния, стажа употребления, противопоказаний и дальнейших целей лечения.
Выяснить больше – вывод из запоя в стационаре
Для вызова специалиста необходимо позвонить на горячую линию или оставить заявку через официальный сайт, например, на портале государственных услуг. Специалист приедет в оговоренное время, обеспечив полную анонимность и соблюдение медицинской тайны.
Углубиться в тему – http://narkolog-na-dom-kamensk-uralskij11.ru/
Народ кто сталкивался Данные там вообще не соответствуют действительности Банки смотрят косо Короче, помогли разобраться с этой клеветой — позорный сайт блокировка клеветы Восстановили репутацию В общем, там контакты и цены — Наговор Наговор Не дайте себя обмануть Перешлите тому кто в такой же ситуации
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Изучить вопрос глубже – наркология вывод из запоя в стационаре
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Нажми и узнай всё – https://stop-alko.info/vliyanie-na-zdorove/spirtnoe-i-gipertoniya.html
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Изучить вопрос глубже – вывод из запоя
Вывод из запоя в Мурманске представляет собой комплекс мероприятий, направленных на оказание медицинской помощи пациентам, находящимся в состоянии алкогольного отравления или длительного употребления спиртного. Процедура проводится с целью стабилизации состояния организма, предупреждения осложнений и минимизации риска развития тяжелых последствий алкоголизма.
Получить дополнительную информацию – вывод из запоя капельница в мурманске
Вывод из запоя требует неотложного и профессионального подхода, поскольку состояние больного сопровождается нарушением работы внутренних органов, обезвоживанием и токсическим воздействием этанола на центральную нервную систему. В Мурманске, учитывая особенности региона и климата, особенно важно проводить процедуру с учётом возможных сопутствующих заболеваний и общего состояния здоровья пациента.
Изучить вопрос глубже – https://vyvod-iz-zapoya-v-murmanske12.ru/anonimnyj-vyvod-iz-zapoya-v-murmanske/
Согласно данным НМИЦ психиатрии и наркологии Минздрава РФ, профессиональный вывод из запоя с применением капельниц снижает риск осложнений и сокращает период восстановления. Процедура проводится только под наблюдением квалифицированных специалистов и требует правильного подбора препаратов в зависимости от стадии опьянения и наличия сопутствующих заболеваний.
Углубиться в тему – капельница от запоя
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Как достичь результата? – прививка от бешенства
Эффективная капельница должна включать несколько компонентов, каждый из которых направлен на решение конкретной задачи: выведение токсинов, восстановление функций организма, нормализация психоэмоционального состояния.
Узнать больше – вызвать капельницу от запоя на дому
Вызов нарколога возможен круглосуточно, что обеспечивает оперативное реагирование на критические ситуации. Пациенты и их родственники могут получить помощь в любое время, не дожидаясь ухудшения состояния.
Детальнее – вызов врача нарколога на дом каменск-уральский
Симптомы запоя включают непреодолимую тягу к спиртным напиткам, агрессию, тревогу, нарушения сна и повышенную раздражительность. В случае длительного запоя физическое состояние больного ухудшается: появляется слабость, проблемы с сердцем, артериальным давлением и работой головного мозга. Квалифицированные специалисты проводят тщательный осмотр и диагностику, чтобы подобрать подходящую терапию. Это позволяет избежать осложнений и начать процесс восстановления организма максимально безопасно.
Углубиться в тему – нарколог на дом вывод из запоя
Согласно официальным рекомендациям Минздрава, выезд нарколога на дом способствует сокращению осложнений и повышению эффективности первичной помощи.
Выяснить больше – https://narkolog-na-dom-kamensk-uralskij11.ru
Главная опасность длительного употребления спиртного – тяжелая интоксикация, которая разрушает внутренние органы и провоцирует серьезные психические расстройства. Когда человек не может самостоятельно остановиться, а привычные домашние методы не помогают, единственно правильным решением станет профессиональная капельница от запоя. В Москве наша наркологическая служба предлагает экстренное вытрезвление и инфузионную терапию с выездом квалифицированного врача на дом в течение 30–60 минут. С учетом состояния пациента врач определяет, можно ли поставить алкогольную капельницу на дому или лучше откапать от алкоголя в стационаре. Оперативное очищение организма от продуктов распада этанола и других токсических веществ, восстановление работы жизненно важных органов и систем – вот основная цель, которую мы достигаем благодаря индивидуально подобранному составу растворов.
Подробнее можно узнать тут – http://kapelnica-ot-zapoya-v-moskve14-4.ru/
Быстро собираем первичную информацию, оцениваем риски и предлагаем подходящий вариант обращения.
Изучить вопрос глубже – вывод из запоя королев
В этой статье мы рассматриваем разрушительное влияние зависимости на жизнь человека. Обсуждаются аспекты, такие как здоровье, отношения и профессиональные достижения. Читатели узнают о необходимости обращения за помощью и о путях к восстановлению.
Ознакомиться с теоретической базой – витамин д и алкоголь совместимость
Обратившись к нам, вы получите анонимное и безопасное лечение, полностью соответствующее медицинским стандартам.
Подробнее можно узнать тут – вызов нарколога на дом в новокузнецке
Этот обзор посвящен успешным стратегиям избавления от зависимости, включая реальные примеры и советы. Мы разоблачим мифы и предоставим читателям достоверную информацию о различных подходах. Получите опыт многообразия методов и найдите подходящий способ для себя!
Нажми и узнай всё – пить алкоголь при гипертонии
Согласно официальным рекомендациям Минздрава, выезд нарколога на дом способствует сокращению осложнений и повышению эффективности первичной помощи.
Узнать больше – нарколог на дом круглосуточно цены
Преимущества вызова нарколога на дом:
Получить больше информации – вывод из запоя на дому цена
Для вызова специалиста необходимо позвонить на горячую линию или оставить заявку через официальный сайт, например, на портале государственных услуг. Специалист приедет в оговоренное время, обеспечив полную анонимность и соблюдение медицинской тайны.
Изучить вопрос глубже – нарколог на дом клиника в каменске-уральском
В рамках услуги вызова нарколога на дом используется современное оборудование и препараты, одобренные для амбулаторного применения.
Получить дополнительную информацию – психиатр нарколог на дом в каменске-уральском
В статье рассмотрим ключевые моменты, которые помогут сориентироваться при выборе капельницы от запоя, понять механизм действия и особенности процедуры, а также избежать типичных ошибок при обращении за медицинской помощью.
Получить дополнительную информацию – http://kapelnicza-ot-zapoya-pervouralsk11.ru
Для вызова специалиста необходимо позвонить на горячую линию или оставить заявку через официальный сайт, например, на портале государственных услуг. Специалист приедет в оговоренное время, обеспечив полную анонимность и соблюдение медицинской тайны.
Исследовать вопрос подробнее – нарколог на дом анонимно в каменске-уральском
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Углубиться в тему – вывод из запоя недорого
Снятие запоя – это не только прекращение приема спиртных напитков, но и целый комплекс мероприятий, включающий очищение и восстановление организма, а также нормализацию общего состояния больного. В современных условиях наркологическая клиника может предложить вывод из запоя на дому, лечение запоя в стационаре, капельницу, детоксикацию, медикаментозный курс, психологическую поддержку, кодирование, реабилитацию и дальнейшее сопровождение семьи. Такой подход позволяет не просто вывести человека из тяжелого состояния, а определить причины зависимости, подобрать индивидуально эффективное лечение алкоголизма и снизить вероятность повторного срыва.
Получить дополнительную информацию – срочный вывод из запоя анапа