· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Нулевое кольцо

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


Дата: Мар 10, 2004 19:25:02

Объясните пожалуйста реально ли провалиться на нулевое кольцо?


Дата: Мар 10, 2004 21:28:41

Ты сегодня выспался?


Дата: Мар 10, 2004 21:31:34

просто интересно!! Мне один КЕНТ толкнул инфу про это!! А мне кажется это не реальным только один СофтАйс работает на Нулевом кольце.
Вот и консультируюсь с профессионалами!!! Что скажете по данному поводу?


Дата: Мар 10, 2004 21:40:59 · Поправил: Valery

emergenter


Упсс..! Кроме собственных тредов ты похоже ничего не замечаешь:))


Дата: Мар 10, 2004 22:09:45 · Поправил: _Juicy

Очень советую вам пойти в библиотеку и взять книжку, скажем, Гука по процессорам и внимательно прочитать, что такое нулевое кольцо. Затем еще хорошо бы Руссиновича... Да и в сети много информации по этому поводу.
В кратце - нулевое кольцо это особый режим процессора, в котором разрешены привелигированные команды, например, прямой доступ к железу. В нем работает система, и проваливаетесь вы туда при вызове большинства системных процедур. Режим ядра - то же самое, что и нулевое кольцо. Короче, читайте. И впредь имейте ввиду, что профессионалам такие вопросы не задают.:)


Дата: Мар 11, 2004 02:03:14

> только один СофтАйс работает на Нулевом кольце

Бу-га-га, вот повеселил %)))


Дата: Мар 12, 2004 15:13:17

Я думаю, что emergenter спрашивал насчет способа перехода в нулевое кольцо в windows 9x с помощью исправления таблицы idt или gdt, которое возможно благодаря тупости microsoft-овцев. Про этот способ можно поискать в интернете, там много на эту тему. Могу если надо привести пример своей программы, где я это дело использовал для вызова сервисов VMM (Я менял элемент idt, потому что это проще).


Дата: Мар 12, 2004 21:25:39 · Поправил: emergenter

Icebp
Да! Я как раз и имел это в виду!!! Хоть один человек знает... Можно ли по подробней. Реально ли вообще это и где найти исчерпывающую документацию?


Дата: Мар 12, 2004 21:38:03

Упсс..! Кроме собственных тредов ты похоже ничего не замечаешь:))

А ведь упрек-то тебе, уважаемый, справедливый. Ничего-то ты, кроме своих тредов, и не видишь!
Что до 9х - ситуевина мне неизвестна и глубоко безразлична, а вот под nt - дело другое. Там такие фокусы запрещены - система спроектирована более грамотно.
Однако старфорс и другие бяки делают следующее - ставят себе в ресурсах дровину, которая взлетает в нулевое кольцо. Там эта дровина создает колгейт, благодаря которому код 3-кольца способен оперировать с памятью кольца-0. И документировано это дело сравнительно неплохо. Только вот глазоньки бы тебе раскрыть и по форуму-то поискать. Я и линк на чтиво давал...


Дата: Мар 13, 2004 20:43:18

Emergenter, я постараюсь найти свою программу и выложить ее здесь. Однако, как правильно сказал volodya, такой метод, работающий в windows 9x не будет работать в windows NT,2000,XP и.т.п. Поэтому выбери что тебе требуется: выйти в нулевое кольцо в windows 98 или в XP. Сейчас по памяти я не могу тебе дать работающий код, так как перед глазами нет формата таблицы дескрипторов прерываний. Приблизительно же он может выглядеть например так:
sidt [IDT_table]
mov ebx,[IDT_table+2]
mov [ebx+xxxxxxxx],xxxxxx ; как раз здесь не могу ; сказать
; какие надо ставить значения
...
int 5 ; можно вызывать и другое прерывание
; все зависит от того какой вектор ты
; модифицируеш. В вектор ты пишешь адрес
; своей процедуры для 0-ого кольца.
ring0_proc:
....... ; Здесь эта процедура.
.......

Если я не ошибаюсь то 5-ый вектор использовал вирус CIH (Чернобыль) для перехода в 0-ое кольцо. Кстати почитай про него где нибудь (один из интереснейших на мой взгляд). Можеш поискать его дизассемблированные листинги. Вместо int 5, кстати, можно сделать например и покрасивее: модифицируеш вектор ошибки деления на ноль и потом делиш на ноль. Например так: xor ebx,ebx
div ebx


Дата: Мар 14, 2004 03:08:19

Возможно будет небезинтересным ознакомление с Phide by 90210.
http://www.wasm.ru/toollist.php?list=21#253


Дата: Мар 15, 2004 09:55:13

Icebp
Хотелось бы разобраться для 98 виндовса!


Дата: Мар 16, 2004 18:34:07

Emergenter, я в качестве примера даю тебе исходник своей
DLL-ки. В ней используется переход в 0-ое кольцо для вызова сервисов VMM. Процедура перехода в 0-ое кольцо там так и называется ring0. В ней сохраняется старое содержимое элемента таблицы IDT для 0-го прерывания, то есть для прерывания ошибки деления на 0. Потом оно модифицируется (в него пишется адрес нашей процедуры) и выполняется деление на 0. То есть команды xor ebx,ebx и
div ebx приводят к выполнению моего кода но уже не в 3-ем
кольце, а в 0-ом (этому отвечает значение 28h, записанное в IDT). После своего выполнения после команды возврата iretd элемент таблицы IDT восстанавливается, чтобы потом ничего случайно не повисло. Если появятся вопросы, то спрашивай меня.

183376477__Hyper32.asm


Дата: Мар 17, 2004 20:31:01 · Поправил: emergenter

Icebp
Спасибо огромное!! Можно по майлу спрашивать? или по аське?


Дата: Мар 18, 2004 07:20:05

Мой мейл icebp@hotmail.ru так что можешь спрашивать по нему. Правда я не так часто имею выход в интернет, поэтому возможны 2-х дневные задержки (наверное это оценка ро максимуму и я постараюсь почаще смотреть свою почту).


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