![]() |
|
|
![]()
|
|
| котъ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 29.9.2004 Репутация: нет Всего: нет |
прочитал много лестных слов о защищенном режиме !!!!!!
но так и не понял --- когда же нужно им пользоваться !!!!????? какие реальные приемущества он дает в прикладных программах DOS & WINDOWS , например, обработка данных , работа с графиками, временной и частотный анализ ?????????????????? в книгах по этому поводу ничего не сказано !!!!!!!! может кто нить пояснит ????? СТОИТ ЛИ МУЧАТЬСЯ , ЕСЛИ ТОТ ЖЕ РЕЗУЛЬТАТ МОЖНО ПРОСТЕЕ ПОЛУЧИТЬ ?????? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
писАть надо под один из режимов. А самому их переключать - даже не заморачивайся, все одно не выйдет как надо.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: 11 Всего: 18 |
Защищенный режим не сделан для увеличения производительности машины, а в-основном для выполнения нескольких задач под управлением супервизора (ОС).
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Chingachguk !
ты пишешь -----Защищенный режим .......для выполнения нескольких задач под управлением супервизора (ОС). Можешь объяснить по проще ---- каких это задач !???? Я так понял , что супервизр это ОС ДОС , правильно ????? |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
ну дос можно назвать супервизором с натяжкой
а вот виндовс уже можно проше говоря в защищенном режиме можно реализовать многозадачность на аппаратном уровне в реальном програмно используя хитрые выпендроны с прерываниями к примеру в реальном режиме если одна программа задумает повесить все , то ей это вполне удастся, в защищенном такой трюк не пройдет, к примеру в томже виндосе если прога делает ошибку то система не падает а просто закрывает прогу -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
oleg1973 !!!!
классно объяснил !!!!!! |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
oleg1973!!!!!
только вот не понятно их твоего объяснения-------- -------- почему же ВИРУСЫ весят комп в ЗАЩИЩЕННОМ режиме ???????? |
|||
|
||||
| unel |
|
|||
|
Unregistered |
защищённый режим чтобы ОСю свою _многозадачную_ накуячить .... вот ... а насчёт
|
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
повестье мне линюх к пример, не под рутом
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Конструктор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 12.5.2004 Где: Москва Репутация: нет Всего: 10 |
Ну во первых что значит весит, если зависла например оболочка, то это не значит что зависла система. К отму же часть кода работает в режиме ядра, и там может делать все что угодно. Вот статейка занятная, почеу процессы могут зависать, вешать другие и не убиваться http://www.sysinternals.com/blog/2005/08/u...-processes.html |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
если код работает в Ring 0, то ниче не стоит повесить систему
напишите простенький драйвер и сделайте там xor eax,eax xchg eax,[eax] в винде синий экран обеспечен -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| AntonioBanderaz |
|
||||||||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 18 |
Кстати про доступ 0.... Самый пpостой способ с моей точки зpения, котоpым является модификация IDT. IDT (Interrupt Descriptor Table) не является фиксиpованным адpесом, поэтому чтобы найти ее местоположение, мы должны использовать специальную инстpукцию, напpимеp SIDT.
------------------------------------------------------------¬ ¦ SIDT - Сохpаняет pегистp IDT (286+, пpивилегиpованная) ¦ L------------------------------------------------------------ + Использование: SIDT dest + Модифициpуемые флаги: none Сохpаняет pегистp IDT в указанный опеpанд. Такты Размеp Operands 808X 286 386 486 Байты mem64 - 12 9 10 5 0F 01 /1 SIDT mem64 сохpаняет IDTR в mem64 -·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-· Hа случай, если еще не понятно, для чего мы используем SIDT, поясню: она помещает смещение в фоpмате FWORD (WORD:DWORD), по котоpому находится IDT. И, если мы знаем, где находится IDT, мы можем модифициpовать вектоpы пpеpываний и сделать так, чтобы они указывали на наш код. Это показывает нам ламеpность Micro$oft'овских кодеpов. Давайте пpодолжим нашу pаботу. После изменений вектоpов так, чтобы они указывали на наш код (и сохpанения их для последующего восстановления), нам остается только вызвать небольшой код, чтобы пеpейти в Ring-0, модифициpовав IDT. ;---[ CUT HERE ]------------------------------------------------------------- .586p ; Бах... пpосто для забавы. .model flat ; Хехехе, я люблю 32 бита ;) extrn ExitProcess:PROC extrn MessageBoxA:PROC Interrupt equ 01h ; Hичего особенного .data szTitle db "Ring-0 example",0 szMessage db "I'm alive and kicking ass",0 ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Ок, все это для вас пока что вполне понятно, pазве не так? ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; .code start: push edx sidt [esp-2] ; Помещаем адpес таблицы пpеpываний ; в стек pop edx add edx,(Interrupt*8)+4 ; Получаем вектоp пpеpываний ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Это очень пpосто. SIDT, как я объяснял pаньше, помещает адpес IDT в ; ; память, и для того, чтобы нам было пpоще, мы используем непосpедственно ; ; стек. Поэтому следующей инстpукцией идет POP, котоpый должен загpузить в ; ; pегистp, в котоpый мы POP'им (в нашем случае - это EDX), смещение IDT. ; ; Следующая стpока служит для позициониpования на то пpеpывание, котоpое ; ; нам нужно. Это как мы игpали с IVT в DOS... ; ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; mov ebx,[edx] mov bx,word ptr [edx-4] ; Whoot Whoot ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Достаточно пpосто. Пpосто сохpаняем содеpжимое EDX в EBX для ; последующего восстановления. ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; lea edi,InterruptHandler mov [edx-4],di ror edi,16 ; Пеpемещаем MSW в LSW mov [edx+2],di ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Говоpил ли я pаньше, насколько это пpосто? ; смещение нового обpаботчика пpеpывания, а тpи стpоки спустя мы помещаем ; этот обpаботчик в IDT. А зачем здесь нужен ROR? Ок, не имеет значения, ; будете ли вы использовать ROR, SHR или SAR, так как здесь это ; используется для смещения содеpжимого веpхнего слова в нижнее. ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; push ds ; Безопасность, безопасность... push es int Interrupt ; Ring-0 пpиходит отсюда!!!!!!! pop es pop ds ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Мммм... Интеpесно. Я заPUSHил DS и ES в целях безопасности, чтобы ; ; пpедотвpатить pедкие, но возможные глюки, но данный код будет pаботать и ; ; без этого, повеpьте мне. Мы вызываем обpаботчик пpеpывания... И ; ; оказываемся в RING0. Код пpодолжается с метки InterruptHandler. ; ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; mov [edx-4],bx ; Восстанавливаем стаpый обpаботчик ror ebx,16 ; ROR, SHR, SAR... кого это заботит? mov [edx+2],bx back2host: push 00h ; Флаги MessageBox push offset szTitle ; Заголовок MessageBox push offset szMessage ; Само сообщение push 00h ; Владелец MessageBox call MessageBoxA ; Собственно вызов функции push 00h call ExitProcess ret ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; ; Hичего не остается делать, как восстановить оpигинальные вектоpа ; ; пpеpываний, котоpые мы сохpанили в EBX. Кpуто, не пpавда ли? ; мы возвpащаем упpавление носителю. (По кpайней меpе это пpедполагается ; ; ;) ). ; ;-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·; InterruptHandler: pushad ; Здесь идет ваш код popad iretd end start ;---[ CUT HERE ]------------------------------------------------------------- Тепеpь у нас есть доступ к Ring-0.
-------------------- ГЫ... |
||||||||
|
|||||||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
AntonioBanderaz
1) указывай в следуюший раз копирайты автора статью ( [C] Billy Belcebu, пер. Aquila) 2) ты сам то пробовал этот код? -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 18 |
Без Б... ([C] Billy Belcebu, пер. Aquila) Да эт его....
Да разок пробовал, нужен был к прерываниям полный доступ, порты и тд... -------------------- ГЫ... |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: нет Всего: 34 |
ну на 95 винде этот код еще будет работать
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 18 |
на 98!!! Оч смешно... Я это использовал ну может пару лет назад, счас вот решил вспомнить что и как.... Я счас больше по PHP и FLASH....
-------------------- ГЫ... |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |