|
|
| Посл.отвђт | Сообщен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 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081 |