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隐藏得太深,总让人捉摸不定!>
thx
thx
thx
This is the perfect site for anybody who wants to understand this topic. You understand so much its almost tough to argue with you (not that I actually would want to…HaHa). You definitely put a new spin on a topic that’s been written about for decades. Wonderful stuff, just great!
Watch sexual porno video xxx sex adults site
Помощь на дому рассматривают при состояниях, которые сопровождаются заметным ухудшением самочувствия после алкоголя. Обычно это несколько дней запоя, тяжелое похмелье, дрожь в руках, бессонница, выраженная слабость, раздражительность, тревога, тошнота, сухость во рту, отсутствие аппетита и признаки обезвоживания. В таких случаях осмотр врача нужен для оценки тяжести состояния и определения безопасной тактики.
Углубиться в тему – вызвать нарколога на дом москва
Реабилитация алкоголиков с поддержкой специалистов в Москве представляет собой важный и сложный процесс, в котором ключевую роль играет профессиональное вмешательство. Программы реабилитации включают в себя не только медицинскую помощь, но и психологическую, социальную и эмоциональную поддержку, что способствует успешному и долгосрочному восстановлению пациента. Такая комплексная помощь является основой эффективного лечения и предотвращения рецидивов.
Получить дополнительные сведения – реабилитация алкоголиков в москве
Чаще всего домашний формат применяется при следующих состояниях:
Разобраться лучше – вывод из запоя на дому анонимно
В ряде ситуаций лучше действовать без ожиданий «до завтра». Риск осложнений повышается, если запой длится несколько суток, если есть хронические болезни сердца и сосудов, если ранее случались судороги, эпизоды спутанности или тяжёлые психические симптомы. Также опасно, когда человек параллельно принимает седативные или снотворные препараты, особенно на фоне алкоголя: это меняет риски и требует особенно внимательного подхода.
Разобраться лучше – http://vyvod-iz-zapoya-klin12.ru
Нарколог на дом в Москве — это формат помощи, который рассматривают в тех случаях, когда после употребления алкоголя больному требуется врачебный осмотр без поездки в клинику. Чаще всего обращение связано с запоем, выраженным похмельным синдромом, нарушением сна, слабостью, тремором, тревогой, обезвоживанием, сердцебиением, скачками давления и общим ухудшением самочувствия. Дальнейшая тактика зависит от состояния больного на момент осмотра, длительности употребления алкоголя, возраста и сопутствующих заболеваний.
Получить больше информации – вызвать нарколога на дом москва
Несмотря на выездной формат, лечение выстраивается поэтапно и соответствует медицинским стандартам. Это обеспечивает управляемость процесса и безопасность пациента.
Получить дополнительные сведения – платный нарколог на дом в ростове-на-дону
На каждом этапе лечения нарколог контролирует витальные показатели, оценивает динамику восстановления и при необходимости корректирует терапию. Такой подход исключает резкие перепады давления, нарушения сердечного ритма и другие побочные эффекты, часто возникающие при попытках вывести пациента из запоя без медицинского участия.
Детальнее – наркологический вывод из запоя ростов-на-дону
thx
Нарколог на дом в Москве: срочный выезд врача, капельницы и помощь при запое в наркологической клинике «Клиника доктора Калюжной».
Получить дополнительную информацию – нарколог на дом цена москва
Такие симптомы требуют медицинского вмешательства, поскольку могут приводить к ухудшению состояния. Капельница помогает стабилизировать самочувствие и снизить нагрузку на организм. Услуги могут предоставляться анонимно, а при необходимости пациент направляется на лечение в стационаре.
Получить дополнительные сведения – http://www.domen.ru
Bonanza Megaways Alternatives UK
Please let me know if you’re looking for a article author for your blog. You have some really good articles and I think I would be a good asset. If you ever want to take some of the load off, I’d really like to write some material for your blog in exchange for a link back to mine. Please blast me an e-mail if interested. Kudos!
dragoon soft слоты
В клинике «Вектор Восстановления» логика маршрута строится по этапам. Первый этап — оценка состояния и рисков: длительность употребления, тяжесть отмены, давление, пульс, обезвоживание, хронические заболевания, прошлые осложнения, препараты, которые пациент уже принимал дома. Второй этап — стабилизация: снижение интоксикации, коррекция состояния, восстановление сна, уменьшение тревоги. Третий этап — сопровождение первых суток и переход к восстановлению: план на 24–72 часа, контроль динамики и профилактика «вечернего отката». Четвёртый этап — работа с зависимостью как с привычкой и системой поведения: триггеры, стресс, режим, поддержка семьи, навыки отказа, профилактика рецидива.
Получить больше информации – medicina-lechenie-alkogolizma
How To Play Top Cat Slot Game Uk UK UK
В клинической практике используются следующие этапы лечения:
Подробнее – http://narcologicheskaya-klinika-v-rnd19.ru
ставки на спорт, новости спорта, прогнозы и
https://bkradar.com/guides читайте подробнее про ставки и букмекеров на bkradar.com
В этой статье-обзоре мы соберем актуальную информацию и интересные факты, которые освещают важные темы. Читатели смогут ознакомиться с различными мнениями и подходами, что позволит им расширить кругозор и глубже понять обсуждаемые вопросы.
А есть ли продолжение? – вывод из запоя дешево
ставки на спорт, новости спорта, прогнозы и
https://bkradar.com читайте подробнее про ставки и букмекеров на bkradar.com
Реабилитация алкоголиков с поддержкой специалистов в Москве представляет собой важный и сложный процесс, в котором ключевую роль играет профессиональное вмешательство. Программы реабилитации включают в себя не только медицинскую помощь, но и психологическую, социальную и эмоциональную поддержку, что способствует успешному и долгосрочному восстановлению пациента. Такая комплексная помощь является основой эффективного лечения и предотвращения рецидивов.
Исследовать вопрос подробнее – центр реабилитации алкоголиков город
Этот текст призван помочь читателю расширить кругозор и получить практические знания. Мы используем простой язык, наглядные примеры и структурированное изложение, чтобы сделать обучение максимально эффективным и увлекательным.
А что дальше? – нарколог на дом вывод из запоя
Вывод из запоя на дому в Санкт-Петербурге с выездом нарколога, детоксикацией и восстановлением состояния в наркологической клинике «Частный медик 24»
Получить дополнительные сведения – анонимный вывод из запоя на дому
Дальше задача — восстановить управляемость состояния. Это включает снижение интоксикации, коррекцию обезвоживания, выравнивание показателей, уменьшение тревоги и нормализацию сна. Но чтобы результат закрепился, необходим второй слой: работа с триггерами (стресс, конфликт, усталость, одиночество), профилактика «вечернего отката», поддержка режима и понимание, какие симптомы допустимы, а какие требуют повторной оценки. Именно это отличает лечение зависимости от разовой попытки «стало легче — дальше как-нибудь».
Подробнее – наркологическая клиника
ставки на спорт, новости спорта, прогнозы и
ставки на спорт читайте подробнее про ставки и букмекеров на bkradar.com
ставки на спорт, новости спорта, прогнозы и
новости спорта читайте подробнее про ставки и букмекеров на bkradar.com
ставки на спорт, новости спорта, прогнозы и
прогнозы на спорт читайте подробнее про ставки и букмекеров на bkradar.com
Помощь на дому рассматривают при состояниях, которые сопровождаются выраженным ухудшением самочувствия после алкоголя. Обычно речь идет о нескольких днях запоя, тяжелом похмелье, бессоннице, тревоге, дрожи в руках, слабости, тошноте, сухости во рту, отсутствии аппетита и признаках обезвоживания. В таких случаях врачебный осмотр нужен для оценки тяжести состояния и выбора безопасной тактики.
Углубиться в тему – нарколог на дом москва
Отдельно оценивают ситуации, когда эпизоды повторяются и становятся частью более устойчивой проблемы. Если после алкоголя регулярно развивается тяжелое состояние, нарушается привычный режим жизни, усиливаются последствия алкоголизма и возникают сложности с контролем употребления, домашний выезд может быть только первым этапом более длинного маршрута помощи. При этом наркологическая помощь может включать не только снятие острых проявлений, но и дальнейшую программу лечения зависимости, если речь идет о длительном течении заболевания.
Изучить вопрос глубже – нарколог на дом вывод москва
Реабилитация включает несколько ключевых этапов, каждый из которых направлен на решение определённых проблем пациента. Важно, чтобы все этапы были комплексными и последовательными, чтобы достичь наиболее эффективного результата.
Ознакомиться с деталями – реабилитация алкоголиков стоимость
I blog quite often and I seriously appreciate your information. Your article has truly peaked my interest. I will bookmark your website and keep checking for new details about once a week. I subscribed to your RSS feed too.
在线购买他达拉非片用于肛交XXX色情
Отдельного внимания требуют случаи, когда больной почти не ест, плохо пьет воду, не может спокойно лежать, жалуется на сильное сердцебиение, нехватку сна или выраженное внутреннее напряжение. В такой ситуации осмотр помогает определить, безопасно ли оставаться дома и какого объема помощи достаточно на текущем этапе. Если речь идет о выраженных проявлениях абстинентного синдрома, затягивать с обращением нецелесообразно.
Получить больше информации – запой нарколог на дом
Такие состояния требуют медицинского вмешательства, поскольку могут ухудшаться без лечения. Капельница позволяет стабилизировать состояние и снизить нагрузку на организм. Услуги могут предоставляться анонимно, а при тяжёлых случаях рассматривается лечение в стационаре.
Разобраться лучше – http://kapelnicza-ot-pokhmelya-voronezh-4.ru
В данной статье рассматриваются проблемы общественного здоровья и социальные факторы, влияющие на него. Мы акцентируем внимание на значении профилактики и осведомленности в защите здоровья на уровне общества. Читатели смогут узнать о новых инициативах и программах, направленных на улучшение здоровья населения.
Ознакомиться с отчётом – вызов врача нарколога
thx
thx
thx
Эта познавательная публикация погружает вас в море интересного контента, который быстро захватит ваше внимание. Мы рассмотрим важные аспекты темы и предоставим вам уникальные Insights и полезные сведения для дальнейшего изучения.
Продолжить изучение – нарколог на дом круглосуточно цены
Главная задача — сделать состояние управляемым: уменьшить тошноту, тремор, потливость, головную боль, «туман» в голове, снизить тревогу, выровнять показатели, помочь восстановить сон. При этом важно сохранять реалистичные ожидания: после длительного запоя организм истощён, поэтому слабость и эмоциональная нестабильность могут сохраняться некоторое время. Ключевой показатель качества помощи — не обещание «идеально за час», а безопасная динамика и понятные ориентиры на первые сутки.
Детальнее – domashnij-vyvod-iz-zapoya
Отдельно оценивают ситуации, когда подобные эпизоды повторяются. Если человек уже не впервые переносит запой, тяжелый выход из него или выраженное ухудшение самочувствия после алкоголя, вопрос обычно выходит за рамки разовой помощи. Тогда уже при первичном обращении рассматривают не только текущую стабилизацию состояния, но и дальнейшие шаги. При затяжном течении проблемы могут обсуждаться лечение зависимости, программа восстановления и условия, при которых потребуется наблюдение в стационаре.
Подробнее можно узнать тут – запой нарколог на дом
Как поясняет нарколог Дмитрий Кузнецов: “Реабилитация алкоголиков должна быть многогранной. Только при сочетании медицинских и психологических методов, а также поддержке со стороны специалистов на всех этапах лечения, можно добиться устойчивого результата. Психологическая работа с пациентом помогает ему не только преодолеть зависимость, но и восстановить нормальное функционирование в обществе.” Также стоит отметить, что в некоторых случаях помощь может быть предоставлена бесплатно, и пациент может получить доступ к данным о возможных вариантах бесплатной реабилитации, что значительно облегчает процесс выздоровления.
Узнать больше – http://www.domen.ru
ставки на спорт, новости спорта, прогнозы и
букмекерская контора читайте подробнее про ставки и букмекеров на bkradar.com
Публикация приглашает вас исследовать неизведанное — от древних тайн до современных достижений науки. Вы узнаете, как случайные находки превращались в революции, а смелые мысли — в новые эры человеческого прогресса.
Получить больше информации – вывод из запоя на дому недорого
Пациенты выбирают клинику за профессионализм врачей, доступность услуг и комфортные условия. Здесь лечение проходит под наблюдением опытных наркологов, психиатров и реаниматологов. Среди ключевых преимуществ:
Изучить вопрос глубже – помощь вывод из запоя ростов-на-дону
В этом информативном обзоре собраны самые интересные статистические данные и факты, которые помогут лучше понять текущие тренды. Мы представим вам цифры и графики, которые иллюстрируют, как развиваются различные сферы жизни. Эта информация станет отличной основой для глубокого анализа и принятия обоснованных решений.
Получить дополнительные сведения – вывести из запоя на дому
Нарколог на дом в Екатеринбурге востребован в ситуациях, когда человеку нужна врачебная помощь после употребления алкоголя, при запое, выраженном похмельном синдроме, нарушении сна, тревоге, скачках давления, слабости и других признаках ухудшения самочувствия. Такой формат обращения часто выбирают семьи, которые хотят вызвать врача без поездки в клинику и быстро получить консультацию по состоянию больного. Домашний выезд особенно важен тогда, когда требуется детоксикация, наблюдение после нескольких дней употребления спиртного и оценка рисков, связанных с последствиями алкоголизма.
Получить дополнительные сведения – http://narkolog-na-dom-ekaterinburg-2.ru
Отдельно оценивают повторяющиеся эпизоды. Если после алкоголя регулярно развивается тяжелое самочувствие, нарушается обычный режим, усиливаются последствия алкоголизма и появляются трудности с контролем употребления, домашний выезд может быть только первым этапом более длинного маршрута помощи. В таких случаях вопрос обычно не ограничивается снятием острых симптомов. Может потребоваться дальнейший вывод из запоя, наблюдение в стационаре и более широкая работа с проявлениями зависимости.
Подробнее можно узнать тут – запой нарколог на дом в москве
Мы рассмотрим современные вызовы здравоохранения и пути их решения с помощью технологий и научных исследований. В статье собраны данные о новых лекарствах, методах диагностики и системном подходе к улучшению здоровья населения.
Что скрывают от вас? – нарколог на дом