Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
[Win32] Совет дилетанта. 29.11.01 11:00 Число просмотров: 915
Автор: Chingachguk <Chingachguk> Статус: Member
|
> Стоит задача написать прогу, либо сервис под W2K сидящюю на > всех портах и выдающюю предупреждение, когда кто либо из > вне по ним лезет.
Сразу скажу, что это общий треп, ибо под виндой c vxd
и битовой картой портов я ниче не делал - тока в
в своем супервизоре. ;(
Наскока я знаю, стандартно задача грузиться виндой с определенной
картой портов(битовая массива длиной до 64 килобит). Некотрые
порта там стоят в состоянии "Запрещено", те при обращении
к ним возникает исключение, если текущий уровень задачи меньше
IOPL. Вроде как запрещенными являются порты винта и др.
Если задача хочет все же работать с портами, то ей нужна ф-ция
какой-либо vxd, которая регистрится и имеет права на эти порты.
Пусть у нас нет прав на какой-либо порт. Мы ломимся за ним в эту
vxd - а в vxd явно имеет права на редактирование tss задачи этой,
ибо правей у нее больше, может, даже у нее IOPL = 0.
Узнать tss задачи vxd может через стек. Вроде в ней же валяется эта
битовая карта этой задачи, или где-то рядом.
Затем в те порта (биты в портовой карте) можно прописать, к примеру,
что порт такой-то у этой задачи НЕ ИМЕЕТ ПРАВА обращения - и все,
задача будет давать exception при обращении к этому порту.
Ну и так далее...
|
<programming>
|
[Win32] Подскажите как сесть на порты (обновление 2) 29.11.01 09:59
Автор: PS <PS> Статус: Elderman Отредактировано 29.11.01 11:59 Количество правок: 2
|
Стоит задача написать прогу, либо сервис под W2K сидящюю на всех портах и выдающюю предупреждение, когда кто либо из вне по ним лезет. После пользователь решает дать запросу идти в сервис или нет.
Вопрос как это сделать ? Принцип нужон.
Айай ! Подумал и решил, что совсем не корректно вопрос поставил.
Мне нужны не системные порты, а сокетные (богатый английский язык).
Вообщем куда копать, что бы все пакеты из сетевухи попадали сначала ко мне, а потом уже шли (или не шли) куда положенно.
И вообще у меня возник такой вопрос: а что реально происходит когда я открываю сокет ?
Моя мысль такая (имхо): существует извесный системе сервис (типа TCP/IP service), которому идет запрос на заведение сокета. Туда же должно передаватся некая точка входа в моей проге.
Теперь пришел TCP/IP пакет, который попал в сервис. Тот смотрит, ага порт такой-то, посмотрим в своих списках, кто у нас открыл этот порт. Ага, есть такая прога, вот ее точка входа. Вызывает какую-то ф-ю (мною не реализованая, но как то связаная с select) и передает ей пакет (или его часть)...
Я прав или нет ? Кто может реально описать что происходит в системе ? В MSDN ничего нет, там только как пользовать, а это я и так знаю.
|
|
[Win32] Совет дилетанта. 29.11.01 11:00
Автор: Chingachguk <Chingachguk> Статус: Member
|
> Стоит задача написать прогу, либо сервис под W2K сидящюю на > всех портах и выдающюю предупреждение, когда кто либо из > вне по ним лезет.
Сразу скажу, что это общий треп, ибо под виндой c vxd
и битовой картой портов я ниче не делал - тока в
в своем супервизоре. ;(
Наскока я знаю, стандартно задача грузиться виндой с определенной
картой портов(битовая массива длиной до 64 килобит). Некотрые
порта там стоят в состоянии "Запрещено", те при обращении
к ним возникает исключение, если текущий уровень задачи меньше
IOPL. Вроде как запрещенными являются порты винта и др.
Если задача хочет все же работать с портами, то ей нужна ф-ция
какой-либо vxd, которая регистрится и имеет права на эти порты.
Пусть у нас нет прав на какой-либо порт. Мы ломимся за ним в эту
vxd - а в vxd явно имеет права на редактирование tss задачи этой,
ибо правей у нее больше, может, даже у нее IOPL = 0.
Узнать tss задачи vxd может через стек. Вроде в ней же валяется эта
битовая карта этой задачи, или где-то рядом.
Затем в те порта (биты в портовой карте) можно прописать, к примеру,
что порт такой-то у этой задачи НЕ ИМЕЕТ ПРАВА обращения - и все,
задача будет давать exception при обращении к этому порту.
Ну и так далее...
|
|
|