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://cse.google.com.ly/url?sa=t&url=https://n.narkologicheskaya-klinika-v-krasnoyarske17.ru
При судорогах, потере сознания, тяжелом нарушении дыхания или других критических проявлениях требуется скорая помощь. Плановый вызов нарколога на дому не должен задерживать экстренное вмешательство, если существует угроза жизни.
Изучить вопрос подробнее – вывод из запоя в стационаре в Красноярске
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Дополнительная информация – https://narkologicheskaya-klinika-zhukovskij4.ru/
В этой статье мы говорим о важности поддержки в процессе выздоровления. Рассматриваются семьи, группы поддержки, специалисты и онлайн-ресурсы, которые могут сыграть решающую роль в избавлении от зависимости.
Получить полную информацию – вывод из запоя дома щелково
При перечисленных проявлениях домашнее лечение может быть небезопасным. Врач определяет, нужна ли срочная госпитализация, дополнительная диагностика или лечение в стационаре. Самостоятельный прием сильнодействующих лекарств, попытка снять абстиненцию новой дозой алкоголя или случайным уколом способны привести к ухудшению.
Дополнительная информация – вывод из запоя круглосуточно
casino https://rawrank.graphicwallet.com/hi/domain/just-casino.games
Driving around the city in an ordinary car felt like a missed opportunity. Others had fair prices but limited availability. Then I found a company that offered the perfect balance. rent a luxury car in miami — From high-end sports cars to stylish convertibles. Friendly, professional, and no pressure. I took a sleek convertible out for a spin. If you’re planning a trip to Miami and want to make it unforgettable. luxury car rental in miami https://luxury-car-rental-miami-dkj.com All the details are there for the area. It’s the easiest way to make your trip unforgettable. Luxury car rental Miami — drive in style, arrive with class!
Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
Изучить вопрос подробнее – http://images.google.com.pa/url?q=https://c.vyvod-iz-zapoya-v-krasnoyarske17.ru
Вывод из запоя помогает прервать длительное употребление спиртного, уменьшить проявления абстиненции и начать восстановление организма. Наркологическая помощь может оказываться на дому, амбулаторно и в стационаре клиники. Формат выбирается с учетом длительности запоя, возраста пациента, самочувствия, хронических болезней, количества выпитого и текущего уровня риска. Сейчас особенно важно не затягивать с обращением, если состояние ухудшается в течение нескольких суток, появляется тремор, бессонница, рвота, выраженная тревога или резкие изменения артериального давления.
Дополнительная информация – вывод из запоя на дому
casino https://spyfu.com/overview/domain?query=igobet-casino.eu
Для назначения капельницы врачу необходимо определить клиническую задачу. Это может быть восполнение жидкости, введение назначенного препарата, поддержка организма после интоксикации или проведение курса по рекомендации профильного доктора. Оптимальное сочетание компонентов зависит от диагноза, возраста, анализов и общего самочувствия.
Узнать больше – капельница на дом анонимно
casino https://seo.lenawa.com/domain/just-casino.games
Mən özüm illərdir müxtəlif platformalarda oynayıram. Və sonradan müntəzəm bonuslardan faydalanmağa başladım. 1xbet bedava bonus — yeni oyunçular üçün xoş gəlmə bonusu var. Heç bir gizli məqam yoxdur. Beləliklə, hər kəs öz zövqünə uyğun bonus seçə bilər. 1xbet kupon kodlari 1xbet kupon kodlari Bütün aktiv bonuslar, şərtlər və istifadə qaydaları buradadır üçün region. 1xbet bonus ilə əlavə qazanc əldə etmək istəyirsinizsə — linkə keçin. 1xbet bonus — uduş şansınızı artırmağın ən asan yolu!
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Дополнительная информация – анонимный вывод из запоя
Сам факт наличия лекарства или ранее оформленного назначения не означает, что капельницу можно ставить без повторной оценки здоровья. Перед каждым введением специалист уточняет изменения самочувствия, наличие новых жалоб и прием других препаратов. Если появились выраженная слабость, нарушения сознания, сильная одышка, резкие изменения давления или иные опасные симптомы, домашней процедуры может быть недостаточно.
Ознакомиться с деталями – вывод из запоя капельница на дому
Лечение на дому подходит человеку, если его состояние позволяет проводить инфузионную терапию вне стационара и отсутствуют признаки тяжелых осложнений. После звонка оператор уточняет адрес, возраст, длительность запоя и основные жалобы. Затем к указанному адресу приезжает наркологическая бригада. Врач проводит первичный осмотр, собирает анамнез, оценивает сознание, дыхание, давление и другие показатели, после чего подбирает индивидуальную схему лечения. Такой выезд позволяет получить помощь в привычной домашней обстановке и сохранить анонимность обращения.
Изучить вопрос подробнее – https://vyvod-iz-zapoya-reutov4.ru/
Соблюдаем конфиденциальность, бережно общаемся с пациентом и его близкими на каждом этапе.
Получить больше информации – http://cse.google.ae/url?q=https://s.vyvod-iz-zapoya-v-krasnoyarske17.ru
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Узнать больше – https://1.narcolog-na-dom-voronezh0.ru
Вывод из запоя в Домодедово — медицинская услуга, направленная на безопасное прерывание длительного употребления алкоголя, уменьшение проявлений абстиненции и восстановление основных функций организма. «Похмельная служба» организует помощь на дому и в стационаре, когда человек самостоятельно не может остановиться, плохо чувствует себя после спиртного или родственники понимают, что дальнейшее употребление становится угрозой здоровью. Круглосуточная наркологическая помощь особенно важна в случаях продолжительного запоя, выраженной слабости, рвоты, тремора, бессонницы, тревоги, скачков артериального давления, нарушений сна и сердечного ритма.
Получить больше информации – anonimnyj-vyvod-iz-zapoya
К противопоказаниям или ограничениям для домашней инфузии могут относиться выраженные нарушения работы сердца, тяжелые инфекционные заболевания, некоторые аллергические реакции, острая дыхательная недостаточность и другие клинические ситуации. Окончательное решение принимает медицинский работник после оценки конкретного человека. Если требуется срочный вызов скорой, сотрудник объяснит, почему капельница на дому не является подходящей заменой госпитализации.
Дополнительная информация – https://nadomu5.kapelnica-ot-zapoya-v-moskve14-1.ru/
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Дополнительная информация – вывод из запоя москва вызов нарколога капельница
Выезд начинается с обращения в центр. Можно позвонить по номеру телефона, оставить заявку на сайте или заказать обратный звонок. Оператор уточняет адрес в Воронеже, возраст пациента, характер проблемы, длительность запоя и симптомы. Эти данные помогают подготовить медикаменты и оборудование. Условия услуги и цена уточняются до приезда.
Изучить вопрос подробнее – вызов нарколога на дом в Воронеже
Регулярный прием этанола нарушает обмен веществ и работу нервной системы. Печень перерабатывает продукты распада алкоголя, меняется состав крови, возникают проблемы с водно-солевым балансом. При продолжительном запойном периоде страдает сердце, сосуды и головной мозг. Нарушается сон, снижается аппетит, перестает нормально работать привычный режим восстановления организма.
Ознакомиться с деталями – https://images.google.mk/url?q=http://a.vyvod-iz-zapoya-v-krasnoyarske17.ru
Основными поводами для обращения за медицинской помощью могут быть следующие ситуации:
Получить больше информации – http://image.google.co.kr/url?sa=i&url=https://a.narkologicheskaya-klinika-v-krasnoyarske17.ru
Если ситуация требует круглосуточного наблюдения, лабораторной диагностики, постоянного контроля показателей или использования сложного оборудования, врач предложит клинику. Такое решение связано не с удобством персонала, а с безопасностью человека. В стационаре доступны комплексные диагностические процессы, современное оборудование, лабораторные исследования и возможность быстро изменить лечение при возникновении осложнений.
Ознакомиться с деталями – http://nadomu4.kapelnica-ot-zapoya-v-moskve14-1.ru/
Эта публикация обращает внимание на важность профилактики зависимостей. Мы обсудим, как осведомленность и образование могут помочь в предотвращении возникновения зависимости. Читатели смогут ознакомиться с полезными советами и ресурсами, которые способствуют здоровому образу жизни.
Смотрите также – капельница после запоя состав
Особого внимания требуют пожилые люди, больные с тяжелыми заболеваниями, лица после длительного запоя и люди, у которых ранее уже были судороги, психозы либо алкогольный делирий. Нельзя гарантировать безопасность самостоятельного домашнего вытрезвления без оценки врача. При возникновении опасных симптомов решение о госпитализации принимает медицинский специалист с учетом клинических данных.
Изучить вопрос подробнее – http://images.google.mn/url?q=https://n.vyvod-iz-zapoya-v-krasnoyarske17.ru
С пациентом работают профильные специалисты, которые оценивают состояние и подбирают безопасный план помощи.
Изучить вопрос подробнее – https://3.vyvod-iz-zapoya-moskva1-13.ru/
Своевременное обращение к врачу позволяет остановить запой, уменьшить проявления абстинентного синдрома, снизить риск осложнений и значительно ускорить восстановление организма. Медицинская помощь особенно актуальна, если зависимый пил несколько суток подряд, не смог остановиться самостоятельно или предыдущие запои уже приводили к тяжелому похмелью. Чем раньше родственники решили вызвать нарколога, тем больше возможностей провести детокс и стабилизацию без развития критического состояния.
Получить больше информации – http://images.google.co.im/url?q=https://k.vyvod-iz-zapoya-v-krasnoyarske17.ru
Врач учитывает симптомы, риски, анамнез и семейную ситуацию, чтобы предложить подходящую программу.
Ознакомиться с деталями – http://maps.google.co.vi/url?q=https://1.vyvod-iz-zapoya-reutov4.ru
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Изучить рекомендации специалистов – нарколог вывод из запоя на дому
В этой статье рассматривается комплексный подход к избавлению от зависимости. Читатель узнает, как сочетание физического, психологического и духовного восстановления помогает достичь стойкого выздоровления.
Лови подробности – вывести из запоя нижний новгород дома
Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
Изучить вопрос подробнее – narkologicheskaya klinika v oblasti
Вывод из запоя помогает прервать длительное употребление спиртного, уменьшить проявления абстиненции и начать восстановление организма. Наркологическая помощь может оказываться на дому, амбулаторно и в стационаре клиники. Формат выбирается с учетом длительности запоя, возраста пациента, самочувствия, хронических болезней, количества выпитого и текущего уровня риска. Сейчас особенно важно не затягивать с обращением, если состояние ухудшается в течение нескольких суток, появляется тремор, бессонница, рвота, выраженная тревога или резкие изменения артериального давления.
Дополнительная информация – наркология вывод из запоя
Помощь можно получить анонимно, с аккуратным оформлением и внимательным отношением к личным данным.
Подробнее – https://1.vyvod-iz-zapoya-moskva1-13.ru/
Помогаем быстро перейти от консультации к конкретному плану: выезд, стационар или наблюдение.
Изучить вопрос подробнее – kapelnicy-ot-zapoya-nedorogo
Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
Лучшее решение — прямо здесь – вывод из запоя на дому цена
Лечение на дому выбирают многие пациенты, которым важно получить помощь анонимно и без поездки в клинику. Наркологическая служба выезжает к пациенту в согласованное время, включая вечерние часы и выходных дни. Лечение на дому начинается с оценки жалоб и анамнеза пациента. Доктора учитывают длительность запоя, состояние сердечно-сосудистой системы, наличие хронических болезней и употребление лекарств. После этого подбирается лечение, которое может включать капельницу, средства для коррекции отдельных нарушений и рекомендации на следующие сутки.
Подробнее – https://vyvod-iz-zapoya-orekhovo-zuevo4.ru/
При перечисленных проявлениях домашнее лечение может быть небезопасным. Врач определяет, нужна ли срочная госпитализация, дополнительная диагностика или лечение в стационаре. Самостоятельный прием сильнодействующих лекарств, попытка снять абстиненцию новой дозой алкоголя или случайным уколом способны привести к ухудшению.
Изучить вопрос подробнее – https://4.vyvod-iz-zapoya-v-ekaterinburge16.ru/
В этой статье мы рассматриваем разные способы борьбы с алкогольной зависимостью. Обсуждаются методы лечения, программы реабилитации и советы для поддержки близких. Читатели получат информацию о том, как преодолеть зависимость и добиться успешного выздоровления.
Открой скрытое – вывод из запоя наркология
В этой статье мы подробно рассматриваем проверенные методы борьбы с зависимостями, включая психотерапию, медикаментозное лечение и поддержку со стороны общества. Мы акцентируем внимание на важности комплексного подхода и возможности успешного восстановления для людей, столкнувшихся с этой проблемой.
Погрузиться в научную дискуссию – вывод из запоя вызвать на дом
Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
Подробнее – https://maps.google.ro/url?q=https://s.vyvod-iz-zapoya-v-krasnoyarske17.ru
Мы рассмотрим современные вызовы здравоохранения и пути их решения с помощью технологий и научных исследований. В статье собраны данные о новых лекарствах, методах диагностики и системном подходе к улучшению здоровья населения.
Не упусти важное! – медицинская помощь при запое на дому москва
Перед приездом желательно сообщить возраст пациента, продолжительность запоя, примерное количество алкогольных напитков и сведения о хронических болезнях. В момент визита нарколог уточняет анамнез, проверяет основные показатели и определяет дальнейшее лечение. Если пациенту становится хуже прямо во время визита, доктор принимает меры и решает вопрос о переводе в стационар.
Узнать больше – https://vyvod-iz-zapoya-orekhovo-zuevo4.ru/
В этой статье рассматривается комплексный подход к избавлению от зависимости. Читатель узнает, как сочетание физического, психологического и духовного восстановления помогает достичь стойкого выздоровления.
Желаете узнать подробности? – неотложная наркологическая помощь
A regular rental just wouldn’t cut it for this trip. Others had great reputations but were fully booked. Then I came across exactly what I was looking for. exotic car rental miami — Every vehicle was in perfect condition. They answered all my questions and helped me choose the right car. I took a beautiful convertible for a spin. This is where you should book. high luxury auto rentals miami high luxury auto rentals miami Check the link for the full fleet and pricing for South Florida. It’s the easiest way to make your trip unforgettable. Luxury car rental Miami — the ultimate way to experience the city!
casino https://codibu.com/freeanalysis/domain/kirgo-online.com
Информация об обращении не передается третьим лицам, а детали лечения обсуждаются только с пациентом.
Подробнее – нарколог на дом анонимно
Даже при желании получить помощь на дому медицинский работник обязан учитывать тяжесть состояния. Капельница не должна откладывать экстренное обращение в клинику. При нарушении сознания, судорогах, сильной боли в груди, признаках инсульта, тяжелого обезвоживания, острой аллергической реакции или резком ухудшении самочувствия необходима полноценная диагностика и мониторирование в условиях медицинской организации.
Изучить вопрос подробнее – платные капельницы на дому
Запой сопровождается систематическим употреблением спиртного в течение нескольких дней и более, когда зависимый человек начинает принимать новую дозу алкоголя для временного устранения похмелья и абстиненции. Такое поведение постепенно усиливает токсическое воздействие на печень, сердце, сосудистую и нервную системы, головной мозг и другие внутренние органы. Чем дольше продолжается запой, тем сложнее организму восстановить нормальное физическое и психическое состояние самостоятельно. Именно поэтому при тяжелом течении алкогольной зависимости рекомендуется обратиться к врачу, а не пытаться резко прекратить пить без медицинского наблюдения.
Получить больше информации – вывод из запоя в стационаре