Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Пардон:: сразу не ответил. 02.03.02 05:55 Число просмотров: 1119
Автор: Chingachguk <Chingachguk> Статус: Member
|
> Очень нужны (просто необходимы такие мысли) > Плиз,подскажи,а то своим умишком долго еще доходить буду
Тут вот какое дело. Я тут делал чтение своп-файла из вин32.(По этому поводу я долго пытал z0 в нитке ниже). И наткнулся
(далее речь идет о вин98)
на вот какой фикус-прикус:
зовем, к примеру (из win32-кода) CreateFile. Вызов проходит через kernel32. Но, как бы это сказать - транзитом: реально вызывается одна из VxD-шек, причем вызов ее до боли напоминает вот это:
Это пошел мой код, который сквозняком вызывает РЕАЛЬНЫЙ сервис из VxD:
Вызов того самого ORD_0001(процедура кернела):
.data
ORD_0001 dd 0BFF713D4h
TestName db "test.dat",0
SwpName db "C:\WINDOWS\win386.swp",0
;...
;; mov esi,offset SwpName ; В этом случае нам вернется 5 в EAX
mov esi,offset TestName ; А в этом - нормальное число (дескриптор на файл ?)
push ecx
mov eax,716Ch
push eax ; ?
push 0002a0010h ; 2a - VWIN32.VXD, 10 - ???
call dword ptr ORD_0001 ; VxDCall
; Если в ESI имя swap-а, то вернется в EAX 5(Доступ запрещен ?)
; Если в ESI имя нормального файла, то все OK - например, EAX=2e9h
А вот чтаа такое этот вызов на самом деле:
Функция LFN 6Ch: Создать или открыть файл с длинным именем(DOS !)
Ввод: AX=716Ch
BX=режим доступа Windows95
Биты 0-2:доступ
000-только для чтения
001-только для записи
; и т.д.
По моему мнению, этот сервис* можно тем более звать из других VxD через стандартный int 20h.
А к тому ж я вроде бы как видал, что вызовы ring0(VxD) - > ring3(kernel32) возможны, но тут лучше спецов спроси - я дилетант, вообще-то ж)
* Видимо, VWIN32.VXD - сборник, но реально - VMM32 ?
|
- VxD - New 28.02.02 07:23 [783]
|
|
|