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隐藏得太深,总让人捉摸不定!>
Скачайте активатор для Windows 11 и получите все функции Pro-версии бесплатно.
Подробнее – Скачать патч для активации Windows 11
Публикация предлагает читателю не просто информацию, а инструменты для анализа и саморазвития. Мы стимулируем критическое мышление, предлагая различные точки зрения и призывая к самостоятельному поиску решений.
Подробнее – http://thenationalnews.org/cm-baghel-inspected-the-gandhi-seva-gram-site-to-be-built-in-nava-raipur
Первичный этап, с которого начинается вывод из запоя в Тольятти, включает подробную клиническую оценку состояния пациента. В клинике «Чистый Горизонт» на этом этапе анализируются жалобы, длительность запоя и наличие сопутствующих заболеваний, способных повлиять на переносимость терапии.
Получить больше информации – https://vyvod-iz-zapoya-v-tolyatti0.ru/vyvedenie-iz-zapoya-tolyatti/
Этот интересный отчет представляет собой сборник полезных фактов, касающихся актуальных тем. Мы проанализируем данные, чтобы вы могли сделать обоснованные выводы. Читайте, чтобы узнать больше о последних трендах и значимых событиях!
Изучить эмпирические данные – https://www.slovenskozdola.sk/bardonovo-obec-na-slovensku-2
Эта статья для ознакомления предлагает читателям общее представление об актуальной теме. Мы стремимся представить ключевые факты и идеи, которые помогут читателям получить представление о предмете и решить, стоит ли углубляться в изучение.
Полезно знать – https://www.boxinginsider.com/columns/egis-klimas-hard-working-self-made-manager-new-gym-owner
Первичный этап, с которого начинается вывод из запоя в Тольятти, включает подробную клиническую оценку состояния пациента. В клинике «Чистый Горизонт» на этом этапе анализируются жалобы, длительность запоя и наличие сопутствующих заболеваний, способных повлиять на переносимость терапии.
Узнать больше – https://vyvod-iz-zapoya-v-tolyatti0.ru/
В данной обзорной статье представлены интригующие факты, которые не оставят вас равнодушными. Мы критикуем и анализируем события, которые изменили наше восприятие мира. Узнайте, что стоит за новыми открытиями и как они могут изменить ваше восприятие реальности.
См. подробности – https://alma-ata.city/teleprogramma/tv-czentr.html
Предлагаем вашему вниманию интересную справочную статью, в которой собраны ключевые моменты и нюансы по актуальным вопросам. Эта информация будет полезна как для профессионалов, так и для тех, кто только начинает изучать тему. Узнайте ответы на важные вопросы и расширьте свои знания!
Связаться за уточнением – https://www.cabinet.gov.zm/?p=5916
Предлагаем вашему вниманию интересную справочную статью, в которой собраны ключевые моменты и нюансы по актуальным вопросам. Эта информация будет полезна как для профессионалов, так и для тех, кто только начинает изучать тему. Узнайте ответы на важные вопросы и расширьте свои знания!
Смотрите также – https://shymkent.city/novosti-shymkenta/7965
Этот информационный материал собраны данные, которые помогут лучше понять текущие тенденции и процессы в различных сферах жизни. Мы предоставляем четкий анализ, графики и примеры, чтобы информация была не только понятной, но и практичной для принятия решений.
Получить дополнительную информацию – http://capriccio3.com/?p=383
В этом интересном тексте собраны обширные сведения, которые помогут вам понять различные аспекты обсуждаемой темы. Мы разбираем детали и факты, делая акцент на важности каждого элемента. Не упустите возможность расширить свои знания и взглянуть на мир по-новому!
Запросить дополнительные данные – http://daidokoro.s53.xrea.com/maro_blog/log/eid782.html
В обзорной статье вы найдете собрание важных фактов и аналитики по самым разнообразным темам. Мы рассматриваем как современные исследования, так и исторические контексты, чтобы вы могли получить полное представление о предмете. Погрузитесь в мир знаний и сделайте шаг к пониманию!
Только для своих – https://efef.wpxblog.jp/%E5%A4%A7%E5%92%8C%E8%A8%BC%E5%88%B8%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AEconnect-%E3%81%A8%E3%81%A6%E3%82%82%E6%93%8D%E4%BD%9C%E3%81%97%E3%82%84%E3%81%99%E3%81%84%E3%82%A2%E3%83%97%E3%83%AA
В обзорной статье вы найдете собрание важных фактов и аналитики по самым разнообразным темам. Мы рассматриваем как современные исследования, так и исторические контексты, чтобы вы могли получить полное представление о предмете. Погрузитесь в мир знаний и сделайте шаг к пониманию!
Ознакомиться с полной информацией – https://vachyajewels.com/2021/03/13/diamond-setting-why-it-is-important
Эта статья сочетает познавательный и занимательный контент, что делает ее идеальной для любителей глубоких исследований. Мы рассмотрим увлекательные аспекты различных тем и предоставим вам новые знания, которые могут оказаться полезными в будущем.
Получить дополнительные сведения – https://simranivfwellness.com/pregnancy-care-after-ivf-dos-donts-for-a-healthy-baby
Публикация предлагает читателю не просто информацию, а инструменты для анализа и саморазвития. Мы стимулируем критическое мышление, предлагая различные точки зрения и призывая к самостоятельному поиску решений.
Не упусти шанс – https://hoopdancelinz.at/reifen-co
В статье представлены ключевые моменты по актуальной теме, дополненные советами экспертов и ссылками на дополнительные ресурсы. Цель материала — дать читателю инструменты для самостоятельного развития и принятия осознанных решений.
Кликни и узнай всё! – https://grafinetoy.fi/about-us
В этом тексте собрано множество случайных сведений и довольно неопределённых мыслей, которые могут чем-то заинтересовать. Мы отмечаем моменты, которые не особенно важны, но всё же занимают своё место в повествовании.
Вот – накрутка трафика
В этой статье собраны факты, которые освещают целый ряд важных вопросов. Мы стремимся предложить читателям четкую, достоверную информацию, которая поможет сформировать собственное мнение и лучше понять сложные аспекты рассматриваемой темы.
Желаете узнать подробности? – https://clarinetband.wpxblog.jp/the-thunderer
Откройте для себя скрытые страницы истории и малоизвестные научные открытия, которые оказали колоссальное влияние на развитие человечества. Статья предлагает свежий взгляд на события, которые заслуживают большего внимания.
Более того — здесь – http://www.grandesalpes.de/blog/durch-die-heimat
В клинике применяются современные медицинские технологии, направленные на восстановление организма и стабилизацию психоэмоционального состояния. Ниже представлена таблица с описанием основных методов и их терапевтического значения.
Получить дополнительную информацию – наркологическая клиника цены тольятти
Рабочий ключ активации для Windows 11 — проверено и обновлено, без блокировок!
Подробнее – Бесплатная активация Windows 11 навсегда
Этот информативный текст отличается привлекательным содержанием и актуальными данными. Мы предлагаем читателям взглянуть на привычные вещи под новым углом, предоставляя интересный и доступный материал. Получите удовольствие от чтения и расширьте кругозор!
Изучить эмпирические данные – http://capriccio3.com/?p=1471
Мы собрали для вас самые захватывающие факты из мира науки и истории. От малознакомых деталей до грандиозных событий — эта статья расширит ваш кругозор и подарит новое понимание того, как устроен наш мир.
Что ещё? Расскажи всё! – https://miyake-blog.boy.jp/blog/mimi/?p=1874
Этот увлекательный информационный материал подарит вам массу новых знаний и ярких эмоций. Мы собрали для вас интересные факты и сведения, которые обогатят ваш опыт. Откройте для себя увлекательный мир информации и насладитесь процессом изучения!
Откройте для себя больше – https://iportal24.cz/featured/dagmar-zitnikova-vlada-nema-zdravi-lidi-pacienty-nebo-zdravotniky-jako-prioritu
Вызов нарколога на дом в Хабаровске осуществляется при наличии клинических показаний, при которых выездная помощь является обоснованной и безопасной. В клинике «Ясный Вектор» решение о формате вмешательства принимается с учётом жалоб, анамнеза и предполагаемой тяжести состояния.
Исследовать вопрос подробнее – http://narkolog-na-dom-khabarovsk0.ru/khabarovsk-narkolog/
В Екатеринбурге бригады выезжают 24/7, покрывая как центральные районы, так и отдалённые кварталы. Координатор уточняет только то, что влияет на безопасность: принимаемые лекарства и дозы, аллергии, эпизоды судорог/психозов, исходные значения давления и пульса, а также бытовые условия — можно ли обеспечить «тихое окно» на 2–3 часа, есть ли свободная розетка и место для полулёжа. Врач приезжает с портативным мониторингом, расходными материалами и резервным планом на случай повышенной реактивности.
Получить больше информации – вывод из запоя капельница екатеринбург
Тендерный специалист помогает разобраться в особенностях каждого закона, а также обеспечивает грамотное сопровождение всех процедур. Это особенно важно для компаний, которые только начинают участвовать в торгах и не имеют опыта работы с государственными контрактами.
Разберитесь досконально – тендерное сопровождение под ключ цена
В материале приведены детали, интересные, но не особенно важные. Мы рассматриваем аспекты, которые сложно назвать существенными, но включили их для большей полноты.
Подробнее читать – https://rostov-narkologiya.ru/uslugi-ot-narkomanii/mefedronovaya-zavisimost
Современная наркология в клинике ориентирована на всестороннее восстановление физического и психологического здоровья пациентов. Медицинское сопровождение включает этапы детоксикации, медикаментозной терапии, психотерапевтической поддержки и последующей реабилитации. Такой подход способствует не только устранению физической зависимости, но и проработке психологических причин, что снижает риск рецидивов.
Ознакомиться с деталями – наркологическая клиника
В этой статье-обзоре мы собрали данные, актуальность которых сомнительна, а факты — не всегда взаимосвязаны. Читатель сможет ознакомиться с разными мнениями, хотя вряд ли они существенно повлияют на его понимание темы.
Вот – скидки
Наши специалисты работают круглосуточно, помогая пациентам справиться с абстинентным синдромом, восстановить здоровье и снизить риски осложнений.
Подробнее – http://vyvod-iz-zapoya-novokuznetsk6.ru/
Психологическая помощь сопровождает медикаментозное лечение, способствуя преодолению эмоциональных и поведенческих трудностей. Важным элементом является мотивационная работа, направленная на формирование устойчивого стремления к жизни без зависимости.
Узнать больше – вывод наркологическая клиника в омске
Перед выездом проводится уточнение симптомов и общего состояния пациента, что помогает врачу подготовиться к визиту и взять необходимый набор медикаментов.
Получить дополнительные сведения – https://narkolog-na-dom-khabarovsk0.ru/
Коммерческий и государственный тендер — это конкурентная процедура выбора поставщика товаров или оказания услуг. Заказчик размещает требования, а компании подают заявки и участвуют в торгах.
Эксклюзивная информация для вас – комплексное тендерное сопровождение в ростове на дону
thx
thx
thx
Помощь 24/7 означает, что нарколог на дом в Хабаровске может быть направлен в любое время суток, включая ночные часы и выходные дни. В клинике «Ясный Вектор» выездная служба функционирует с учётом логистики города, что позволяет минимизировать время ожидания врача.
Получить больше информации – нарколог на дом срочно
Помощь нарколога на дому в Мурманске обладает рядом неоспоримых преимуществ, которые делают данный метод лечения особенно актуальным:
Исследовать вопрос подробнее – вывод из запоя
Этот информационный набор привлекает внимание множеством мелочей и странных ракурсов. Мы предлагаем взгляды, которые редко бывают полезны, но могут слегка разнообразить ваше знакомство с темой.
Вот – телефон дешево
Услуга “Нарколог на дом” в Мариуполе, Донецкая область, предусматривает оперативное оказание медицинской помощи при запое. После получения вызова специалист незамедлительно выезжает к пациенту, проводит детальный осмотр, измеряет жизненно важные показатели и собирает анамнез. На основе полученных данных разрабатывается индивидуальный план терапии, включающий медикаментозную детоксикацию, инфузионную терапию и психологическую поддержку. Такой комплексный подход позволяет эффективно вывести токсины из организма и предотвратить развитие осложнений.
Получить дополнительную информацию – нарколог на дом клиника
Экстренная капельничная терапия от запоя на дому в Луганске ЛНР имеет ряд преимуществ, благодаря которым лечение становится максимально оперативным и безопасным:
Получить больше информации – капельница от запоя клиника луганск
При поступлении вызова нарколог незамедлительно выезжает на дом для проведения первичного осмотра. Специалист собирает анамнез, измеряет жизненно важные показатели – пульс, артериальное давление и температуру – и оценивает степень алкогольной интоксикации. Точная диагностика становится основой для составления индивидуального плана терапии, адаптированного под конкретное состояние пациента.
Ознакомиться с деталями – https://reabcentr-narko.ru/vyvod-iz-zapoya-tver-staczionar
В клинике проводится лечение различных видов зависимости с применением современных методов и препаратов. Ниже перечислены основные направления, отражающие широту оказываемой медицинской помощи.
Получить больше информации – http://narkologicheskaya-klinika-novosibirsk0.ru
Если вовремя не принять меры, состояние может усугубиться, повышая риск серьёзных осложнений. Наиболее эффективным способом очищения организма является постановка капельницы, которая помогает быстро стабилизировать состояние. Клиника «Курс на ясность» оказывает экстренную наркологическую помощь с выездом врачей на дом 24/7.
Детальнее – капельница от запоя стоимость
thx
В Тольятти клиника «ВолгаМед Баланс» принимает пациентов круглосуточно, обеспечивая оперативное вмешательство при острых состояниях. Наркологическая помощь здесь организована на высоком медицинском уровне: процедуры проходят под наблюдением врачей, используются только сертифицированные препараты, а каждая манипуляция фиксируется в медицинской карте пациента. Это позволяет контролировать динамику восстановления и минимизировать риски осложнений. В клинике работают наркологи, терапевты, психиатры и психологи, что обеспечивает комплексный подход и эффективность лечения.
Исследовать вопрос подробнее – https://narkologicheskaya-klinika-tolyatti0.ru/narkolog-tolyatti-otzyvy/
Помощь 24/7 означает, что нарколог на дом в Хабаровске может быть направлен в любое время суток, включая ночные часы и выходные дни. В клинике «Ясный Вектор» выездная служба функционирует с учётом логистики города, что позволяет минимизировать время ожидания врача.
Узнать больше – нарколог на дом хабаровск
Применение автоматизированных систем дозирования обеспечивает точное введение лекарственных средств, минимизируя риск передозировки и побочных эффектов. Постоянный мониторинг жизненно важных показателей позволяет врачу корректировать терапевтическую схему в режиме реального времени для обеспечения максимальной безопасности.
Разобраться лучше – http://vyvod-iz-zapoya-donetsk-dnr0.ru/vyvod-iz-zapoya-na-domu-doneczk-dnr/
Капельница от запоя — это не «чудо-микс», а управляемая медицинская процедура с чёткими целями, окном оценки и понятными критериями остановки. В «ЮжУрал Детокс Центр» подход построен по принципу минимально достаточных вмешательств: сначала безопасность (дыхание, сознание, гемодинамика), потом переносимость воды и сбор нормального сна, а уже после — метаболическая поддержка и восстановление бытовой устойчивости. Такая логика исключает полипрагмазию, снижает риск нежелательных реакций и даёт семье прогнозируемую картину на ближайшие 24–72 часа. Мы не обещаем «мгновенного чуда» — мы предлагаем дисциплину маленьких шагов, которая с высокой вероятностью приводит к устойчивому результату.
Разобраться лучше – http://kapelnicza-ot-zapoya-v-chelyabinske16.ru/