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隐藏得太深,总让人捉摸不定!>
Когда зависимости становятся хроническими и угрожают жизни пациента, комплексная реабилитация при наркомании в специализированных клиниках Москвы, включая вывод из состояния в стационаре и последующий анализ данных о состоянии пациента, может стать единственным возможным решением. Процесс восстановления включает в себя работу не только с зависимостью, но и с психоэмоциональным состоянием, что делает лечение более эффективным и долговечным.
Узнать больше – алкоголик реабилитация наркоманов
Запой – это состояние, при котором человек продолжает употреблять алкоголь в течение длительного времени, не в состоянии прекратить употребление самостоятельно, что является проявлением алкоголизма. Это может привести к серьезным проблемам со здоровьем, и в таком случае необходим вывод из запоя с помощью наркологической помощи, при этом в дальнейшем может рассматриваться кодирование.
Изучить вопрос глубже – вывод из запоя на дому екатеринбург
Hi mates, its fantastic post about educationand completely defined, keep it up all the time.
Starburst
Нарколог на дом в Москве: срочная медицинская помощь, капельницы и восстановление состояния в наркологической клинике «Клиника доктора Калюжной».
Получить дополнительную информацию – нарколог на дом вывод
Чаще всего нарколога на дом вызывают при повторяющемся или длительном запое, тяжелом похмелье, бессоннице после алкоголя, треморе, выраженной слабости и ухудшении общего самочувствия. Поводом для обращения также становятся тревога, раздражительность, скачки артериального давления, учащенный пульс, обезвоживание и необходимость поставить капельницу дома под наблюдением специалиста. Во многих случаях звонок в наркологический центр поступает тогда, когда родственники понимают, что состояние больного уже не позволяет ждать следующего дня.
Изучить вопрос глубже – нарколог на дом анонимно
Thanks a lot for sharing this with all of us you actually understand what you are talking approximately! Bookmarked. Kindly additionally consult with my site =). We can have a link trade contract among us
在线购买他达拉非片用于肛交XXX色情
Nice post. I learn something totally new and challenging on sites I stumbleupon everyday. It’s always interesting to read through content from other writers and practice something from their web sites.
Wolf Gold
thx
thx
thx
thx
Реабилитация алкоголиков с поддержкой специалистов в Москве представляет собой важный и сложный процесс, в котором ключевую роль играет профессиональное вмешательство. Программы реабилитации включают в себя не только медицинскую помощь, но и психологическую, социальную и эмоциональную поддержку, что способствует успешному и долгосрочному восстановлению пациента. Такая комплексная помощь является основой эффективного лечения и предотвращения рецидивов.
Получить больше информации – реабилитация алкоголиков стоимость в москве
Do you have a spam issue on this website; I also am a blogger, and I was wanting to know your situation; many of us have created some nice practices and we are looking to trade techniques with other folks, please shoot me an e-mail if interested.
Sweet Bonanza
What’s up to all, how is everything, I think every one is getting more from this site, and your views are nice for new users.
Sweet Bonanza
Вывод из запоя в стационаре в Санкт-Петербурге: профессиональное лечение, капельницы и контроль состояния пациента в наркологической клинике «Элегия Мед».
Исследовать вопрос подробнее – быстрый вывод из запоя в стационаре санкт-петербург
Домашний вызов нарколога удобен в случаях, когда человеку тяжело ехать в клинику, он отказывается от поездки или родственники хотят как можно быстрее заказать медицинскую помощь на месте. Формат выезда позволяет врачу оценить самочувствие, определить тяжесть состояния и подобрать дальнейшую тактику. Если ситуация требует расширенного подхода, может обсуждаться последующая консультация в центре, лечение алкоголизма, кодирование, а в более сложных случаях — длительная реабилитация.
Ознакомиться с деталями – нарколог на дом
thx
Hi to every , for the reason that I am genuinely keen of reading this blog’s post to be updated daily. It consists of nice material.
tada gaming
thx
thx
thx
I got this web site from my buddy who told me on the topic of this website and at the moment this time I am visiting this website and reading very informative posts at this time.
在线购买无处方安定片 xxx Pornhub
Реабилитация алкоголиков с поддержкой специалистов — это системный подход к лечению алкогольной зависимости, который включает в себя различные медицинские, психологические и социальные методы. В Москве существует множество наркологических центров, предлагающих такие программы, где пациентам предоставляется комплексное лечение под наблюдением квалифицированных специалистов. Процесс реабилитации направлен не только на избавление от алкогольной зависимости, но и на восстановление социальной адаптации пациента, улучшение его психоэмоционального состояния и предотвращение рецидивов. В клиниках также могут предложить кодирование от алкоголизма, что помогает значительно снизить риск возвращения к прежним привычкам и обеспечить долгосрочную трезвость пациента.
Исследовать вопрос подробнее – центр реабилитации алкоголиков в москве
Pretty element of content. I simply stumbled upon your web site and in accession capital to claim that I acquire actually enjoyed account your weblog posts. Any way I will be subscribing for your feeds and even I success you get admission to persistently rapidly.
Watch sexual porno video xxx sex adults site
Эта статья предлагает живое освещение актуальной темы с множеством интересных фактов. Мы рассмотрим ключевые моменты, которые делают данную тему важной и актуальной. Подготовьтесь к насыщенному путешествию по неизвестным аспектам и узнайте больше о значимых событиях.
Всё, что нужно знать – https://maisgazeta.com/ir-2021-receita-libera-consultas-ao-1o-lote-de-restituicao
Hello to all, for the reason that I am actually eager of reading this weblog’s post to be updated daily. It includes nice material.
在线购买他达拉非片用于肛交XXX色情
В обзорной статье вы найдете собрание важных фактов и аналитики по самым разнообразным темам. Мы рассматриваем как современные исследования, так и исторические контексты, чтобы вы могли получить полное представление о предмете. Погрузитесь в мир знаний и сделайте шаг к пониманию!
Получить дополнительные сведения – https://www.cutralcoalinstante.com/2024/04/22/el-argentinosaurus-huinculensis-de-chocolate-sera-la-novedad-para-el-cumple-de-plaza
thx
thx
thx
thx
Помощь на дому рассматривают при состояниях, которые сопровождаются заметным ухудшением самочувствия после алкоголя. Обычно это несколько дней запоя, тяжелое похмелье, дрожь в руках, бессонница, выраженная слабость, раздражительность, тревога, тошнота, сухость во рту, отсутствие аппетита и признаки обезвоживания. В таких случаях осмотр врача нужен для оценки тяжести состояния и определения безопасной тактики.
Ознакомиться с деталями – врач нарколог на дом в москве
Запойное состояние сопровождается выраженной интоксикацией, нарушением сна, слабостью и тревожностью, что характерно для алкоголизма и различных форм зависимости. При этом самостоятельный выход из него часто затруднён из-за ухудшения самочувствия и отсутствия контроля над симптомами. Выезд нарколога позволяет быстро стабилизировать состояние человека и начать восстановление без дополнительной нагрузки, связанной с поездкой в клинику, а при необходимости вовремя определить показания к лечению в стационаре.
Изучить вопрос глубже – анонимный вывод из запоя на дому в санкт-петербурге
Главная задача — сделать состояние управляемым: уменьшить тошноту, тремор, потливость, головную боль, «туман» в голове, снизить тревогу, выровнять показатели, помочь восстановить сон. При этом важно сохранять реалистичные ожидания: после длительного запоя организм истощён, поэтому слабость и эмоциональная нестабильность могут сохраняться некоторое время. Ключевой показатель качества помощи — не обещание «идеально за час», а безопасная динамика и понятные ориентиры на первые сутки.
Получить дополнительные сведения – https://vyvod-iz-zapoya-klin12.ru/vyvod-iz-zapoya-kapelnica-v-klinu
Продолжительное употребление алкоголя неизбежно переводит организм в состояние хронической интоксикации, при котором собственные компенсаторные механизмы перестают справиться с нарастающей токсической нагрузкой. Накапливающиеся продукты метаболизма этанола, дефицит электролитов, нарушение работы ферментных систем и дисфункция центральной нервной системы формируют клиническую картину, требующую не симптоматического облегчения, а комплексного медицинского вмешательства. Вывод из запоя в стационаре в Нижнем Новгороде в наркологической клинике «Стармед» организован с соблюдением современных протоколов доказательной медицины, где безопасность пациента, непрерывный мониторинг и персонализированный подбор терапии являются абсолютным приоритетом. Мы понимаем, что кризисные состояния не терпят отлагательств, поэтому наши квалифицированные специалисты готовы быстро оценить клиническую ситуацию, организовать безопасную транспортировку и запустить детоксикационный протокол без задержек. Все манипуляции проводятся в лицензированных условиях, с непрерывным отслеживанием витальных показателей и строгим соблюдением врачебной этики. Первичная оценка состояния начинается с дистанционной консультации, что позволяет врачам заранее подготовить необходимое оборудование, скорректировать план госпитализации и минимизировать время между обращением и началом терапии. Такой подход исключает хаотичные решения и фокусирует внимание на реальных медицинских проблемах, требующих системного решения.
Подробнее тут – вывод из запоя в стационаре клиника нижний новгород
Непрерывный мониторинг витальных показателей — ключевое отличие стационарного формата. В палатах клиники «Элегия Мед» установлены системы отслеживания частоты пульса, сатурации, температуры и артериального давления, данные с которых автоматически передаются в электронную медицинскую карту. Медицинский персонал дежурит круглосуточно, что обеспечивает мгновенную реакцию на ухудшение состояния: коррекцию инфузионной терапии, введение симптоматических препаратов, привлечение смежных специалистов при необходимости. Такая организация процесса исключает хаотичное назначение средств и гарантирует, что каждый этап детоксикации проходит под строгим клиническим контролем. При необходимости применяются дополнительные методы очищения крови, включая плазмаферез, который эффективно помогает вывести стойкие токсины и метаболиты, не удаляемые стандартной инфузионной терапией.
Подробнее тут – быстрый вывод из запоя в стационаре в санкт-петербурге
Вывод из запоя на дому с быстрым облегчением — это медицинская процедура, которая проводится в домашних условиях и направлена на устранение симптомов похмелья, нормализацию работы органов, пострадавших от алкоголя, и восстановление общего самочувствия пациента, включая проведение детоксикации. В отличие от стационарного лечения, вывод из запоя на дому предоставляет пациенту возможность пройти лечение анонимно, с возможностью вызова специалиста на дом, что способствует снижению стресса и лучшему восприятию процесса восстановления, при этом учитывается состояние больного, длительность запоя (в том числе несколько дней) и актуальная цена услуг.
Детальнее – вывод из запоя на дому круглосуточно в екатеринбурге
Because the admin of this web site is working, no uncertainty very rapidly it will be renowned, due to its quality contents.
adult xxx video porn site xxx sex video
Такие состояния требуют не только лечения, но и наблюдения, поскольку динамика может меняться в течение короткого времени. Стационар позволяет минимизировать риски и обеспечить безопасность пациента. При этом услуга может предоставляться анонимно, а цена лечения зависит от состояния пациента.
Ознакомиться с деталями – врач вывод из запоя
Многие откладывают лечение годами, потому что периодами удаётся «держаться». Но зависимость редко исчезает сама. Обычно она меняет форму: запои становятся длиннее, алкоголь начинает использоваться как «лекарство» от тревоги и бессонницы, утренние дозы превращаются в способ «прийти в себя», а трезвость воспринимается как постоянное напряжение.
Ознакомиться с деталями – http://lechenie-alkogolizma-sergiev-posad12.ru
Такой подход позволяет достичь устойчивого результата без срывов и рецидивов. Пациенты получают помощь не только на уровне физиологии, но и на уровне личностных изменений, что делает лечение глубоким и эффективным.
Получить дополнительные сведения – http://narcologicheskaya-clinika-v-rnd19.ru
В рамках клинической работы применяются следующие направления медицинского воздействия, которые обеспечивают целостность лечебного процесса:
Изучить вопрос глубже – https://narkologicheskaya-klinika-v-rnd19.ru/narkolog-rostov-na-donu
Медицинская команда контролирует каждый этап лечения, отслеживая динамику и корректируя терапию при необходимости. Благодаря такому подходу удаётся добиться не временного улучшения, а устойчивого восстановления.
Узнать больше – платная наркологическая клиника ростов-на-дону
Запой сопровождается выраженной интоксикацией, нарушением сна, слабостью и нестабильностью работы сердечно-сосудистой системы, что характерно для алкоголизма и других форм зависимости, включая наркомании. Самостоятельный выход из этого состояния может быть затруднён и сопровождаться усилением симптомов. Медицинская помощь на дому позволяет снизить риски и начать восстановление под контролем специалиста, помогая человеку быстрее стабилизировать состояние.
Подробнее – вывод из запоя на дому санкт-петербург
Основные показания для проведения процедуры:
Разобраться лучше – капельница от похмелья на дом в воронеже
Реабилитация алкоголиков с поддержкой специалистов в Москве представляет собой важный и сложный процесс, в котором ключевую роль играет профессиональное вмешательство. Программы реабилитации включают в себя не только медицинскую помощь, но и психологическую, социальную и эмоциональную поддержку, что способствует успешному и долгосрочному восстановлению пациента. Такая комплексная помощь является основой эффективного лечения и предотвращения рецидивов.
Получить дополнительную информацию – алкоголик реабилитация наркоманов город
I appreciate, lead to I found just what I used to be taking a look for. You have ended my four day long hunt! God Bless you man. Have a great day. Bye
在线购买大麻用于XXX成人色情视频
Процесс лечения капельницей помогает улучшить состояние пациента уже через короткий период. Важно, что процедура не только снимает симптомы похмелья, но и восстанавливает нормальную работу печени, почек и других органов, пострадавших от токсического воздействия алкоголя. Это помогает предотвратить долгосрочные последствия интоксикации, такие как хроническая усталость, проблемы с органами и психоэмоциональные расстройства.
Ознакомиться с деталями – капельница от похмелья на дому екатеринбург
Состояние после длительного употребления алкоголя или наркотических веществ сопровождается комплексом симптомов: обезвоживание, нарушение работы сердечно-сосудистой системы, тревожность, бессонница, слабость. В таких случаях важно не откладывать помощь, поскольку самостоятельное восстановление организма может быть затруднено. Наркологическая помощь на дому позволяет быстро стабилизировать показатели и начать контролируемое лечение.
Разобраться лучше – нарколог на дом вывод в нижнем новгороде
thx