Re: Переход на ring 0
От: Владимир Гренадеров Россия  
Дата: 13.04.02 18:01
Оценка: 10 (1)
Здравствуйте kong, Вы писали:

K>Привет.

K>Очень нужен пример перехода на ring0 без написания драйвера, причем как под win9x так и под Win2K. Наилучшим будет пример на С++ (Visual C++), но поможет и на асме.

Вот пример (насчет w2k не знаю):

push esp 0 0
push offset thread_ring3_code
push 0 0
callW CreateThread ; создаем новую нить
xchg ebx, eax ; EBX=хендл нити

push offset context
push ebx
callW GetThreadContext; получаем контекст нити

mov context._segcs, 28h ; меняем CS:EIP
mov context._eip, offset ring0_code

push offset context
push ebx
callW SetThreadContext; устанавливаем контекст

jmp $ ; чего-то ждем

thread_ring3_code: push 1
call Sleep ; пауза
jmp thread_ring3_code

ring0_code: push ss ss ; мы в нуле!
pop ds es
...
OK
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.