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://vyvod-iz-zapoya-v-ekaterinburge17.ru/
При судорогах, галлюцинациях, выраженной дезориентации или агрессии домашний формат может быть небезопасен. В таких случаях врач рекомендует госпитализацию, где состояние можно контролировать круглосуточно.
Подробнее – вывод из запоя недорого
Первые симптомы отмены иногда напоминают обычное похмелье, но затем могут быстро усиливаться. Если близкий начал вести себя необычно, перестал ориентироваться в обстановке или не может удерживать жидкость из-за рвоты, необходимо вызвать врача. При угрозе жизни следует обращаться в скорую помощь, а не ждать плановый выезд частной службы.
Узнать больше – анонимный вывод из запоя Екатеринбург
Вывод из запоя — медицинская помощь при длительном приеме спиртного, когда самостоятельно выйти из тяжелого состояния трудно или небезопасно. В Екатеринбурге можно обратиться за консультацией и организовать выезд специалиста круглосуточно. Наркологическая служба оценивает симптомы, длительность запойного периода, общее самочувствие, хронические заболевания и противопоказания. Основная задача — стабилизировать работу организма, уменьшить обезвоживание, восстановить водно-электролитный баланс и снизить вероятность осложнений.
Получить больше информации – https://vyvod-iz-zapoya-v-ekaterinburge18.ru/
Нарколог на дом помогает при разных проявлениях зависимости. Врач оценивает состояние пациента, но не ограничивается одной жалобой. Важны стаж алкоголизма, длительность употребления, наличие заболеваний и предыдущие попытки лечения. Если алкоголизм длится много лет, лечение должно быть комплексным.
Ознакомиться с деталями – https://narcolog-na-dom-krasnoyarsk3.ru/
Нарколог объясняет родственникам, какие действия допустимы до приезда бригады. Самостоятельно назначать сильнодействующие медикаменты, ставить капельницу или использовать неизвестные препараты не следует.
Изучить вопрос подробнее – нарколог на дом цена в Красноярске
Запой — это продолжительное употребление спиртного, при котором зависимого снова тянет выпить для временного облегчения похмельного состояния. Пока этанол и продукты его распада воздействуют на организм, нарушается сон, растет нагрузка на сердце и сосуды, страдают печень, почки и нервная система. Алкоголь вызывает нарушения обмена веществ; длительные воздействия этанола могут привести к тяжелым осложнениям и со временем дать развиться хроническим нарушениям. Даже если человек раньше хорошо переносил алкоголь, каждый новый случай может протекать тяжелее. Особенно осторожно нужно действовать, если алкоголизм длится 10, 15, 20 лет и больше.
Ознакомиться с деталями – вывод из запоя Екатеринбург
thxx
thnk
Лечение на дому подходит не всем. Если состояние пациента стабильное и врач не выявляет признаков опасных осложнений, может проводиться выездная детоксикация. Если же есть признаки тяжелого отравления алкоголем, выраженные нарушения сознания, судороги или неадекватное поведение, требуется осмотр специалистов и решение вопроса о стационарной помощи. При угрозе жизни нужна экстренная помощь скорой.
Ознакомиться с деталями – https://vyvod-iz-zapoya-v-ekaterinburge24.ru/
Заявку можно оставить в любое время, специалист быстро сориентирует по дальнейшим действиям.
Узнать больше – вывод из запоя капельница на дому в Екатеринбурге
thankss
thx
Сразу важно проговорить: кодирование — это «замок» на поведение и физиологию, который помогает удержать ремиссию, пока человек выстраивает новые привычки и восстанавливает качество жизни. Поэтому эффект процедуры прямо зависит от того, насколько грамотно выстроены подготовка, информирование и поддержка после вмешательства. «НеоТрезвие СПБ» делает акцент на постепенности: один этап — одна цель — один прозрачный маркер успеха.
Получить дополнительную информацию – кодирование от алкоголизма санкт-петербург
thankss
Публикация знакомит читателей с различными подходами к реабилитации. От традиционных методов до современных программ — вы узнаете, как выбрать оптимальный путь к выздоровлению и преодолеть препятствия на этом пути.
Узнайте всю правду – вызов частного нарколога
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Получить больше информации – https://vyvod-iz-zapoya-v-ekaterinburge24.ru/
В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
Выяснить больше – выведение из запоя телефон
Вывод из запоя на дому в Челябинске — удобное решение для тех, кто не может посетить клинику. Наши специалисты приедут к вам домой, проведут необходимую диагностику и лечение.
Изучить вопрос глубже – скорая вывод из запоя в челябинске
Запой приводит к обезвоживанию, нарушениям обмена веществ, дефициту минералов и накоплению продуктов распада этанола. Особенно тяжело абстинентный синдром проходит у алкозависимых, которые употребляют спиртное систематически много лет. Первые симптомы могут включать тревожность, тремор рук, тошноту, бессонницу, слабость, скачки давления и учащенное сердцебиение. В тяжелом случае возможны судороги, психоз, дезориентация и алкогольный делирий.
Узнать больше – вывод из запоя капельница в Екатеринбурге
Наши специалисты в Челябинске имеют многолетний опыт работы в области наркологии и готовы помочь вам на каждом этапе лечения. Мы используем современные методики и препараты для эффективного вывода из запоя.
Выяснить больше – вывод из запоя на дому круглосуточно челябинск
В этом обзоре мы обсудим современные методы борьбы с зависимостями, включая медикаментозную терапию и психотерапию. Мы представим последние исследования и их результаты, чтобы читатели могли быть в курсе наиболее эффективных подходов к лечению и поддержке.
Переходите по ссылке ниже – снять запой на дому капельницами
Клиника начинает лечение с обследования. Врач собирает анамнез, выясняет длительность употребления, характер зависимости и сопутствующие заболевания. Клинические данные позволяют определить состояние нервной системы, психики и внутренних органов. При необходимости проводится дополнительная диагностика, а результаты используются при выборе терапии.
Узнать больше – вывод наркологическая клиника
Быстро собираем первичную информацию, оцениваем риски и предлагаем подходящий вариант обращения.
Подробнее – https://vyvod-iz-zapoya-v-ekaterinburge21.ru/
Вызов начинается со звонка или заявки. Консультант уточняет адрес, район, длительность запоя, возраст пациента и основные жалобы. После этого врач или бригада выезжает домой. В Красноярске выезд организуется с учетом дорожной ситуации и доступности специалиста.
Подробнее – нарколог на дом вывод в Красноярске
Вывод из запоя в Екатеринбурге помогает безопаснее пройти период отказа от спиртного, уменьшить проявления похмельного и абстинентного синдрома и стабилизировать работу организма. Если человек несколько дней подряд употребляет алкогольные напитки, не может самостоятельно остановиться, плохо спит, страдает от тревожности, тремора, тошноты или слабости, стоит обратиться к врачу. Круглосуточная наркологическая помощь доступна на дому и в стационаре: можно вызвать нарколога по телефону, получить консультацию, пройти детоксикацию, а затем подобрать дальнейшее лечение алкоголизма, кодирование, психотерапию или реабилитацию.
Дополнительная информация – срочный вывод из запоя Екатеринбург
Экстренное вытрезвление в Челябинске — помощь при острых состояниях. Мы обеспечиваем быстрое и безопасное восстановление после сильного алкогольного опьянения.
Подробнее тут – вывод из запоя на дому недорого
Эта информационная публикация освещает широкий спектр тем из мира медицины. Мы предлагаем читателям ясные и понятные объяснения современных заболеваний, методов профилактики и лечения. Информация будет полезна как пациентам, так и медицинским работникам, желающим поддержать уровень своих знаний.
Узнать напрямую – капельница от алкоголизма
После основной терапии важно обеспечить поддержку пациента в период реабилитации. Реабилитационные программы в Краснодаре включают социальную адаптацию, восстановление навыков общения и трудоустройства. Это позволяет минимизировать риск рецидива и возвращения к употреблению алкоголя. Поддержка со стороны специалистов и близких — обязательное условие успешного результата. Более подробно о социальной реабилитации можно ознакомиться на сайте Федерального реабилитационного центра.
Выяснить больше – https://lechenie-alkogolizma-krasnodar00.ru/klinika-lecheniya-alkogolizma-krasnodar
Лечение не сводится к одной капельнице. В первые часы важно снять выраженную абстиненцию, скорректировать обезвоживание и электролитный баланс, уменьшить неприятные проявления и не допустить осложнений. Потом врач дает рекомендации по дальнейшему восстановлению. Если запои повторяются, необходима работа с самой зависимостью: медикаментозная терапия, кодировка, консультации психолога или психотерапевта, поддержка семьи и реабилитационная программа.
Дополнительная информация – вывод из запоя в стационаре
Обзор посвящён процессу восстановления после зависимостей. Мы расскажем о различных этапах реабилитации, поддерживающих ресурсах и важности мотивации в достижении устойчивого выздоровления.
Более того — здесь – вызов на дом нарколога
Этот медицинский обзор сосредоточен на последних достижениях, которые оказывают влияние на пациентов и медицинскую практику. Мы разбираем инновационные методы лечения и исследований, акцентируя внимание на их значимости для общественного здоровья. Читатели узнают о свежих данных и их возможном применении.
Читать далее > – прокапаться после запоя
Публикация охватывает основные направления развития современной медицины. Мы обсудим значимость научных исследований, инноваций в лечении и роли общественного участия в формировании системы здравоохранения.
Лучшее решение — прямо здесь – капельница от запоя на дому в Нижнем Новгороде
Схема помощи зависит от состояния, стажа употребления, противопоказаний и дальнейших целей лечения.
Узнать больше – sdelat-kapelnicu-ot-zapoya
Текст посвящён распространённым мифам о зависимости и их развенчанию. Мы предоставим научно обоснованную информацию и дадим рекомендации по выбору эффективного способа борьбы с зависимым поведением.
Только факты! – врач нарколог на дом в нижнем новгороде
В этой медицинской статье мы погрузимся в актуальные вопросы здравоохранения и лечения заболеваний. Читатели узнают о современных подходах, методах диагностики и новых открытий в научных исследованиях. Наша цель — донести важную информацию и повысить уровень осведомленности о здоровье.
Посмотреть всё – срочная капельница от запоя
Вывод из запоя в Екатеринбурге помогает безопаснее пройти период отказа от спиртного, уменьшить проявления похмельного и абстинентного синдрома и стабилизировать работу организма. Если человек несколько дней подряд употребляет алкогольные напитки, не может самостоятельно остановиться, плохо спит, страдает от тревожности, тремора, тошноты или слабости, стоит обратиться к врачу. Круглосуточная наркологическая помощь доступна на дому и в стационаре: можно вызвать нарколога по телефону, получить консультацию, пройти детоксикацию, а затем подобрать дальнейшее лечение алкоголизма, кодирование, психотерапию или реабилитацию.
Подробнее – вывод из запоя вызов на дом
В этой публикации мы исследуем ключевые аспекты здоровья, включая влияние образа жизни на благополучие. Читатели узнают о важности правильного питания, физической активности и психического здоровья. Мы предоставим практические советы и рекомендации для поддержания здоровья и развития профилактических подходов.
Изучить материалы по теме – вызвать нарколога на дом цены нижний новгород
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Что скрывают от вас? – срочная капельница от запоя
casino https://websiteseoaudit.net/domain/unibet-casino.hu.net
В легком случае беспокоят сухость во рту, слабость, тремор, тревога и головная боль. Если интоксикация выражена сильнее, могут возникать скачки давления, многократная рвота, бессонница и сердцебиение. Важно отметить, что домашняя капельница подходит не всем: при судорогах, галлюцинациях, спутанности сознания или резком ухудшении требуется экстренная помощь.
Подробнее – капельница от запоя вызов
Этот текст представляет собой обзор свежих данных и исследований в области медицины. Он призван помочь читателям понять, как научные достижения влияют на лечение, диагностику и общее состояние системы здравоохранения.
Как достичь результата? – нарколог на дом вывод из запоя
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Узнай первым! – вызвать нарколога на дом недорого
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Подробнее – вывод из запоя капельница Екатеринбург
Этот документ охватывает важные аспекты медицинской науки, сосредотачиваясь на ключевых вопросах, касающихся здоровья населения. Мы рассматриваем свежие исследования, клинические рекомендации и лучшие практики, которые помогут улучшить качество лечения и профилактики заболеваний. Читатели получат возможность углубиться в различные медицинские дисциплины.
Получить дополнительные сведения – врач нарколог выезд на дом цена
Этот медицинский обзор сосредоточен на последних достижениях, которые оказывают влияние на пациентов и медицинскую практику. Мы разбираем инновационные методы лечения и исследований, акцентируя внимание на их значимости для общественного здоровья. Читатели узнают о свежих данных и их возможном применении.
Прочесть всё о… – капельницы от алкоголя