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隐藏得太深,总让人捉摸不定!>
В данной статье мы акцентируем внимание на важности поддержки в процессе выздоровления. Мы обсудим, как друзья, семья и профессионалы могут помочь тем, кто сталкивается с зависимостями. Читатели получат практические советы, как поддерживать близких на пути к новой жизни.
Кликни, не пожалеешь – наркология клиника
casino https://seo.c2h.at/domain/mrvegas-casino.org.uk
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Получить больше информации – vyvod-iz-zapoya-moskva-stacionar
Мы не используем универсальные «сильные капельницы». Эффективность даёт точное совпадение с задачей. Ниже — логика выбора профилей и маркеры, на которые мы ориентируемся при контроле эффективности и безопасности.
Углубиться в тему – вывод из запоя цена санкт-петербург
Наркологическая клиника в Ростове-на-Дону предоставляет полный спектр услуг по диагностике, лечению и реабилитации пациентов с алкогольной и наркотической зависимостью. Применение современных медицинских протоколов и индивидуальный подход к каждому пациенту обеспечивают высокую эффективность терапии и снижение риска рецидивов.
Получить дополнительные сведения – http://narkologicheskaya-klinika-rostov-na-donu13.ru/
При таких признаках звонок в клинику позволяет быстрее определить дальнейшие действия. Дежурный специалист уточняет основные жалобы, а доктор приедет домой либо предложит лечение в клинике. В Москве выезд нарколога организуется круглосуточно. При угрожающих проявлениях может потребоваться скорая помощь и лечение в профильном стационаре.
Дополнительная информация – вывод из запоя в стационаре москва
thxx
Наркологический выезд включает несколько последовательных шагов, каждый из которых направлен на стабилизацию состояния пациента.
Ознакомиться с деталями – нарколог на дом анонимно в краснодаре
casino https://seowave.org/hi/domain/mrvegas-casino.org.uk
Если присутствуют признаки угрозы жизни — потеря сознания, судороги, выраженная одышка, сильная боль в груди, подозрение на инсульт или тяжелый психоз, — требуется экстренное медицинское вмешательство. Плановый вызов нарколога не заменяет скорую медицинскую службу. В менее острых ситуациях специалист проведет первичную оценку и решит, возможно ли лечение дома или необходим стационар.
Дополнительная информация – https://vyvod-iz-zapoya-moskva15-3.ru/
Наркологическая помощь в Перми представляет собой комплекс мероприятий, направленных на диагностику, лечение и профилактику различных форм зависимостей. Современные наркологические клиники обеспечивают индивидуальный подход к каждому пациенту, учитывая особенности его состояния и историю заболевания. Важно своевременно обращаться за квалифицированной помощью, чтобы снизить риски осложнений и улучшить качество жизни.
Разобраться лучше – вызвать наркологическую помощь пермь
И всё чаще понимаю, что медицина — это не только лечение. Раньше думал, что менеджмент в здравоохранении — это что-то далёкое. управление процессами в медицинской организации — решил пройти профессиональную переподготовку. Особенно полезно было про бережливую поликлинику. Отделение стало работать эффективнее. Не пренебрегайте менеджментом. аккредитация организация здравоохранения и общественное здоровье аккредитация организация здравоохранения и общественное здоровье Сохраните, поделитесь, не потеряйте для России. Это надёжный путь к росту. Менеджмент в здравоохранении — управляй качеством!
casino https://pienetpro.com/domain/neospincasino.games
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Ознакомиться с деталями – vyvod-iz-zapoya-moskva-srochno
В данной публикации мы поговорим о процессе восстановления от зависимости, о том, как вернуть себе нормальную жизнь. Мы обсудим преодоление трудностей, значимость поддержки и наличие программ реабилитации. Читатели смогут узнать о ключевых шагах к успешному восстановлению.
Узнайте всю правду – вывод из запоя недорого
Обращение за экстренной помощью требуется в ситуациях, когда симптомы ломки становятся невыносимыми и ухудшают общее состояние пациента. Основными показаниями для вызова специалиста являются:
Подробнее тут – снятие ломки нарколог
В этой медицинской статье мы погрузимся в актуальные вопросы здравоохранения и лечения заболеваний. Читатели узнают о современных подходах, методах диагностики и новых открытий в научных исследованиях. Наша цель — донести важную информацию и повысить уровень осведомленности о здоровье.
Провести детальное исследование – алкогольная реабилитация
В этой публикации мы обсуждаем современные методы лечения различных заболеваний. Читатели узнают о новых медикаментах, терапиях и исследованиях, которые активно применяются для лечения. Мы нацелены на то, чтобы предоставить практические знания, которые могут помочь в борьбе с недугами.
Раскрыть тему полностью – алкогольная реабилитация
В данной статье мы акцентируем внимание на важности поддержки в процессе выздоровления. Мы обсудим, как друзья, семья и профессионалы могут помочь тем, кто сталкивается с зависимостями. Читатели получат практические советы, как поддерживать близких на пути к новой жизни.
Изучить рекомендации специалистов – реабилитация алкоголизма цена
Экстренное обращение требуется, если состояние быстро ухудшается, человек не может самостоятельно принимать воду и питание, практически не спит, становится агрессивным или дезориентированным. Медицинская бригада выезжает по указанному адресу, проводит первичную диагностику и определяет следующий этап лечения. При наличии показаний врач рекомендует стационарную помощь, где доступно постоянное наблюдение и оборудование для контроля жизненно важных показателей.
Получить больше информации – https://vyvod-iz-zapoya-moskva15-1.ru/
Наркологическая клиника «ПолярМед Центр» — это пространство круглосуточной помощи, где медицинская точность сочетается с бережным сервисом и конфиденциальными процедурами. Мы строим терапию как последовательность проверяемых шагов: ставим понятную цель, выбираем подходящий инструмент, заранее определяем маркеры контроля и фиксируем время повторной оценки. Такая дисциплина исключает «универсальные сильные капельницы» и заменяет их модульными решениями с предсказуемым эффектом. Пациент и его близкие на каждом этапе понимают, почему именно такое назначение выбрано сейчас и в какой момент мы ожидаем улучшение самочувствия.
Углубиться в тему – https://narkologicheskaya-klinika-murmansk15.ru/
С пациентом работают профильные специалисты, которые оценивают состояние и подбирают безопасный план помощи.
Подробнее – narkolog-vyvod-iz-zapoya
casino https://analyzer.naijagodigital.com/en/domain/neospincasino.games
Мы не «усиливаем всё сразу». Лечение собирается из модулей: гидратация, адресная коррекция электролитов, гастропротекция, антиоксидантная поддержка, при необходимости — мягкие анксиолитики по строгим показаниям. Порядок и насыщенность зависят от ведущей жалобы и времени суток. Ниже — ориентир для пациента: почему назначение выглядит именно так и в какой горизонт мы ожидаем эффект.
Подробнее тут – анонимная наркологическая клиника
Медикаментозная терапия направлена на снятие симптомов абстиненции, нормализацию функций органов и систем, а также коррекцию психоэмоционального состояния пациента. Используются препараты, способствующие детоксикации, стабилизации работы нервной системы и улучшению общего самочувствия.
Исследовать вопрос подробнее – http://www.domen.ru
Медикаментозная терапия направлена на снятие симптомов абстиненции, нормализацию функций органов и систем, а также коррекцию психоэмоционального состояния пациента. Используются препараты, способствующие детоксикации, стабилизации работы нервной системы и улучшению общего самочувствия.
Узнать больше – наркологическая клиника клиника помощь пермь
thank you
Перед тем как прокапаться на дому, нужно оценить тяжесть проявлений. Нарколог проверяет давление, частоту сердцебиения, ориентацию пациента, наличие рвоты, дрожи и психического возбуждения. Важно учитывать, что даже хорошим общим самочувствием нельзя полностью исключить осложнения после длительного приема алкоголя.
Получить больше информации – капельница от запоя стационар
Заявку можно оставить в любое время, специалист быстро сориентирует по дальнейшим действиям.
Получить больше информации – капельница от запоя цена
Вывод из запоя на дому — это управляемый медицинский процесс, где каждая деталь имеет значение: от первичного осмотра и грамотного подбора инфузионного профиля до сенсорной дисциплины в помещении и чётких «окон оценки» результата. В наркологической клинике «СеверМед Трезвость» мы используем принцип минимально достаточных вмешательств: одна цель на этап, один измеримый маркер и одна корректировка за раз. Такой подход снижает нагрузку на организм, повышает предсказуемость и делает восстановление переносимым для пациента и его близких.
Получить дополнительные сведения – нарколог на дом вывод из запоя в санкт-петербурге
Эта публикация обращает внимание на важность профилактики зависимостей. Мы обсудим, как осведомленность и образование могут помочь в предотвращении возникновения зависимости. Читатели смогут ознакомиться с полезными советами и ресурсами, которые способствуют здоровому образу жизни.
Следуйте по ссылке – снятие интоксикации на дому
В статье рассматриваются различные стратегии борьбы с зависимостями, включая проверенные методы и реальные истории успеха. Читатель узнает, какие подходы наиболее эффективны и как начать путь к выздоровлению.
Всё самое вкусное внутри – нарколог 24
Обзор посвящён процессу восстановления после зависимостей. Мы расскажем о различных этапах реабилитации, поддерживающих ресурсах и важности мотивации в достижении устойчивого выздоровления.
Всё, что нужно знать – частный медик 24 отзывы
Первый этап — консультация и диагностика. Нарколог уточняет, как долго человек употребляет алкоголь или наркотические вещества, были ли запои, эпизоды ломки, кодирование, попытки самостоятельно бросить пить или употреблять наркотики, хронические заболевания и психические расстройства. При необходимости врач назначает анализы и дополнительное обследование. Психиатр оценивает психическое состояние, психолог изучает мотивацию, отношение к проблеме и готовность пройти лечение. На основании полученных данных специалисты составляют индивидуальный план медицинской помощи.
Подробнее – наркологическая москва
Ночной блок ориентирован на тишину и сон: приглушённый свет, короткие дыхательные циклы, мягкая фармакоподдержка по показаниям. Днём мы уточняем показатели, корректируем план воды/питания и, при необходимости, назначаем краткий очный контроль. Вечером — фокус на рутине: цифровая гигиена, «тихие окна», спокойная коммуникация с близкими. У пациента и семьи на руках памятка простым языком — без стигмы и жаргона — где перечислены «зелёные зоны» и поводы для связи с дежурным врачом.
Получить дополнительную информацию – платная наркологическая клиника в воронеже
Эта публикация посвящена актуальным вопросам современной медицины и здравоохранения. Мы обсудим новейшие технологии диагностики и лечения, а также их влияние на продолжительность и качество жизни. Читатель найдет здесь информацию о научных исследованиях и перспективных разработках, доступно изложенную для широкой аудитории.
Подробнее тут – стационарное выведение из запоя
Такая схема позволяет комплексно воздействовать на организм и уменьшить риски осложнений.
Детальнее – нарколог на дом недорого краснодар
В реальной городской ткани Ставрополя на самочувствие влияет не только схема лечения, но и логистика: утренние заторы на въезде, плотная застройка частного сектора, шумные перекрёстки. Мы заранее «поглощаем» эти риски организацией: секторные выезды, согласованная парковка, нейтральная переписка без «говорящих» терминов, при необходимости — курьерская доставка расходников отдельно от врача, чтобы на месте сразу переходить к оценке и запуску инфузии. Пациенту не нужно «вписываться» в систему — система подстраивается под реальную жизнь человека, экономя десятки минут и снижая сенсорную нагрузку перед первой ночью.
Подробнее тут – наркологическая клиника в ставрополе
При психозе, белой горячке, судорогах, передозировке, выраженной агрессии или угрозе жизни домашняя помощь может быть недостаточной. Врач оценивает ситуацию и при необходимости рекомендует стационарное лечение.
Дополнительная информация – https://5.narcolog-na-dom-krasnoyarsk0.ru/
Эти ситуации требуют немедленного вмешательства, и приезд врача позволяет оперативно оказать помощь.
Подробнее тут – https://narkolog-na-dom-v-krasnodare14.ru/narkolog-i-psikhiatr-v-krasnodare/
Ломка – это острый синдром отмены, возникающий при резком прекращении или снижении дозы алкоголя или других психоактивных веществ у хронически зависимых пациентов. Это состояние характеризуется выраженной физической и психической дискомфортностью, которая может сопровождаться сильными болевыми ощущениями, тревожностью, дрожью, потливостью, галлюцинациями и нарушениями сна. В критический момент ломка может привести к серьезным осложнениям, поэтому экстренная помощь нарколога имеет первостепенное значение для стабилизации состояния пациента и быстрого снятия симптомов.
Получить дополнительную информацию – снятие ломки в екатеринбурге
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Узнать больше – https://4.narkologicheskaya-klinika-v-krasnoyarske17.ru/
Поводом вызвать врача и рассмотреть капельницу становятся следующие проявления:
Получить больше информации – kapelnica-ot-zapoya
casino https://cuteseotools.com/domain/neospincasino.games
В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
Узнай первым! – частная наркологическая клиника
Если в телефонном триаже обозначаются риски по дыханию, ритму или уровню сознания, на старте предлагаем стационарное «окно» мониторинга с круглосуточным постом. При низких рисках программа начинается амбулаторно или на дому и поддерживается вечерними онлайн-вставками (15–20 минут). Любой формат остаётся анонимным: доступ к карте наблюдения — по ролям, а язык переписки и чеков — нейтральный.
Подробнее можно узнать тут – частная наркологическая клиника воронеж
casino https://seorevelator.topdigitaltools.info/domain/neospincasino1.net
Наркологическая клиника «ПолярМед Центр» — это пространство круглосуточной помощи, где медицинская точность сочетается с бережным сервисом и конфиденциальными процедурами. Мы строим терапию как последовательность проверяемых шагов: ставим понятную цель, выбираем подходящий инструмент, заранее определяем маркеры контроля и фиксируем время повторной оценки. Такая дисциплина исключает «универсальные сильные капельницы» и заменяет их модульными решениями с предсказуемым эффектом. Пациент и его близкие на каждом этапе понимают, почему именно такое назначение выбрано сейчас и в какой момент мы ожидаем улучшение самочувствия.
Выяснить больше – http://narkologicheskaya-klinika-murmansk15.ru/murmansk-narkologicheskaya-bolnicza/
thxx
thxx