Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.033 c
9-1070047167
Sergeef
2003-11-28 22:19
2004.05.02
C++


7-1078560595
DuhcmanSoft
2004-03-06 11:09
2004.05.02
Системный трей


3-1081168666
AOH
2004-04-05 16:37
2004.05.02
проверка isNull в кобмбобоксе ACCESS


3-1080982304
sssss
2004-04-03 12:51
2004.05.02
Create Table


7-1079378000
Konstantin5
2004-03-15 22:13
2004.05.02
LPT порт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский