Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2] 3  Все   Вниз
  Печать  
Автор Тема: Кто скажет, если вызвать прерывание в 0 кольце ...  (Прочитано 74377 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #30 : 18-08-2003 05:21 » 

Цитата

Это я был выше...


Вот и у меня на прошлой неделе что-то с автоматическим входом не так было.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 18-08-2003 15:33 » 

Цитата: SlavaI
А ты что в винде хочешь прерывание вызвать?
Можно конечно свой обработчик написать и поместить на него указатель в IDT. И тогда при вызове int X будет вызван он. Но это немного против правил, так как самостоятельное изменение IDT в винде не предусмотренно, но и запретить это сделать тебе нельзя.
А как должен выглядеть обработчик прерывания, что надо прописать в IDT, и что происходит со стеком при смене и без смены привилегий -читай в документации Intel.

:!: При очередном билде первой версии в ноябре прошого года (надеюсь, что через несколько месяцев будет вторая) моей операционной системы (полноценная ось, но первая версия безвозвратно поибла Жаль ), я обнаружил, что из процесса с уровнем привелегий 3 в Win98 можно реально вылезти в 0 кольцо привелегий :!: без особых на то усилий.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 18-08-2003 15:36 » 

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU  в Win98, обращайтесь лично  Ага
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #33 : 18-08-2003 18:27 » 

Давай... на каких условиях?
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #34 : 19-08-2003 05:16 » 

Цитата

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично


Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #35 : 19-08-2003 07:20 » 

Ну посмотреть все равно можно. Только вот косяк. Меня завтра в армию drag&drop  Я шокирован!  Ха-ха-ха, на 25 суток партизанить  8) .  . Так что всем удачи !
Записан

while (8==8)
Anonymous
Гость
« Ответ #36 : 19-08-2003 07:38 » 

Цитата

Меня завтра в армию drag&drop  , на 25 суток партизанить  


Заплатил бы 400 долларов военным и отстали бы от тебя.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #37 : 19-08-2003 07:57 » 

sss, ну тогда удачи.
Записан

А птичку нашу прошу не обижать!!!
sss
Специалист

ru
Offline Offline

« Ответ #38 : 19-08-2003 08:09 » 

Спасибо Гром. А про 400$, это мой заработок за 3 месяца. А предлогают стать офицером ФСБ. Все пригодиться.  Вот такой я вот
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #39 : 19-08-2003 08:10 » 

PS: гость - SlavaI ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #40 : 19-08-2003 09:01 » 

Цитата

PS: гость - SlavaI ?


Ага, я. А вот я стал лейтенантом запаса РВСН(Ракетные Войска Стратегического Назначения). 8)  :!:
РВСН- это хорошо!
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #41 : 19-08-2003 09:05 » 

Цитата: SlavaI
Цитата

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично


Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился.

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...
Записан
sss
Специалист

ru
Offline Offline

« Ответ #42 : 19-08-2003 09:06 » 

Цитата: SlavaI

РВСН- это хорошо!


 Отлично
Записан

while (8==8)
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #43 : 19-08-2003 09:11 » 

Цитата: SlavaI
Только на кой это нужно, кому нужна 95/98 сейчас.
Ага
Мне! Там  есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!! Жжешь
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #44 : 19-08-2003 09:58 » 

Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


Ну так расскажи как. Я уже один знаю- надо быть админом.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #45 : 19-08-2003 10:00 » 

Цитата

Мне! Там есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!!


Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает?
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #46 : 19-08-2003 10:40 » 

Цитата: SlavaI
Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает?
Жжешь
Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д.
=> Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом Ага) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 19-08-2003 10:42 » 

Цитата: SlavaI
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


Ну так расскажи как. Я уже один знаю- надо быть админом.

Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #48 : 19-08-2003 11:39 » 

Цитата

Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах


Ну и что? Что дальше-то. Я подобных фактов до кучи знаю. Ты мне приведи пример, когда имея права простого юзера долбанули процесс сервиса, например RPC (пример Lovesan, DebPloit не приводить). Будет еще один глюк, теперь на уровне управления памяти, а ты обессмертишь свое имя.
 У страниц, по которым отображены системные dll, атрибут copy on write. Фишка с изменением системных dll, как в Win95/98 не пройдет.
 К тому же kernel32.dll
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #49 : 19-08-2003 11:45 » 

Цитата

Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д.
=> Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом ) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)


Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32.
Наверно хватит применять мерки IA 32 ко всем процессорам на свете.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #50 : 19-08-2003 12:45 » 

Цитата: SlavaI
Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32.
Наверно хватит применять мерки IA 32 ко всем процессорам на свете.
Создавать процессор с 64-битной шиной не выгодно, если нет обратной совместитмости - его либо просто покупать не будут, либо он будет слишком дешевым - ты же не в голой винде сидишь 8), а большая часть софта - не Open-Source, даже, если и freeware..
К тому же Amd64 уже это поддерживает, а конкуренцию держать надо!
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #51 : 19-08-2003 12:54 » 

Цитата

Создавать процессор с 64-битной шиной не выгодно, если нет обратной совместитмости - его либо просто покупать не будут, либо он будет слишком дешевым - ты же не в голой винде сидишь , а большая часть софта - не Open-Source, даже, если и freeware..
К тому же Amd64 уже это поддерживает, а конкуренцию держать надо!


Ты это Intel скажи. Московское представительство- Чапаевский переуло д14. пятый этаж, налево из лифта.

С софтом там уже все в порядке- Oracl есть, IA 32 приложения работают(сам юзаю 32 разрядную VS6 с 64 разрядным компилятором). А основное применение этих процессоров- базы данных и высокопроизводительные и высокоточные вычисления с плавающей точкой(формат IEEE для чисел с плавающей точкой знаешь, если да то поймешь, почему широкие регистры лучше). С вычислениями тоже все нормально- они уже давно для 64 разрядных RISC систем делаются, так что перенос на Itanium не проблема. А у Linux вобще все хорошо- RH Advanced Server 2.1 со всем софтом уже давно есть.

А причем тут шина? Определять разрядность процессора по шине не совсем верно. У Itanium нет ни одной внешней 64 разрядной шины- шина адреса меньше, а данных больше. Разрядность процессора обычно определяют по разрядности основных регистров, а уж никак не по шине.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #52 : 19-08-2003 13:00 » 

Мы отклонились от темы... Отлично
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #53 : 19-08-2003 13:03 » 

Цитата

Мы отклонились от темы...


Да, ты обещал баг в управлении памятью в NT-XP.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #54 : 19-08-2003 13:10 » 

Цитата: SlavaI

Да, ты обещал баг в управлении памятью в NT-XP.

Позже - я сейчас на работе, все-таки... Здесь была моя ладья...
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #55 : 19-08-2003 13:11 » 

Цитата

Мы отклонились от темы...

Если при этом вторая тема интересна - то можно...

Да и как насчет бага - внимательно слежу!!!
Записан

А птичку нашу прошу не обижать!!!
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #56 : 19-08-2003 16:29 » 

Цитата: TJSoft
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU  в Win98, обращайтесь лично  Ага


Вот код программы ( по личной просьбе Грома)
Код:
;compilling ~{
; ml /c /Cp /coff /Fo$)outdir:
.586p
.model flat
.code
begin{
  ; getting IDTR{
  push eax
  push eax
  sidt [esp + 02h(
  pop eax ; не понадобится
  pop ecx
 
  mov eax, offset int3_Handler ; Для теста это более безопасно. можно взять 0Dh )мой любимый:. я проверял и на нем... ;-E~
 mov edx, eax
 shr edx, 10h
 
 xchg [ecx+18h+00h(, ax
 xchg [ecx+18h+06h(, dx ;забиваем адреса..
 int 3
 ret

int3_Handler proc
 mov [ecx+18h+00h(, ax
 mov [ecx+18h+06h(, dx ; восстанавливаем
 ;... do something...
 iretd
int3_Handler endp
end begin

Вот такие глюки.
Кстати, ради прикола, это работает под WinXP??
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #57 : 20-08-2003 05:35 » 

Цитата

Кстати, ради прикола, это работает под WinXP??


Конечно нет! Никто тебе не даст в NT трогать таблицу IDT. Тебе надо понять - 95/98 и NT - это разные вещи.

Разберем твой код. Я его перевел на С, так как на асме не компилю
Код:

__declspec) naked : void int3_Handler):
|
__asm
|
mov [ecx+18h+00h(, ax ;
    mov [ecx+18h+06h(, dx ;
    iretd ;
"
";

int _tmain)int argc, _TCHAR* argv[(:
|
__asm
|
push eax;
        push eax ;
        sidt [esp + 02h( ;
        pop  eax ;
pop  ecx;
mov  eax, offset int3_Handler ;
        mov  edx, eax ;
        shr  edx, 10h;
 
        xchg [ecx+18h+00h(, ax ;
        xchg [ecx+18h+06h(, dx ;
        int 3
"

return 0;
"



Естественно после запуска все это вылетает на строчке    xchg [ecx+18h+00h], ax ;  так как в ecx адрес IDT, а эта IDT находится в системном адресном пространстве, доступ к этим страницам разрешен только с CPL==0, а ты туда лезеш с CPL==3. Вот и получаешь по рукам.
Ты представляешь, если бы такой баг был в NT!
Тебе надо пересмотреть свое отношение к NT и не переносить баги 95/98 на NT.

Таким образом я делаю вывод, что фраза
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


не более чем заблуждение, связанное с незнанием архитектуры NT систем.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #58 : 20-08-2003 05:37 » 

А ты что оперрационку на ассемблере пишешь? По моему это ошибка.
Записан
.
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #59 : 20-08-2003 08:56 » 

Цитата
Конечно нет! Никто тебе не даст в NT трогать таблицу IDT. Тебе надо понять - 95/98 и NT - это разные вещи.

1. Я не говорил, что НТ и 98 - одинаковые. Я прекрасно знаю архитектуру первой и второй.
Цитата
Разберем твой код. Я его перевел на С, так как на асме не компилю
Под винды на асме я пишу много, и в 98% это не отличается от программирования на Си. Поэтому я не задавался вопросом о виде этой проги на Си

Цитата
Тебе надо пересмотреть свое отношение к NT и не переносить баги 95/98 на NT.
Я не переношу отношение к 98х на НТ. Даже
об этом "приколе" я узнал очень случайно!
Цитата
Таким образом я делаю вывод, что фраза
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...

не более чем заблуждение, связанное с незнанием архитектуры NT систем.
Здесь ты не прав, и сейчас поясню почему. Здесь работает другая ошибка МелкоМягких - адреса процедур.

1. Во всех процессах адрес процедуры ExitProcess(...) один и тот же.
2. ты можешь установить таймер для ЛЮБОГО процесса, у которого знаешь PID

Дальше, надеюсь, объяснять не надо
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Цитата: SlavaI
А ты что оперрационку на ассемблере пишешь? По моему это ошибка.

Не совсем так. Первая версия (только машинного кода ~600K - я не говорю о возможностях) была написано полностью на ассемблере из-за лени преписать компилятор под свой формат бинарей (поддержку других форматов мне еще предстоит написать. версии, эдак, в третьей или два с половиной). Но из-за погибшего :twisted: от старости харда погибло всё, поэтому вторая версия будет уже немного с другой архитектурой и написана на Си с ассемблерными вставками, где это нужно и откомпилирована немного помучанным GNU-компилятором.
Записан
Страниц: 1 [2] 3  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines