А как тогда обьяснить тот крэш со свапконтект, где стектрейс не портится ? Нужно вернуться и еще раз внимательно разобрать. В остальных дампах по мойму какой то треш, цепочки #pf. > DbgkpQueueMessage Хорошая мысль, это может обьяснить откуда они dbg* берутся, когда вроде быть не должно их. Как думаете, почему только при загрузке флагов падает и только под дебагпортом? Ну и что дальше сделать ? ps извините за правку текста, эта вирт клава на телефоне меня добивает --- Сообщение объединено, 23 мар 2025 в 02:01 --- HoShiMin, > посмотри на предыдущую инструкцию там call KeAbPostRelease Не знаю что смотреть, это интернал ядерные функции в которых незачем проверять фреймы на переполнение. Код (Text): .text:000000014021DFB0 ; Exported entry 1275. KeReleaseGuardedMutex .text:000000014021DFB0 .text:000000014021DFB0 ; =============== S U B R O U T I N E ======================================= .text:000000014021DFB0 .text:000000014021DFB0 .text:000000014021DFB0 ; void __stdcall KeReleaseGuardedMutex(PKGUARDED_MUTEX Mutex) .text:000000014021DFB0 public KeReleaseGuardedMutex .text:000000014021DFB0 KeReleaseGuardedMutex proc near ; CODE XREF: CcWriteBehindInternal+1A5↓p .text:000000014021DFB0 ; CcWriteBehindInternal+294↓p ... .text:000000014021DFB0 .text:000000014021DFB0 arg_0 = qword ptr 8 .text:000000014021DFB0 .text:000000014021DFB0 ; FUNCTION CHUNK AT .text:0000000140427778 SIZE 00000067 BYTES .text:000000014021DFB0 .text:000000014021DFB0 mov [rsp+arg_0], rbx ; ExReleaseFastMutex .text:000000014021DFB5 push rdi .text:000000014021DFB6 sub rsp, 20h .text:000000014021DFBA movzx edi, byte ptr [rcx+30h] .text:000000014021DFBE mov rbx, rcx .text:000000014021DFC1 mov qword ptr [rcx+8], 0 .text:000000014021DFC9 xor eax, eax .text:000000014021DFCB mov ecx, 1 .text:000000014021DFD0 lock cmpxchg [rbx], ecx .text:000000014021DFD4 jnz short loc_14021DFFC .text:000000014021DFD6 .text:000000014021DFD6 loc_14021DFD6: ; CODE XREF: KeReleaseGuardedMutex+56↓j .text:000000014021DFD6 mov eax, cs:KiIrqlFlags .text:000000014021DFDC test eax, eax .text:000000014021DFDE jnz loc_140427778 .text:000000014021DFE4 .text:000000014021DFE4 loc_14021DFE4: ; CODE XREF: KeReleaseGuardedMutex+2097CA↓j .text:000000014021DFE4 ; KeReleaseGuardedMutex+2097D6↓j ... .text:000000014021DFE4 mov cr8, rdi .text:000000014021DFE8 mov rcx, rbx ; BugCheckParameter2 .text:000000014021DFEB call KeAbPostRelease Есть еще нюанс, это ведь статик диз, а что на самом деле там в ядре не известно. В принципе если бы были внесены изменения, то в дампах были левые адреса. --- Сообщение объединено, 23 мар 2025 в 02:12 --- Ладно не охота, надоели крэши x32dbg: push 0/popf. Посмотрим что в дампе. --- Сообщение объединено, 23 мар 2025 в 02:18 --- DRIVER_OVERRAN_STACK_BUFFER Не знаю почему так, раньше иначе падало. После крэша испортился гуи. --- Сообщение объединено, 23 мар 2025 в 02:26 --- ida синь с тем же дампом. --- Сообщение объединено, 23 мар 2025 в 02:26 --- Код (Text): ffff9606`18931a98 fffff807`3a2b63c5 : 00000000`000000f7 ffff9606`18932cf0 00008203`28e2892b ffff7dfc`d71d76d4 : nt!KeBugCheckEx ffff9606`18931aa0 fffff807`3a1d5a8e : ffff9606`189320b0 fffff807`3a0ca5df fffff807`39f1bf38 00000000`00000000 : nt!_report_gsfailure+0x25 ffff9606`18931ae0 fffff807`3a1d5a23 : ffff9606`18931bb0 00000000`00000000 ffff9606`189320e8 ffff9606`189320c0 : nt!_GSHandlerCheckCommon+0x5a ffff9606`18931b10 fffff807`3a207d2f : fffff807`3a1d5a10 00000000`00000000 00000000`00000000 00000000`00000000 : nt!_GSHandlerCheck+0x13 ffff9606`18931b40 fffff807`3a0ca3c7 : ffff9606`189320b0 00000000`00000000 ffff9606`18932cf0 fffff807`3a688daa : nt!RtlpExecuteHandlerForException+0xf ffff9606`18931b70 fffff807`3a0c94e6 : ffff9606`18932a88 ffff9606`189327c0 ffff9606`18932a88 00000000`00000000 : nt!RtlDispatchException+0x297 ffff9606`18932290 fffff807`3a21186c : 00000000`00001000 ffff9606`18932b30 ffff8000`00000000 00000000`00000000 : nt!KiDispatchException+0x186 ffff9606`18932950 fffff807`3a20d2bd : ffff9781`05a22080 00000000`00000002 00000000`00000000 fffff807`3aa47960 : nt!KiExceptionDispatch+0x12c ffff9606`18932b30 fffff807`3a01dfba : ffff9781`05a22080 fffff807`3a688da5 00000000`00000010 00000000`00000246 : nt!KiPageFault+0x43d ffff9606`18932cc0 fffff807`3a688daa : fffff807`3aa47960 ffff9781`00000000 00000000`00000000 ffff9606`18932fa0 : nt!ExReleaseFastMutex+0xa ffff9606`18932cf0 00000000`00000001 : 00000000`0009fda0 ffff9606`18933a58 ffff9781`06bf2080 ffff9781`06bf2080 : nt!DbgkpQueueMessage+0x222 ffff9606`18932ef0 00000000`0009fda0 : ffff9606`18933a58 ffff9781`06bf2080 ffff9781`06bf2080 00000000`00000001 : 0x1 ffff9606`18932ef8 ffff9606`18933a58 : ffff9781`06bf2080 ffff9781`06bf2080 00000000`00000001 fffff807`3a68a868 : 0x9fda0 ffff9606`18932f00 ffff9781`06bf2080 : ffff9781`06bf2080 00000000`00000001 fffff807`3a68a868 00000000`00000000 : 0xffff9606`18933a58 ffff9606`18932f08 ffff9781`06bf2080 : 00000000`00000001 fffff807`3a68a868 00000000`00000000 00000000`00000000 : 0xffff9781`06bf2080 ffff9606`18932f10 00000000`00000001 : fffff807`3a68a868 00000000`00000000 00000000`00000000 00000000`00000000 : 0xffff9781`06bf2080 ffff9606`18932f18 fffff807`3a68a868 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x1 ffff9606`18932f20 fffff807`3a629b31 : ffff9781`04b4fdf0 ffff9606`18933070 ffff9781`06bf2080 00000000`00000000 : nt!DbgkpSendApiMessage+0xa4 ffff9606`18932f70 fffff807`3a0c9694 : ffff9606`18933a58 ffff9606`18933a58 ffff9606`18933120 00000000`00401003 : nt!DbgkForwardException+0xfa161 ffff9606`189330f0 fffff807`3a21186c : 00000000`00001000 ffff9606`18933b00 ffff8000`00000000 00000000`00000000 : nt!KiDispatchException+0x334 ffff9606`18933920 fffff807`3a20d2bd : ffff9781`05a22080 00000000`00000000 00000000`00000000 ffff9781`00000000 : nt!KiExceptionDispatch+0x12c ffff9606`18933b00 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiPageFault+0x43d
Теперь постоянно одна и та же причина - испорчен стек. nt!RtlpExecuteHandlerForException+0xf Вот тут мы вызываем обработчик, и на выходе ломается stack cookie, не дав нормально обработать PF. Непонятна и сама причина PF в ExReleaseFastMutex'е, и почему ломается стек в обработчике. Залей ещё свой ntoskrnl.exe: думаю, у нас отличаются билды.
HoShiMin, Вот ядро и два дампа, крэшнул олли и иду. Вот иды к ядру бд если нужно. Почему то шедулер больше не валится. upd А нет, в последнем дампе шед: Код (Text): fffff883`fb474730 fffff807`5f01b1cf : ffffaa8f`341c9080 fffff807`5fb27a00 fffff883`fb4748f0 00000000`00000000 : nt!KiSwapThread+0x6db fffff883`fb4747e0 fffff807`5f01aa73 : 00000000`00000033 fffff807`00000000 00000000`00000001 ffffaa8f`341c91c0 : nt!KiCommitThreadWait+0x14f fffff883`fb474880 fffff807`5f689d21 : ffffaa8f`35a63b30 00000000`00000000 fffff883`fb474b01 fffff807`5b244101 : nt!KeWaitForSingleObject+0x233 fffff883`fb474970 fffff807`5f210ef5 : ffffaa8f`341c9080 00000225`2638f400 00000000`00000000 ffffaa8f`35a63b01 : nt!NtWaitForDebugEvent+0x261 fffff883`fb474b00 00007ffe`7ee70a34 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x25 000000f2`053ff288 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffe`7ee70a34 SYMBOL_NAME: nt!KiSwapThread+6db --- Сообщение объединено, 23 мар 2025 в 15:58 --- Интересно если поток крутить как при racecond атаке(suspend/resume) будет ли падать --- Сообщение объединено, 23 мар 2025 в 16:08 --- Не падает без отладчика, под отладчиком пока не буду проверять. Код (Text): Thread proc p1:DWORD Local Ctx:CONTEXT @@: mov Ctx.ContextFlags,CONTEXT_ALL invoke GetThreadContext, Thd, addr Ctx jmp @b Thread endp EP proc Local Ctx:CONTEXT invoke CreateThread, 0, 0, addr Thread, 0, 0, addr Tid mov Thd,eax Iter: .repeat invoke ZwSuspendThread, Thd, addr Scount mov Ctx.ContextFlags,CONTEXT_ALL invoke GetThreadContext, Thd, addr Ctx invoke ZwResumeThread, Thd, addr Scount .until Etrap --- Сообщение объединено, 23 мар 2025 в 16:30 --- Можно видимо пофиксить отладчики, убрать NtResumeThread, отфильтровав целевой тред, затем будет вызов NtDebugContinue, который запустит поток. Но это наверно не нужно)