Your "joke" is why the new behavior, on Windows 8, is optional, and not forced upon applications.
So you killed your own 'joke' -- because it does break applications. Best regards, Alex Ionescu On Sat, Oct 11, 2014 at 4:59 PM, Timo Kreuzer <[email protected]> wrote: > > This is not what Windows 2003 Server SP1 CHK does. Can you prove that this > change in low level behavior does not break applications that rely on this? > Our kernel is based on Windows 2003 SP1 and nothing else. If we start to > introduce Windows 8 features, we are doomed! > > * Just kidding * > > > Am 11.10.2014 18:46, schrieb Alex Ionescu: > > Now improve the LIST_ENTRY Macros to use it :) > > Best regards, > Alex Ionescu > > On Sat, Oct 11, 2014 at 6:15 AM, <[email protected]> wrote: > >> Author: tfaber >> Date: Sat Oct 11 13:15:10 2014 >> New Revision: 64665 >> >> URL: http://svn.reactos.org/svn/reactos?rev=64665&view=rev >> Log: >> [NTOS:KE] >> - Implement KiRaiseSecurityCheckFailure[Handler] to handle int 0x29 >> (__fastfail). Based on patch by Timo Kreuzer. >> (Yes, this is a Windows 8 feature. However all it does is improve the >> debugging experience, and we have a need for that) >> CORE-8419 >> >> Modified: >> trunk/reactos/include/reactos/mc/bugcodes.mc >> trunk/reactos/ntoskrnl/ke/i386/trap.s >> trunk/reactos/ntoskrnl/ke/i386/traphdlr.c >> >> Modified: trunk/reactos/include/reactos/mc/bugcodes.mc >> URL: >> http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/mc/bugcodes.mc?rev=64665&r1=64664&r2=64665&view=diff >> >> ============================================================================== >> --- trunk/reactos/include/reactos/mc/bugcodes.mc [iso-8859-1] >> (original) >> +++ trunk/reactos/include/reactos/mc/bugcodes.mc [iso-8859-1] Sat >> Oct 11 13:15:10 2014 >> @@ -1128,7 +1128,7 @@ >> Run a system diagnostic utility supplied by your hardware manufacturer. >> In particular, run a memory check, and check for faulty or mismatched >> memory. Try changing video adapters. >> - >> + >> Disable or remove any newly installed hardware and drivers. Disable or >> remove any newly installed software. If you need to use Safe Mode to >> remove or disable components, restart your computer, press F8 to select >> @@ -1322,7 +1322,7 @@ >> SymbolicName=DRIVER_CORRUPTED_EXPOOL >> Language=English >> A device driver has pool. >> - >> + >> Check to make sure any new hardware or software is properly installed. >> If this is a new installation, ask your hardware or software manufacturer >> for any ReactOS updates you might need. >> @@ -1478,7 +1478,7 @@ >> must not contain such items. Usually this is memory being freed. This >> is usually caused by a device driver that has not cleaned up properly >> before freeing memory. >> - >> + >> If Parameter1 == 1, an attempt was made to queue an executive worker item >> with a usermode execution routine. >> . >> @@ -1570,3 +1570,11 @@ >> Language=English >> An attempt was made to execute to non-executable memory. >> . >> + >> +MessageId=0x139 >> +Severity=Success >> +Facility=System >> +SymbolicName=KERNEL_SECURITY_CHECK_FAILURE >> +Language=English >> +A critical kernel security check failed. >> +. >> >> Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s >> URL: >> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?rev=64665&r1=64664&r2=64665&view=diff >> >> ============================================================================== >> --- trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] (original) >> +++ trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] Sat Oct 11 >> 13:15:10 2014 >> @@ -59,9 +59,11 @@ >> idt _KiTrap11, INT_32_DPL0 /* INT 11: Align Check Exception >> (#AC) */ >> idt _KiTrap0F, INT_32_DPL0 /* INT 12: Machine Check Exception >> (#MC)*/ >> idt _KiTrap0F, INT_32_DPL0 /* INT 13: SIMD FPU Exception (#XF) >> */ >> -REPEAT 22 >> -idt _KiTrap0F, INT_32_DPL0 /* INT 14-29: UNDEFINED INTERRUPTS >> */ >> +REPEAT 21 >> +idt _KiTrap0F, INT_32_DPL0 /* INT 14-28: UNDEFINED INTERRUPTS >> */ >> ENDR >> +idt _KiRaiseSecurityCheckFailure, INT_32_DPL3 >> + /* INT 29: Handler for __fastfail >> */ >> idt _KiGetTickCount, INT_32_DPL3 /* INT 2A: Get Tick Count Handler >> */ >> idt _KiCallbackReturn, INT_32_DPL3 /* INT 2B: User-Mode Callback >> Return */ >> idt _KiRaiseAssertion, INT_32_DPL3 /* INT 2C: Debug Assertion Handler >> */ >> @@ -113,6 +115,7 @@ >> TRAP_ENTRY KiTrap10, KI_PUSH_FAKE_ERROR_CODE >> TRAP_ENTRY KiTrap11, KI_PUSH_FAKE_ERROR_CODE >> TRAP_ENTRY KiTrap13, KI_PUSH_FAKE_ERROR_CODE >> +TRAP_ENTRY KiRaiseSecurityCheckFailure, KI_PUSH_FAKE_ERROR_CODE >> TRAP_ENTRY KiGetTickCount, KI_PUSH_FAKE_ERROR_CODE >> TRAP_ENTRY KiCallbackReturn, KI_PUSH_FAKE_ERROR_CODE >> TRAP_ENTRY KiRaiseAssertion, KI_PUSH_FAKE_ERROR_CODE >> >> Modified: trunk/reactos/ntoskrnl/ke/i386/traphdlr.c >> URL: >> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/traphdlr.c?rev=64665&r1=64664&r2=64665&view=diff >> >> ============================================================================== >> --- trunk/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] (original) >> +++ trunk/reactos/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] Sat Oct 11 >> 13:15:10 2014 >> @@ -1462,6 +1462,46 @@ >> >> VOID >> FASTCALL >> +KiRaiseSecurityCheckFailureHandler(IN PKTRAP_FRAME TrapFrame) >> +{ >> + /* Save trap frame */ >> + KiEnterTrap(TrapFrame); >> + >> + /* Decrement EIP to point to the INT29 instruction (2 bytes, not 1 >> like INT3) */ >> + TrapFrame->Eip -= 2; >> + >> + /* Check if this is a user trap */ >> + if (KiUserTrap(TrapFrame)) >> + { >> + /* Dispatch exception to user mode */ >> + KiDispatchException1Args(STATUS_STACK_BUFFER_OVERRUN, >> + TrapFrame->Eip, >> + TrapFrame->Ecx, >> + TrapFrame); >> + } >> + else >> + { >> + EXCEPTION_RECORD ExceptionRecord; >> + >> + /* Bugcheck the system */ >> + ExceptionRecord.ExceptionCode = STATUS_STACK_BUFFER_OVERRUN; >> + ExceptionRecord.ExceptionFlags = EXCEPTION_NONCONTINUABLE; >> + ExceptionRecord.ExceptionRecord = NULL; >> + ExceptionRecord.ExceptionAddress = (PVOID)TrapFrame->Eip; >> + ExceptionRecord.NumberParameters = 1; >> + ExceptionRecord.ExceptionInformation[0] = TrapFrame->Ecx; >> + >> + KeBugCheckWithTf(KERNEL_SECURITY_CHECK_FAILURE, >> + TrapFrame->Ecx, >> + (ULONG_PTR)TrapFrame, >> + (ULONG_PTR)&ExceptionRecord, >> + 0, >> + TrapFrame); >> + } >> +} >> + >> +VOID >> +FASTCALL >> KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame) >> { >> UNIMPLEMENTED_DBGBREAK(); >> >> >> > > > _______________________________________________ > Ros-dev mailing > [email protected]http://www.reactos.org/mailman/listinfo/ros-dev > > > > _______________________________________________ > Ros-dev mailing list > [email protected] > http://www.reactos.org/mailman/listinfo/ros-dev > >
_______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
