· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› 0 кольцо защиты

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Июл 16, 2003 03:16:07

А по поводу printf - что вы скажете по поводу
printf("%n",&adr...) - что делает %n ? И что будет в
стеке.


Ответ короткий - проблем программиста. Кроме того, это Касперски настолько досконально разобрал по кирпичикам в своей книге, что говорить об этом более не интересно.
Далее.

селектор DS или ES дескритором FS

Чего??? А для меня дурака можно расшифровать. Я, грешным делом, считал, что это все сегментные регистры :)

Касательно остального - мне надо подумать и почитать доки. Но сходу скажу - вряд ли. Сам же признаешь, что с процом разбираться - последнее дело. Обработчик int2E ковырять - дело забавное. Надо мне будет доки на сайт положить. Кто-то это дело уже описывал...


Дата: Июл 16, 2003 03:31:50

volodya По поводу регистров - комманда
movsb - это ds:[esi] -> es:[edi], но int 2Eh
пологает что она работает в flat модели, и
ничего не подозревая устанавливает edi
линейный адрес своего стека 0 кольца чтобы скопировать
параметры передаваемые функции из 3 кольца, т.е.
адрес где-то больше 0Fxxxxxxxh, но если к примеру
es=fs, а fs едь имеет границу не 4 ГБ как
все остальные сегменты, будет вырабатываться
исключение - превышение границы.


Дата: Июл 16, 2003 12:42:27

volodya wrote:
Я, грешным делом, считал, что это все сегментные регистры :)
Ага, сегментные регистры, которые содержат селекторы дескрипторов. :-))) Хотя за точность терминологии не отвечаю.

2PROFI:
Хм, действительно интересно. Я недавно копал KiSystemService и тоже удивился почему она не устанавливает регистры DS и ES.
Вопрос в том, дадут ли тебе изменить значения этих регистров из ring-3. Надо будет наваять тестовую програмку.


Дата: Июл 17, 2003 02:25:56 · Поправил: PROFi

Sten Дадут, но взгляни на селектор FS,
ведь он 0 уровня даже на 3м кольце, но,
к сожалению, программа обработки исключения, которое
действительно возникает - корректно обрабатыват его.
А что касается дескрипторов, которые можно загружать на
3м уровне, то их только три (кажется) CS ((ES,DS) и FS)
Будеш тестировать, учти селектор FS надо сделать с
RPL=3 перед загрузкой его в ES. Если интересна
эта тема то связывайтесь со мной - profi_2000@tut.by


Дата: Июл 17, 2003 12:28:23

Дадут, но взгляни на селектор FS,
ведь он 0 уровня даже на 3м кольце

Взглянул. В режиме ядра используется FS=30h, в пользовательском режиме FS=3Bh c DPL=3.

но, к сожалению, программа обработки исключения, которое
действительно возникает - корректно обрабатыват его

Да, в там оказывается при копировании параметров из пользовательской памяти в системную обработчик page-fault учитывает возможность сбоя..

Будеш тестировать, учти селектор FS надо сделать с
RPL=3 перед загрузкой его в ES

Не совсем понял, что ты в ES загружаешь - 3Bh или 33h?
3Bh действительно должен загрузиться. Только толку от этого все равно не видно..


Дата: Июл 17, 2003 22:52:54 · Поправил: GanDJuStas

Это все хорошо, а хоть кто-нить скажет как можно на 0-кольцо пробиться?


Дата: Июл 18, 2003 02:40:22 · Поправил: PROFi

Sten
Очень рад что тебя заинтересовала тема, а
что если попробывать DPMI. В нем можно создать дескриптор
с базой допустим 80000000h(надо подбирать), и вызвать
sysenter или int 2Eh, загрузив
es этим селектором? К сожалению у меня сейчас комп.
на котором можно запустить только 98 и я не могу
проверить, кроме того с DPMI (int 31h) я практически не
работал, но документация есть в и-нете. В часности
NTFSDOS 4.х использует его. Да я на время отлучаюсь
(отпуск) от и-нета, так что кидайте свои соображения на
e-mail.
Дополнительно. Есть структура CONTEXT. Создаем поток
типа (suspend), или даже работающий но сложнее искать,
меняем в нем CS, кстати если использовать soft-ice
то это работает, но структура CONTEXT потока за
пределом 80000000h


Дата: Июл 18, 2003 03:22:03

GanDJuStas Это мы и пытаемся выяснит на форуме. Да еще в дополнение. Комманда movsb в обработчике int 2Eh
будет писать в любое место памяти, хоть в сам обработчик,
если ей удасться подсунуть этот липовый es (с базой
отличной от 00000000h), и по идее если страница
присутствует, то исключения генерироваться не будет,
ведь int 2Eh на ring 0. Кстати и sysenter не привелиге-
рованная.


Дата: Июл 18, 2003 04:32:34

Sten Да у меня FS в пользовательском режиме
почемуто был 38h а не 3Bh ????


Дата: Июл 18, 2003 15:14:09

PROFi
Я точно знаю что баг со структурой контекст не работает в вин2000 со вторым сервис паком. Думаю что в XP тоже работать не будет.

All
А кто нибудь знает почему для прерываний 20h-29h в IDT нули?


Дата: Июл 19, 2003 02:14:12

Black_mirror Суть ведь не в поиске бага структуры
CONTEXT, а в возможности изменять память за границей
80000000h, причем делать это на ring 0.


Дата: Июл 19, 2003 02:52:29

Более подробно об идее проникновения на 0 кольцо.
пишем приложение DPMI (int 31h), создаем
дескриптор с базой допустим 80000000h(надо
подбирать),загружаем этот дескриптор в ES.
Потом вызываем sysenter или int 2Eh, а
если его (int 2Eh) просмотреть soft-ice,
то видно что он не меняя селекторы ES и DS
пытается скопировать параметры в новый стек
коммандой movsb (ds:[esi]->es:[edi]), а
ведь база уже не 000000000h => он копирует наши
параметры практически куда угодно (хоть
само int 2Eh меняй), а поскольку это на кольце 0 -
исключения не возникает.


Дата: Июл 19, 2003 02:53:10

DPMI - Dos Protected Mode Interface

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081