Помогите пожалуйста найти прогу, которая с 3-его кольца ныряла на нулевое под WinXP. Мне просто нужно сосчитать регистры MSR, а они доступны только с 0-го кольца(в защищенном режиме). Заранее благодарен.
Кстати да, драйвер писать не обязательно ZwSystemDebugControl, DEBUG_CONTROL_CODE = DebugSysReadMsr / DebugSysWriteMsr
Код (Text): enum { SysDbgSysReadMsr = 16, SysDbgSysWriteMsr = 17 }; NTSTATUS WINAPI NtSystemDebugControl(...); typedef struct _MSR_STRUCT { /* 00 */ DWORD MsrNum; // MSR number /* 04 */ DWORD NotUsed; // Never accessed by the kernel /* 08 */ ULONGLONG MsrValue; // 64bit MSR value } MSR_STRUCT, *PMSR_STRUCT; // // Read MSR // ULONGLONG ReadMsr( LONG MsrNum ) { MSR_STRUCT Msr = {0}; Msr.MsrNum = MsrNum; NTSTATUS Status = fNtSystemDebugControl ( SysDbgSysReadMsr, &Msr, sizeof(Msr), NULL, 0, 0 ); if( !NT_SUCCESS(Status) ) { return 0; } return Msr.MsrValue; } // // Write MSR // BOOL WriteMsr( LONG MsrNum, ULONGLONG Value ) { MSR_STRUCT Msr = {0}; Msr.MsrNum = MsrNum; Msr.MsrValue = Value; NTSTATUS Status = fNtSystemDebugControl ( SysDbgSysWriteMsr, &Msr, sizeof(Msr), NULL, 0, 0 ); if( !NT_SUCCESS(Status) ) { return FALSE; } return TRUE; }