Windows bAg (а не bUg?)


[ Комментарии ] [ Добавить комментарий ] [ Доска объявлений HackZone ]

Отправитель: Paranoid, October 06, 1998, 19:19:41:

В ответ на: Windows bAg (а не bUg?) (отправитель: Dmit, October 06, 1998, 08:57:50):


: Сначала напомню кусочек того сообщения - "Для тестов у меня была такая процедура"
: И пронумерую строки, чтобы проще было...

Прям basic голимый
: 00: Entry_00:
: 01: mov eax,0x12345678 ; Сюда положим дескриптор данных третьего кольца
: 02: mov ds,ax
: 03: mov eax,cr0
: 04: mov dword ptr [CurrentCR0],eax
: 05: mov eax,cr3
: 06: mov dword ptr [CurrentCR3],eax
: 07: retf

: А теперь - посмотрим...

: : :mov dword ptr [CurrentCR0],EAX это вообще полная@#$%ня!
: : 1)dword ptr подразумевает обращение к 4м байтам памяти, а не к регистру
: : 2)значение в квадратных скобках должно толковаться как адрес

: Так у него и идет обращение к памяти. Он записывает содержимое EAX в переменную с именем CurrentCR0.

mov dword ptr CurrentCR0,eax ;сохраняем CR0 в переменной
скобки то зачем? Mогет в TASMe синтаксис другой?
Тогда sorry!
Ваще то
CurrentCR0 dd 0

а потом и dword ptr не надо

: : писать в CR0 МОЖНО И В REAL MODE НО ДЕЛАЮТ ЭТО ТАК:
: : MOV CR0,EAX

: Так он не ПИШЕТ в CR0, а ЧИТАЕТ из него (в 3-й строке)! Кроме того, Windows 9x в REAL MODE никогда не работала. А в CR0 так пишут во всех режимах. Да я и не знаю, как это сделать по-другому... Разве что младшие 16 бит через LMSW.

а)Да не путаю я операнды! Нет вопросов к 3 и 5 строке
б)А что,после старта win.com и до shutdown CPU в реальный режим ри разу не переключается?
в)В CR0 не пишут в virtual mode (придирка :-) )

: : 3)Чтоб вы оба знали - в сегментный регистр помещают не дескриптор,а селектор (смещение в таблице дескрипторов) а адреса таблиц грузят в регистры GDTR и LDTR.

: Вот тут ты действительно прав. Я тоже не понимаю, зачем ему в 1-ой строке 32-х битовое значение грузить в EAX, если потом только 16 бит перенесется в DS? Кроме того, в приведенном примере у него в DS будет значение 0x5678, что означает ... сегмент 2767 (0x0ACF) из GDT с RPL=0. Так что кольцо совсем даже не третье...
:

Ну хоть в чем-то согласен!

: : 4)Кто тебе сказал ,что на 3 уровне привилегий ты сможешь менять что-то в таблице IDT?

Не поленись,прочти мессагу cb.Если способ который предлагает первый автор остался покрытым мраком,то у
cb ето выглядит так: изменить IDT (нацелить на свой обработчик),а затем "сгенерить прерывание NN" (так в тексте,кажется) и попасть в RING 0.

: Так он не IDT меняет, а к CR0 и CR3 обращается. А команды обращения к этим регистрам являются привилегированными, и допустимы только при PL=0. Иначе генерируется исключение 13. А если ему дают прочитать CR0, так и IDTR дадут поменять.

Читай выше

: : 5)Сильно сомневаюсь,что чел который не смог написать
: : правильно 4 команды на ASM мог чтото там сделать с
: : системными таблицами.

: Сильно сомневаюсь, что использование MASM еще до появления i286 является поводом для того, чтобы называть нормальную программу полным бредом.

а)А ты злопамятный :-))
б)Прости мое невежество,но разве работа в RING 0 для
драйверов win95 не является делом обычным? Есть ли
повод для разговора о бэге или баге?
в)По правописанию bAg не ко мне...
г)Очень великодушно с твоей стороны назвать 8 строк на
ASMe (включая метку) прогой
д)Не полным,а просто бредом (ну горяч я,горяч)

PS: Ваще то ета "тестирующая процедура" смахивает
на кусок листинга обработчика INT-00H,но RETF ?

: С уважением
Взаимно


Комментарии:


Цитировать сообщение


[ Комментарии ] [ Доска объявлений HackZone ]