蓝屏,谁之过?

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隐藏得太深,总让人捉摸不定!>

6,630 条评论

  1. Помимо медицинских процедур, клиника делает акцент на психологической поддержке и постлечебной адаптации. Пациентам помогают не только избавиться от физической зависимости, но и сформировать устойчивую мотивацию к трезвости, восстановить интерес к жизни и наладить отношения с близкими. Это достигается за счёт участия психологов, психотерапевтов и специалистов по социальной реабилитации.
    Выяснить больше – http://narkologicheskaya-klinika-v-izhevske18.ru

  2. В основе работы клиники «ИжТрезвоМед Центр» лежит принцип персонализированной медицины. Это означает, что каждый пациент получает не шаблонное лечение, а тщательно подобранный комплекс процедур, учитывающий его состояние, историю заболевания, уровень мотивации и социальную ситуацию. Такой подход позволяет добиться стабильного результата даже в сложных случаях. Лечение проводится анонимно, без постановки на учёт и разглашения данных, что особенно важно для тех, кто ценит конфиденциальность.
    Подробнее – частная наркологическая клиника в ижевске

  3. «Ижевский Центр Трезвых Решений» — это частное медицинское учреждение, где проводится лечение всех форм алкогольной и наркотической зависимости. Программы терапии разработаны на основе международных рекомендаций и включают не только медикаментозное воздействие, но и психологическую поддержку. Все процедуры проходят анонимно, без постановки на учёт, что особенно важно для пациентов, желающих сохранить конфиденциальность.
    Подробнее тут – наркологическая клиника в ижевске

  4. Коммерческий и государственный тендер — это конкурентная процедура выбора поставщика товаров или оказания услуг. Заказчик размещает требования, а компании подают заявки и участвуют в торгах.
    Эксклюзивная информация для вас – https://tendernoe-soprovozhdenie-rostov-na-donu.ru/

  5. В процессе терапии специалисты используют только сертифицированные препараты и современные методики, рекомендованные Минздравом РФ. Это позволяет безопасно очищать организм, устранять симптомы абстиненции и снижать риск рецидивов. Принцип клиники — работать не с последствиями зависимости, а с её причиной.
    Узнать больше – запой наркологическая клиника в астрахани

  6. Состав подбирается персонально, без шаблонов: корректируется гидратация, электролиты, витамины, антиоксидантная и гепатопротекторная поддержка. Ниже приведены ориентировочные модели, иллюстрирующие подход к детоксу при разных клинических сценариях.
    Получить больше информации – http://vyvod-iz-zapoya-ulan-ude0.ru/vyvod-iz-zapoya-na-domu-ulan-ude/https://vyvod-iz-zapoya-ulan-ude0.ru

  7. Этот информативный текст отличается привлекательным содержанием и актуальными данными. Мы предлагаем читателям взглянуть на привычные вещи под новым углом, предоставляя интересный и доступный материал. Получите удовольствие от чтения и расширьте кругозор!
    Продолжить чтение – https://cinemalido.com.br/abebet-turkye-canl-bahs-sanal-rulet-oyna

  8. Для формирования структурированного лечения используются методы, обеспечивающие анализ текущей клинической картины. Ниже представлены ключевые направления, задействованные при формировании терапевтических решений.
    Подробнее можно узнать тут – наркологическая клиника лечение алкоголизма

  9. Публикация приглашает вас исследовать неизведанное — от древних тайн до современных достижений науки. Вы узнаете, как случайные находки превращались в революции, а смелые мысли — в новые эры человеческого прогресса.
    Кликни и узнай всё! – https://www.sergiobartoli.it/2024/02/05/insieme-per-la-prevenzione-del-tumore-al-seno

  10. Лечение проходит поэтапно, чтобы пациент не испытывал стресса и перегрузок. Каждый шаг контролируется врачами, а терапия корректируется в зависимости от состояния. В таблице ниже представлена структура программы лечения в клинике «АстраМед Трезвость».
    Ознакомиться с деталями – http://narkologicheskaya-klinika-v-astrakhani18.ru/astrakhanskaya-narkologiya/

  11. Публикация посвящена жизненным историям людей, успешно справившихся с зависимостью. Мы покажем, что выход есть, и он начинается с первого шага — принятия проблемы и желания измениться.
    Ознакомьтесь поближе – https://demetra-tmn.ru/klinika-kodirovaniya-ot-alkogolizma

  12. Этот обзор предлагает структурированное изложение информации по актуальным вопросам. Материал подан так, чтобы даже новичок мог быстро освоиться в теме и начать использовать полученные знания в практике.
    Желаете узнать подробности? – https://www.hotel-sugano.com/bbs/sugano.cgi/www.skitour.su/www.skitour.su/www.hip-hop.ru/forum/id298234-worksale/www.tovery.net/www.hip-hop.ru/forum/fen-d-10.ru

  13. Детокс — важный этап лечения, который помогает очистить организм от токсинов и продуктов распада алкоголя или наркотиков. В клинике «ТомскМед Трезвость» используются современные капельницы и лекарственные комбинации, направленные на восстановление биохимических процессов в организме. Ниже представлена таблица с примерами капельниц, применяемых в детоксикационных программах.
    Получить больше информации – наркологическая клиника вывод из запоя томск

  14. В данной статье вы найдете комплексный подход к изучению насущных тем. Мы комбинируем теоретические сведения с практическими советами, чтобы читатель мог не только понять проблему, но и найти пути её решения.
    Более того — здесь – https://doon.ca/courses/baf3m-financial-accounting-fundamentals-grade-11-university

  15. Эта статья погружает вас в увлекательный мир знаний, где каждый факт становится открытием. Мы расскажем о ключевых исторических поворотных моментах и научных прорывах, которые изменили ход цивилизации. Поймите, как прошлое формирует настоящее и как его уроки могут помочь нам строить будущее.
    Лови подробности – https://restauration-eglise-saint-yves-minihy.com/photo-entete-3

  16. «Ижевский Центр Трезвых Решений» — это частное медицинское учреждение, где проводится лечение всех форм алкогольной и наркотической зависимости. Программы терапии разработаны на основе международных рекомендаций и включают не только медикаментозное воздействие, но и психологическую поддержку. Все процедуры проходят анонимно, без постановки на учёт, что особенно важно для пациентов, желающих сохранить конфиденциальность.
    Подробнее можно узнать тут – http://narkologicheskaya-klinika-v-izhevsk18.ru

  17. Структурированное наблюдение позволяет поддерживать согласованность лечебных мероприятий и своевременно реагировать на изменения. Такая система создаёт единый аналитический подход для оценки состояния и обеспечивает целостность терапевтического процесса.
    Углубиться в тему – анонимная наркологическая клиника владивосток

  18. Часто предприниматели объединяют понятия тендер и госзакупки, так как обе процедуры связаны с конкурсным выбором поставщика. Однако между ними существуют определённые различия, которые важно понимать перед началом работы в этой сфере.
    Разгадайте все загадки – https://tendernoe-soprovozhdenie-rostov-na-donu.ru

  19. Для формирования структурированного лечения используются методы, обеспечивающие анализ текущей клинической картины. Ниже представлены ключевые направления, задействованные при формировании терапевтических решений.
    Детальнее – наркологическая клиника лечение алкоголизма владивосток

  20. Часто предприниматели объединяют понятия тендер и госзакупки, так как обе процедуры связаны с конкурсным выбором поставщика. Однако между ними существуют определённые различия, которые важно понимать перед началом работы в этой сфере.
    Разгадайте все загадки – тендерное сопровождение под ключ цена

  21. Вывод из запоя — это не просто медицинская процедура, а важный шаг на пути восстановления организма и возвращения человека к нормальной жизни. В клинике «ВладТрезвие Центр» пациенты получают профессиональную помощь, основанную на современных методиках детоксикации и безопасном медикаментозном восстановлении. Каждый случай рассматривается индивидуально, а лечение подбирается с учётом возраста, состояния здоровья и продолжительности запоя. Наркологи центра выезжают на дом круглосуточно, обеспечивая помощь даже в экстренных ситуациях, когда время играет ключевую роль.
    Выяснить больше – наркологический вывод из запоя владивосток

  22. Публикация приглашает вас исследовать неизведанное — от древних тайн до современных достижений науки. Вы узнаете, как случайные находки превращались в революции, а смелые мысли — в новые эры человеческого прогресса.
    Связаться за уточнением – http://besthiddengunsafeinwall.com/small-corner-gun-safe

  23. В этой статье собраны факты, которые освещают целый ряд важных вопросов. Мы стремимся предложить читателям четкую, достоверную информацию, которая поможет сформировать собственное мнение и лучше понять сложные аспекты рассматриваемой темы.
    Читать полностью – https://gatrik-ui.or.id/2021/10/25/s5e11-pembicara-prof-dr-dahlan-iskan

  24. Мы собрали для вас самые захватывающие факты из мира науки и истории. От малознакомых деталей до грандиозных событий — эта статья расширит ваш кругозор и подарит новое понимание того, как устроен наш мир.
    Подробная информация доступна по запросу – https://portaldobrejo.com.br/rede-de-oticas-fabrica-de-oculos-e-reinaugurada-em-belem-na-pb/dsc_3635

  25. Этот информативный текст отличается привлекательным содержанием и актуальными данными. Мы предлагаем читателям взглянуть на привычные вещи под новым углом, предоставляя интересный и доступный материал. Получите удовольствие от чтения и расширьте кругозор!
    Подробнее тут – https://futuredream.wpxblog.jp/wpxblog-struggle-x2

  26. В этой информационной статье вы найдете интересное содержание, которое поможет вам расширить свои знания. Мы предлагаем увлекательный подход и уникальные взгляды на обсуждаемые темы, побуждая пользователей к активному мышлению и критическому анализу.
    Дополнительно читайте здесь – https://palmarubacondos.com/contact-aruba-condos/people-1

  27. Этот текст призван помочь читателю расширить кругозор и получить практические знания. Мы используем простой язык, наглядные примеры и структурированное изложение, чтобы сделать обучение максимально эффективным и увлекательным.
    Что скрывают от вас? – https://www.drachenreiter.berlin/leitbild

  28. В данной обзорной статье представлены интригующие факты, которые не оставят вас равнодушными. Мы критикуем и анализируем события, которые изменили наше восприятие мира. Узнайте, что стоит за новыми открытиями и как они могут изменить ваше восприятие реальности.
    Перейти к статье – https://crvradio.com.co/vida-latina

  29. Тендерный специалист помогает разобраться в особенностях каждого закона, а также обеспечивает грамотное сопровождение всех процедур. Это особенно важно для компаний, которые только начинают участвовать в торгах и не имеют опыта работы с государственными контрактами.
    Узнайте больше прямо сейчас – услуги тендерного сопровождения ростов на дону

  30. В статье представлены ключевые моменты по актуальной теме, дополненные советами экспертов и ссылками на дополнительные ресурсы. Цель материала — дать читателю инструменты для самостоятельного развития и принятия осознанных решений.
    Лови подробности – https://weskus-mall.co.za

  31. Эта статья сочетает познавательный и занимательный контент, что делает ее идеальной для любителей глубоких исследований. Мы рассмотрим увлекательные аспекты различных тем и предоставим вам новые знания, которые могут оказаться полезными в будущем.
    Где можно узнать подробнее? – https://bontontoys.jp/philosophy/philosophy-catch

  32. В этой информационной статье вы найдете интересное содержание, которое поможет вам расширить свои знания. Мы предлагаем увлекательный подход и уникальные взгляды на обсуждаемые темы, побуждая пользователей к активному мышлению и критическому анализу.
    Подробнее – https://saifbelhasaholding.com/2022/05/18/wasel-vehicle-testing-opening-nad-al-hammar-dubai

  33. Финансовые инструменты позволяют заказчику убедиться в надежности участника и его готовности выполнить обязательства по контракту. При этом грамотное сопровождение снижает вероятность финансовых рисков и помогает правильно оформить документы для банка.
    Глубже в тему — здесь – тендерное сопровождение в ростове на дону

  34. Вывод из запоя требует комплексного контроля всех физиологических параметров. Ниже представлены основные направления наблюдения, формирующие структуру оценки состояния.
    Узнать больше – https://vyvodiz-zapoya-izhevsk18.ru

  35. Наркологическая клиника выстраивает лечебные мероприятия в соответствии с алгоритмами, направленными на достижение стабильного состояния пациента. Важную роль играет последовательное выполнение процедур, включая оценку реакции организма и корректировку вмешательств. Формирование индивидуальной программы позволяет учитывать особенности каждого случая и поддерживать высокий уровень эффективности. Процесс наблюдения сопровождается непрерывным анализом, что делает терапию адаптивной и предсказуемой. В клинике соблюдается принцип многоуровневого контроля, обеспечивающий безопасность и стабильность лечения.
    Ознакомиться с деталями – наркологическая клиника наркологический центр в томске

  36. Такой подход позволяет устранить физические последствия запоя и снизить психологическую зависимость. Уже после первой процедуры пациенты отмечают улучшение самочувствия, появление аппетита и нормализацию сна. Важно не ограничиваться только экстренной помощью — специалисты рекомендуют пройти курс восстановления, чтобы предотвратить рецидивы.
    Получить дополнительную информацию – врач вывод из запоя владивосток

  37. Этот медицинский обзор сосредоточен на последних достижениях, которые оказывают влияние на пациентов и медицинскую практику. Мы разбираем инновационные методы лечения и исследований, акцентируя внимание на их значимости для общественного здоровья. Читатели узнают о свежих данных и их возможном применении.
    Подробнее тут – https://alko-narko.info/zapoy/kapelnica-ot-pohmelya.html

  38. Эта информационная статья охватывает широкий спектр актуальных тем и вопросов. Мы стремимся осветить ключевые факты и события с ясностью и простотой, чтобы каждый читатель мог извлечь из нее полезные знания и полезные инсайты.
    Есть чему поучиться – https://appeal.org.uk/andy-malkinson

  39. В обзорной статье вы найдете собрание важных фактов и аналитики по самым разнообразным темам. Мы рассматриваем как современные исследования, так и исторические контексты, чтобы вы могли получить полное представление о предмете. Погрузитесь в мир знаний и сделайте шаг к пониманию!
    Углубить понимание вопроса – https://savorrecipes.com/recipe/cheddar-and-horseradish-burger

  40. Этот обзор сосредоточен на различных подходах к избавлению от зависимости. Мы изучим традиционные и альтернативные методы, а также их сочетание для достижения максимальной эффективности. Читатели смогут открыть для себя новые стратегии и подходы, которые помогут в их борьбе с зависимостями.
    Исследовать вопрос подробнее – https://stop-alko.info/alkogolizm/kak-vybrat-nadyozhnuyu-kliniku-dlya-kodirovaniya.html

  41. Мы собрали для вас самые захватывающие факты из мира науки и истории. От малознакомых деталей до грандиозных событий — эта статья расширит ваш кругозор и подарит новое понимание того, как устроен наш мир.
    Интересует подробная информация – https://dreva.by/_3

  42. Наркологическая клиника выстраивает лечебные мероприятия в соответствии с алгоритмами, направленными на достижение стабильного состояния пациента. Важную роль играет последовательное выполнение процедур, включая оценку реакции организма и корректировку вмешательств. Формирование индивидуальной программы позволяет учитывать особенности каждого случая и поддерживать высокий уровень эффективности. Процесс наблюдения сопровождается непрерывным анализом, что делает терапию адаптивной и предсказуемой. В клинике соблюдается принцип многоуровневого контроля, обеспечивающий безопасность и стабильность лечения.
    Получить дополнительную информацию – http://narkologicheskaya-klinika-tomsk18.ru/narkologicheskaya-klinika-v-tomske-otzyvy/

  43. Эта информационная заметка содержит увлекательные сведения, которые могут вас удивить! Мы собрали интересные факты, которые сделают вашу жизнь ярче и полнее. Узнайте нечто новое о привычных аспектах повседневности и откройте для себя удивительный мир информации.
    Только факты! – https://dh-electricalservices.co.uk/electrical-inspection-testing/what-is-5-year-electrical-testing

  44. В этом интересном тексте собраны обширные сведения, которые помогут вам понять различные аспекты обсуждаемой темы. Мы разбираем детали и факты, делая акцент на важности каждого элемента. Не упустите возможность расширить свои знания и взглянуть на мир по-новому!
    Подробная информация доступна по запросу – https://bookwormloscabos.com/2019/02/20/2792

  45. Каждая процедура проводится под контролем врача и сопровождается мониторингом давления, пульса и температуры. После курса капельниц пациент чувствует улучшение самочувствия, нормализуется сон, снижается раздражительность, появляется энергия и ясность сознания.
    Подробнее тут – наркологическая клиника клиника помощь в астрахани

  46. Часто предприниматели объединяют понятия тендер и госзакупки, так как обе процедуры связаны с конкурсным выбором поставщика. Однако между ними существуют определённые различия, которые важно понимать перед началом работы в этой сфере.
    Получите экспертное мнение – тендерное сопровождение

  47. Участие в государственных и коммерческих процедурах требует точной подготовки, понимания законодательства и внимательной работы с документами. Для многих компаний самостоятельная работа с закупками становится сложной задачей: необходимо отслеживать новые закупки, анализировать требования, оформлять документы и взаимодействовать с площадками.
    Полный разбор — только здесь – участие в тендерах госзакупок ростов на дону

  48. Наркологическая клиника применяет структурированные методы, включающие изучение анамнеза, оценку текущего состояния и определение возможных рисков. На основе полученной информации формируются индивидуальные схемы лечения, направленные на нормализацию внутренних процессов. Работа строится на многоуровневом наблюдении, включающем анализ лабораторных показателей и оценку функциональных систем организма. Такой формат позволяет поддерживать стабильную динамику изменений и избегать осложнений. В клинике создается согласованная модель вмешательств, позволяющая получать устойчивые результаты.
    Узнать больше – http://narkologicheskaya-klinika-tomsk18.ru

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注