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 I am so thrilled I found your blog page, I really found you by accident, while I was researching on Aol for something else, Anyhow I am here now and would just like to say cheers for a marvelous post and a all round interesting blog (I also love the theme/design), I don’t have time to read it all at the moment but I have saved it and also added your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the fantastic job.
buy cannabis online for xxx adult porn video
Hi there to every one, it’s in fact a good for me to go to see this web page, it contains valuable Information.
在线购买大麻用于XXX成人色情视频
casino https://theavtar.in/read-blog/149125_playtech-039-s-nz-transforming-internet-poker.html
В этом информативном обзоре собраны самые интересные статистические данные и факты, которые помогут лучше понять текущие тренды. Мы представим вам цифры и графики, которые иллюстрируют, как развиваются различные сферы жизни. Эта информация станет отличной основой для глубокого анализа и принятия обоснованных решений.
Не упусти важное! – нарколога на дом
Эта информационная заметка предлагает лаконичное и четкое освещение актуальных вопросов. Здесь вы найдете ключевые факты и основную информацию по теме, которые помогут вам сформировать собственное мнение и повысить уровень осведомленности.
Обратиться к источнику – вызвать врача нарколога на дом
casino https://social.smileymission.com/read-blog/70417_cashback-deals-revolutionize-the-retail-journey.html
Этот обзор предлагает структурированное изложение информации по актуальным вопросам. Материал подан так, чтобы даже новичок мог быстро освоиться в теме и начать использовать полученные знания в практике.
Откройте для себя больше – вызов психиатра нарколога на дом
Yesterday, while I was at work, my cousin stole my iphone and tested to see if it can survive a 40 foot drop, just so she can be a youtube sensation. My iPad is now broken and she has 83 views. I know this is entirely off topic but I had to share it with someone!
在线购买大麻用于XXX成人色情视频
Эта статья погружает вас в увлекательный мир знаний, где каждый факт становится открытием. Мы расскажем о ключевых исторических поворотных моментах и научных прорывах, которые изменили ход цивилизации. Поймите, как прошлое формирует настоящее и как его уроки могут помочь нам строить будущее.
Получить дополнительную информацию – капельница от запоя нижний новгород
Эта информационная публикация освещает широкий спектр тем из мира медицины. Мы предлагаем читателям ясные и понятные объяснения современных заболеваний, методов профилактики и лечения. Информация будет полезна как пациентам, так и медицинским работникам, желающим поддержать уровень своих знаний.
Интересует подробная информация – нарколог стационар
Такая комплексность делает процесс терапии результативным и снижает риск возврата к алкоголю.
Подробнее – https://lechenie-alkogolizma-tver0.ru/lechenie-alkogolizma-tver-staczionar
thx
thx
thx
Вывод из запоя направлен не только на снятие острых симптомов, но и на комплексное восстановление организма. Работа специалистов позволяет стабилизировать состояние и создать условия для дальнейшего лечения зависимости.
Разобраться лучше – помощь вывод из запоя в твери
Excellent blog you have here but I was wondering if you knew of any discussion boards that cover the same topics discussed here? I’d really like to be a part of online community where I can get advice from other experienced people that share the same interest. If you have any recommendations, please let me know. Thanks!
kasiino tervitusboonus
Даже при умеренной симптоматике самостоятельные попытки «перетерпеть» часто приводят к усугублению дегидратации, электролитным нарушениям и риску делирия. Медицинский контроль позволяет корректировать состояние по объективным показателям и предотвращать декомпенсацию.
Подробнее можно узнать тут – https://vyvod-iz-zapoya-doneczk0.ru/
Откройте для себя скрытые страницы истории и малоизвестные научные открытия, которые оказали колоссальное влияние на развитие человечества. Статья предлагает свежий взгляд на события, которые заслуживают большего внимания.
Интересует подробная информация – цены вывод из запоя
thx
Такая последовательность шагов позволяет врачу действовать точно и эффективно. Благодаря комплексному подходу пациент чувствует облегчение уже через 1–2 часа после начала терапии, а полное восстановление наступает в течение суток.
Ознакомиться с деталями – http://vyvod-iz-zapoya-stavropol0.ru
Состав капельниц всегда персонализирован. Мы избегаем полипрагмазии и ориентируемся на симптоматику, сопутствующие заболевания и домашние условия. Ниже — примерная сетка профилей, которую врач на месте адаптирует «под вас».
Выяснить больше – вывод из запоя капельница на дому
Психотерапия во Владимире в клинике «Новая Эра» проводится высококвалифицированными специалистами с большим опытом работы в сфере зависимостей.
Детальнее – запой лечение наркомания
thx
Valuable info. Lucky me I discovered your website by chance, and I am shocked why this accident did not came about earlier! I bookmarked it.
casino ohne oasis
Эта статья погружает вас в увлекательный мир знаний, где каждый факт становится открытием. Мы расскажем о ключевых исторических поворотных моментах и научных прорывах, которые изменили ход цивилизации. Поймите, как прошлое формирует настоящее и как его уроки могут помочь нам строить будущее.
Кликни и узнай всё! – выезд нарколога на дом
Ниже приведён ориентировочный распорядок первого дня, когда вызов оформлен утром или днём. Вечерние визиты адаптируем: усиленный акцент на гигиене сна и «тихом окне» после 21:30.
Подробнее – вывод из запоя на дому недорого
Этот информативный текст отличается привлекательным содержанием и актуальными данными. Мы предлагаем читателям взглянуть на привычные вещи под новым углом, предоставляя интересный и доступный материал. Получите удовольствие от чтения и расширьте кругозор!
Кликни и узнай всё! – срочный вывод из запоя на дому
В клинике применяются только доказательные методы, эффективность которых подтверждена практикой. Медицинское и психологическое воздействие дополняют друг друга, формируя комплексный эффект.
Узнать больше – https://narkologicheskaya-klinika-v-tveri0.ru/narkolog-tver-anonimno
Hey! I know this is kinda off topic but I’d figured I’d ask. Would you be interested in trading links or maybe guest writing a blog article or vice-versa? My website covers a lot of the same topics as yours and I feel we could greatly benefit from each other. If you happen to be interested feel free to send me an e-mail. I look forward to hearing from you! Excellent blog by the way!
casino ohne oasis mit paysafecard
Admiring the time and energy you put into your site and in depth information you present. It’s awesome to come across a blog every once in a while that isn’t the same unwanted rehashed information. Wonderful read! I’ve bookmarked your site and I’m including your RSS feeds to my Google account.
casino ohne oasis mit paysafecard
Для жителей Первоуральска мы поддерживаем 24/7-окно обращения без очередей: первичный скрининг по телефону, подтверждение безопасного формата старта (стационар краткого наблюдения, амбулаторно или выездная бригада), нейтральные формулировки в документах, деликатная транспортная логистика. При необходимости организуем немаркированный выезд врача, а при госпитализации используем отдельный вход и «тихие» коридоры. Это не косметика — такие детали снижают уровень тревоги, улучшают засыпание в первую ночь и повышают соблюдаемость рекомендаций.
Детальнее – наркологические клиники алкоголизм
Непрерывный мониторинг витальных показателей — ключевое отличие стационарного формата, обеспечивающее безопасную детоксикацию. В палатах клиники «Элегия Мед» установлены системы отслеживания частоты пульса, сатурации, температуры и артериального давления, данные с которых автоматически передаются в электронную медицинскую карту. Медицинский персонал дежурит круглосуточно, что обеспечивает мгновенную реакцию на ухудшение состояния: коррекцию инфузионной терапии, введение симптоматических препаратов, привлечение смежных специалистов при необходимости. Такая организация процесса исключает хаотичное назначение средств, предотвращает полипрагмазию и гарантирует, что каждый этап детоксикации проходит под строгим клиническим контролем. При необходимости применяются дополнительные методы очищения крови, включая плазмаферез, который эффективно помогает вывести стойкие токсины и метаболиты, не удаляемые стандартной инфузионной терапией.
Получить больше информации – наркология вывод из запоя в стационаре
Наркологическая клиника в Краснодаре рассматривается как специализированное медицинское учреждение, ориентированное на лечение зависимостей с обеспечением полной конфиденциальности и круглосуточного доступа к помощи. В клинике «Южный Контур» лечение организовано таким образом, чтобы пациент мог обратиться за медицинской поддержкой в любое время суток без риска разглашения персональной информации. Такой формат особенно актуален при острых состояниях, требующих немедленного врачебного вмешательства и постоянного контроля.
Подробнее тут – наркологическая клиника
В рамках работы клиники проводятся диагностические процедуры и различные виды терапии, включающие:
Подробнее тут – наркологическая клиника клиника помощь
Мы не «перелечиваем» пациента процедурами. Любая мера начинается как проверяемая гипотеза с измеримыми маркерами. Ниже — опорная карта лечения. В реальности она персонализируется в зависимости от клинической картины, возраста, сопутствующих заболеваний и бытового графика.
Получить дополнительные сведения – https://narkologicheskaya-klinika-kamensk-uralskij0.ru/
Do you have a spam problem on this site; I also am a blogger, and I was curious about your situation; we have created some nice methods and we are looking to trade strategies with other folks, please shoot me an e-mail if interested.
buy cannabis online for xxx adult porn video
Букмекерские конторы: отзывы, ставки на спорт, новости спорта, прогнозы и
псж в полуфинале лиги чемпионов читайте подробнее про ставки и букмекеров на bkradar.com
Вывод из запоя на дому в Екатеринбурге: срочная помощь, детоксикация и восстановление под контролем специалистов в наркологической клинике «Детокс»
Изучить вопрос глубже – вывод из запоя на дому цена екатеринбург
Букмекерские конторы: отзывы, ставки на спорт, новости спорта, прогнозы и
копьяпо читайте подробнее про ставки и букмекеров на bkradar.com
thx
Hey there! Would you mind if I share your blog with my twitter group? There’s a lot of people that I think would really enjoy your content. Please let me know. Cheers
tada gaming games
При ряде клинических признаков требуется ускоренное подключение специалистов и проведение детоксикации под контролем.
Получить больше информации – вывод из запоя в стационаре
Remarkable! Its really awesome article, I have got much clear idea on the topic of from this paragraph.
tada-gaming.mobi
Нарколог на дом в Москве — это формат медицинской помощи, который рассматривают при состояниях после употребления алкоголя, когда больному требуется осмотр врача без поездки в клинику. Чаще всего обращение связано с запоем, выраженным похмельным синдромом, нарушением сна, тревогой, слабостью, тремором, обезвоживанием, скачками давления, сердцебиением и общим ухудшением самочувствия. Дальнейшая тактика зависит от состояния больного на момент осмотра, продолжительности употребления алкоголя, возраста и сопутствующих заболеваний.
Подробнее можно узнать тут – нарколог на дом вывод москва
Букмекерские конторы: отзывы, ставки на спорт, новости спорта, прогнозы и
ф1 онлайн читайте подробнее про ставки и букмекеров на bkradar.com
Hi this is kinda of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding know-how so I wanted to get advice from someone with experience. Any help would be greatly appreciated!
tada gaming games
Букмекерские конторы: отзывы, ставки на спорт, новости спорта, прогнозы и
бк радар читайте подробнее про ставки и букмекеров на bkradar.com
Hi all, here every one is sharing such knowledge, therefore it’s pleasant to read this weblog, and I used to visit this website all the time.
Snow Party
Наркологическая клиника «Трезвый Север» организует быстрый и безопасный вывод из запоя с круглосуточным выездом врача, индивидуальными капельницами и бережной психоподдержкой. Мы работаем по принципу «одно вмешательство — одна цель — один маркер результата»: так пациент видит логику лечения, а команда гибко подстраивает тактику под реальную динамику — без избыточных назначений и суеты. В основе — деликатная логистика, анонимность и пошаговое восстановление сна, гидратации, электролитного баланса и нервной регуляции.
Изучить вопрос глубже – вывод из запоя на дому