Форум: "Система";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизНулевое кольцо защиты (Ring0) Найти похожие ветки
← →
SDW-syscoder (2004-02-23 09:36) [0]Каким способом можно выполнить участки кода программы (процедуры или функции), написанные с использованием asm-вставок в этом кольце защиты, т.к. ОС Windows XP(2000) не разрешает на прямую работать с регистрами, прерываниями и портами компьютера.
Компонент TVicHW32 не впаривать:).
← →
KSergey © (2004-02-23 09:43) [1]Писать собственный драйвер - наиболее корректно для работы с портами в данных системах. (как - см. DDK; только не надо спрашивать что это такое - см. прайс MS)
Или все-таки воспользоваться готовыми универсальными, т.к. хлопотное это дело.
← →
12345678 (2004-02-23 09:58) [2]http://www.securitylab.ru/42927.html
hehe
← →
Игорь Шевченко © (2004-02-24 18:21) [3]12345678 (23.02.04 09:58)
Ну-ну. Хотел бы я знать, что можно сделать с этой информацией.
А то, что можно подсоединиться к ядерному отладчику в XP, так это давно известно...Благо сам отладчик умеет это делать...
← →
N169 (2004-02-24 19:28) [4]Поищите в интернете архивчик callgate.zip и почитайте книгу MATT PIETREK Windows 95 System programming SECRETS
Там описан способ выполнения user mode кода в ring0.
(Некоторые перцы используют описанный там приём для портирования кода из-под ДОС. Но результаты иногда не очень...)
← →
KSergey © (2004-02-25 08:30) [5]> [4] N169 (24.02.04 19:28)
> Поищите в интернете архивчик callgate.zip и почитайте книгу
> MATT PIETREK Windows 95 System programming SECRETS
Вот только проканают ли "Windows 95 SECRETS" в качестве WinNT SECRETS - что-то сомнения меня разбирают...
← →
Kerk © (2004-02-25 09:26) [6]Вот для WinNT. Способ для настоящих извращенцев... %))
http://www.sbvc.net/articles/33.html
← →
Игорь Шевченко © (2004-02-25 11:04) [7]Kerk © (25.02.04 09:26)
Туфта это, похоже...
← →
h0use © (2004-02-25 17:23) [8]И все же, вот тут скачал програмку, котрая читает MSR регистры, без какого-то там труда, я же никак не могу заставить работать оператор
rdmsr
в асме :( Подскажите, может кто-то уже читал MSR из Делфы?
← →
Digitman © (2004-02-25 17:56) [9]
> h0use © (25.02.04 17:23) [8]
"Делфа"-то при чем ?
Суть вопроса - как без использования драйвера режима ядра получить управление в Ринг0 ..
← →
h0use © (2004-02-25 18:02) [10]Хорошо, Делфа не причем...вообще кто-нибудь читал из чего-нибудь MSR без написания драйвера?
← →
Digitman © (2004-02-25 18:13) [11]
> h0use © (25.02.04 18:02) [10]
ссылка ж приведена в [6]
исследуй указанный код - сразу ответ на вопрос будет : моно или низя
← →
Klev (2004-02-25 21:45) [12]Таким развратом в Делфях заниматься?
Зачем?
Всегда же есть MASM, TASM...
← →
NightAngel © (2004-02-25 23:22) [13]Код для Win95/98.
// Код переданной функции будет выполнятся с уровнем привилегий PL0.
// Примечание: Это будет работать, только на Win9x/ME.
// Пользоваться сервисами WinAPI нельзя. Вместо них используются сервисы VMM/VxD
procedure CallRing0(Ring0Func:pointer);
const
ExceptionUsed = 5;
var
IDT : array [0..7] of byte;
lpOldGate : dword;
asm
pushad
sidt fword ptr IDT
mov ebx, dword ptr [IDT+2]
add ebx, 8*ExceptionUsed
mov dx, word ptr [ebx+6]
shl edx, 16d
mov dx, word ptr [ebx]
mov [lpOldGate], edx
mov eax, Ring0Func
mov word ptr [ebx], ax
shr eax, 16d
mov word ptr [ebx+6], ax
push ebx
int ExceptionUsed
pop ebx
mov ebx, dword ptr [IDT+2]
add ebx, 8*ExceptionUsed
mov edx, [lpOldGate]
mov word ptr [ebx], dx
shr edx, 16d
mov word ptr [ebx+6], dx
popad
end;
← →
N169 (2004-02-26 08:48) [14]callgate через модификацию LDT - туфта?
Вот вам пример работающей проги: PicProg для Windows от фирмы «Телесистемы».
Упомянутым выше способом они "портировали" на винду свой старый код для ДОС.
Так что, всё работает. На WinNT (Y2K,XP) тоже.
Не верите - закачайте, посмотрите, проверьте.
← →
h0use © (2004-02-26 09:32) [15]Хорошо, я согласен, раз без написания драйвера никак без извратов попасть в Ring0, тогда скажите, где можно найти пример примитивного драйвера для NT и для Win 9х отдельно и возможно ли бинарный код каким-то образом засунуть в компонент, так чтоб при вызове этого компонента соотвт код записывался в файл и после этого удалялся?
← →
Digitman © (2004-02-26 09:56) [16]
> возможно ли бинарный код каким-то образом засунуть в компонент
а что, по твоему, компонент содержит кроме бинарного кода ?
там сплошь и рядом - бинарный код)
и что значит "засунуть" ?
> при вызове этого компонента
что означает в твоем понимании "вызов компонента" ?
есть вызов некоего метода некоего класса/объекта, но термин "вызов компонента" - это нонсенс
> соотвт код записывался в файл
а для чего нулевое кольцо-то ? что, разве в файл нельзя записать данные в 3-м кольце ?
> после этого удалялся
кто ?!
← →
Игорь Шевченко © (2004-02-26 11:17) [17]N169 (26.02.04 08:48)
> Вот вам пример работающей проги: PicProg для Windows от
> фирмы «Телесистемы».
> Упомянутым выше способом они "портировали" на винду свой
> старый код для ДОС.
> Так что, всё работает. На WinNT (Y2K,XP) тоже.
> Не верите - закачайте, посмотрите, проверьте.
Ссылочку ?
← →
Kerk © (2004-02-26 11:24) [18]Игорь Шевченко © (25.02.04 11:04) [7]
Почему туфта? Там же к статье пример идет... вполне рабочий..
← →
h0use © (2004-02-26 12:06) [19]
> а что, по твоему, компонент содержит кроме бинарного кода
> ?
> там сплошь и рядом - бинарный код)
>
> и что значит "засунуть" ?
Это значит, что есть например vxd и можно ли ее добавить как ресурс в ресурсный файл компоненты, а потом собственно из ресурса пререписать во временно созданный файл и проинициализировать?
> что означает в твоем понимании "вызов компонента" ?
> есть вызов некоего метода некоего класса/объекта, но термин
> "вызов компонента" - это нонсенс
Вызов метода компонента, конечно...а точнее его конструктора.
> а для чего нулевое кольцо-то ? что, разве в файл нельзя
> записать данные в 3-м кольце ?
Записать можно, не в этом была основа вопроса
> кто ?!
собственно созданный vxd файл
← →
Игорь Шевченко © (2004-02-26 12:13) [20]Kerk © (26.02.04 11:24)
"Вполне рабочий пример" только перезагрузил мне компьютер. И все.
Еще раз - туфта.
← →
Игорь Шевченко © (2004-02-26 12:19) [21]h0use © (26.02.04 12:06)
> Это значит, что есть например vxd и можно ли ее добавить
> как ресурс в ресурсный файл компоненты, а потом собственно
> из ресурса пререписать во временно созданный файл и проинициализировать?
Можно. Некоторые утилиты Руссиновича так и работают.
← →
Kerk © (2004-02-26 12:29) [22]
> Игорь Шевченко © (26.02.04 12:13) [20]
У меня работает.
Win2k Prof + sp4
← →
Игорь Шевченко © (2004-02-26 12:44) [23]Kerk © (26.02.04 12:29)
Система аналогичная, результат описан выше. Вот ты сам подумай, если бы можно было так легко и просто входить в нужный режим, стали бы Руссинович с Когсуэллом какие-то драйверы режимая ядра изобретать для своих утилит ? Ссылки на то, что "они не знали" не принимаются, так как знают они гораздо больше, чем "Voodoo // SMF из Siberian Bears Virus Club"
← →
Polevi © (2004-02-26 13:12) [24]>Kerk © (26.02.04 12:29) [22]
у меня Win2k Server sp4 - "Отказано в доступе к устройству"
← →
Kerk © (2004-02-26 13:25) [25]
> Polevi © (26.02.04 13:12) [24]
Права админские?
> Игорь Шевченко © (26.02.04 12:44) [23]
Я лично писал утилиту, которая работает с PhysicalMemory (read/write) в WinXP как часть курсового по системному ПО. Руссинович это тоже делал у него на сайте исходники были.
А получив доступ на запись в физ.память. Добавить новый селектор в GDT - (IMHO) дело техники...
← →
Игорь Шевченко © (2004-02-26 13:32) [26]Kerk © (26.02.04 13:25)
Повторяю вопрос - какой тогда смысл в написании драйверов, если есть такой простой и легкий путь получения доступа в режим ядра ?
← →
Kerk © (2004-02-26 13:37) [27]
> Игорь Шевченко © (26.02.04 13:32) [26]
Ну... если тебя послушать, то в Win9x VXD вообще были не нужны.
Переход в Ring0 через \Device\PhysicalMemory недокументирован.
И, возможно, они эту дырку каким-нибудь сервис-паком прикроют...
← →
Игорь Шевченко © (2004-02-26 13:40) [28]Kerk © (26.02.04 13:37)
> то в Win9x VXD вообще были не нужны
Не надо путать кислое с плоским. VxD в Win9x необходимы, так как на них основана вся работа системы.
> Переход в Ring0 через \Device\PhysicalMemory недокументирован.
Похоже, что просто не работает...
← →
Kerk © (2004-02-26 13:48) [29]
> Не надо путать кислое с плоским. VxD в Win9x необходимы,
> так как на них основана вся работа системы.
Я имел ввиду, что для перехода в Ring0 в Win9x не обязательно писать драйвер. Это все знают и это никого почему-то не удивляет.
> > Переход в Ring0 через \Device\PhysicalMemory недокументирован.
>
> Похоже, что просто не работает...
А почему ты считаешь, что это невозможно?
Физическую память на запись открыть можно. Добавить новый селектор в GDT тоже можно.
Если пример из статьи у тебя не работает, это еще не о чем не говорит.
← →
Игорь Шевченко © (2004-02-26 13:54) [30]
> А почему ты считаешь, что это невозможно?
> Физическую память на запись открыть можно. Добавить новый
> селектор в GDT тоже можно.
Тебя, как написавшего курсовой, не затруднит написать РАБОТАЮЩИЙ пример ? Чтобы точки над i расставить окончательно.
← →
Digitman © (2004-02-26 13:56) [31]Цитирую А.В.Коберниченко "Недок.возможности Win NT" :
"..Кроме того, процесс (даже запущенный пользователем с правами администратора) не может открыть эту секцию с правом записи данных (т.е. с правом SECTION_MAP_WRITE). Все, что может процесс пользователя, это открыть секцию на чтение данных, спроецировать отдельные участки секции и попытаться определить по находящимся там данным диапазон физических адресов.."
Что, врет Коберниченко, так получается ?
← →
Kerk © (2004-02-26 14:04) [32]
> Игорь Шевченко © (26.02.04 13:54) [30]
ОК. Сегодня займусь написанием примера.
О результатах доложу.
> Digitman © (26.02.04 13:56) [31]
Ну наверно не врет. Но почему ты не допускаешь, что он может ошибаться.
Сразу открыть на SECTION_MAP_WRITE на самом деле нельзя.
Нужно сначала поменять права доступа.
GetSecurityInfo/SetEntriesInAcl/SetSecurityInfo
P.S. Вообще сразу с двумя мастерами спорить сложно - сказывается психологическое давление голубых значков. :)
← →
Polevi © (2004-02-26 14:10) [33]>Kerk © (26.02.04 13:25) [25]
парава админиские, так уж я прывык на своей машине с такитми правами работать :)
← →
Digitman © (2004-02-26 16:13) [34]
> Kerk © (26.02.04 14:04) [32]
а ты не спорь ... просто дискутируй на полном серьезе и на равных ... можно подумать - напрягает тебя кто-то ...
стартовал я этот пример у себя (W2k Pro WS SP3) - получил "blue dead screen" .. как и ожидал ... и знаю - почему)
← →
N169 (2004-02-26 21:00) [35]Игорь Шевченко © (26.02.04 11:17) [17]
http://www.telesys.ru/picprog/picpupgr.shtml
файл с дистрибутивом ppw_b6.exe
← →
Kerk © (2004-02-27 08:56) [36]Вот написал. Переходит в Ring0 и пищит спикером.
http://kerk-files.narod.ru/ring0.zip
Тестировал только в WinXPpro + SP1. Работает как часы.
Честное слово... :)))
← →
Polevi © (2004-02-27 10:09) [37]гм, пищит
← →
h0use © (2004-02-27 11:15) [38]Пищит, то оно пищит, но вот добавил я туда для теста вызов
rdmsr
и все упало синим экраном :(
← →
VMcL © (2004-02-27 11:17) [39][36]
Аналогично (WinXP Prof + SP1).
В натуре пищит :)
З.Ы. Приду, дома проверю на Win2K, Win98SE... и FreeBSD 5.1 ))
← →
Игорь Шевченко © (2004-02-27 11:35) [40]Kerk © (27.02.04 08:56)
Хорошая работа. Насчет туфты беру сови слова обратно. Правда, не пищит, но и компьютер не перезагружает, уже плюс.
Лучше бы вместо пищания сделать чтение управляющих регистров процессора. И сравнить с результатами w2k_mem Свена Шрайбера.
Страницы: 1 2 вся ветка
Форум: "Система";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.035 c