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

 WASM Phorum —› WASM.WIN32 —› Не компилируется VXD

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


Дата: Янв 27, 2004 17:17:20

Не могу скомпилировать VXD
Установил win98DDK. При компиляции вылетают ошибки
ifs.inc(271) : error A2008: syntax error : $I
ifs.inc(273) : error A2008: syntax error : uid_t
и т.д. и т.п.

Может что с филе ifs.inc?
или с кодом что. Не пойму.
Вот код драйвера:

.386p
include \masm32\vmm\vmm.inc
include \masm32\vmm\vwin32.inc
include \masm32\vmm\ifsmgr.inc
include \masm32\vmm\ifs.inc

VxDName TEXTEQU <HOOK>

DECLARE_VIRTUAL_DEVICE %VxDName, 1, 0, HOOK_Control, \
UNDEFINED_DEVICE_ID, UNDEFINED_INIT_ORDER

Begin_Control_Dispatch %VxDName
Control_Dispatch w32_DeviceIoControl OnDeviceIoControl
End_Control_Dispatch %VxDName

VXD_PAGEABLE_DATA_SEG


FileZ_Struct struc

FileAttributes dd ? ; 00 01 02 03
CreationTime dd ?,? ; 04 05 06 07 08 09 0A 0B
LastAccessTime dd ?,? ; 0C 0D 0E 0F 10 11 12 13
LastWriteTime dd ?,? ; 14 15 16 17 18 19 1A 1B
FileSizeHigh dd ? ; 1C 1D 1E 1F
FileSize dd ? ; 20 21 22 23
Reserved0 dd ? ; 24 25 26 27
Reserved1 dd ? ; 28 29 2A 2B
FileName db 260 dup(?) ; 2C
FileAlternate db 14 dup(?)

FileZ_Struct ends


hLen dd Exit - HookAPI
hHeapADDR dd ?
hHookADDR dd 00400067h
hLLL dd hADDR - HookAPI

VXD_PAGEABLE_DATA_ENDS

VXD_PAGEABLE_CODE_SEG

BeginProc OnDeviceIoControl
ASSUME esi:ptr DIOCParams
.IF [esi].dwIoControlCode == 1

Start:
push dword ptr [hLen]
VxDCall IFSMGR_GetHeap
add esp,04h
mov dword ptr [hHeapADDR],eax

push eax ; Адрес для расположения нашего FileHook-a

mov edi,eax
mov esi,OFFSET HookAPI
mov ecx,hLen
rep movsb

VxDCall IFSMGR_InstallFileSystemApiHook
add esp,04h

mov ebx,dword ptr [hHeapADDR]
add ebx,hLLL
mov dword ptr [ebx],eax

or eax,eax
jnz ClearExit

push dword ptr [hHeapADDR]
VxDCall IFSMGR_RetHeap
add esp,04h
.ENDIF

ClearExit:
xor eax,eax
ret

;=================[ HOOK ]====================;

HookAPI:
push ebp ; НАДО СОХРАНИТЬ ESI
mov ebp,esp
sub esp,20 ; Делаем для того что бы не попортить данные программы

push esi

Call DeltaX

DeltaX:
pop esi
sub esi,OFFSET DeltaX

cmp dword ptr [ebp+0Ch],IFSFN_FINDNEXT
jnz ExitHookApi

Gotcha:
mov dword ptr [esi+hSemaphore],01h

ExitHookApi:
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+08h]

mov eax,dword ptr [esi+hADDR]
call dword ptr [eax]

.IF [esi+hSemaphore] == 01h

pushad

push 0 ; Флаг НОЛЬ, который говорит что надо из Unicode в ASCII
push 255 ; MAX длина Unicode string
mov ecx,szFileLen ; Кол-во преобразованных байт
shl ecx,1
dec ecx
dec ecx
push ecx
lea edi,[edx].FileName ; Отсюда мы берем Unicode string
push edi
lea edi,[esi+szBuff] ; Сюда мы поместим преобразованную строку
push edi
VxDCall UniToBCS

push 255
push 0
push 0
lea edi,[esi+szBuff]
push edi
push edi
VxDCall BcsToBcsUpper
add esp,28h ; Востанавливаем стек, все за-push-енное

mov ecx,szFileLen
dec ecx
mov eax,esi
lea esi,[eax+szBuff]
lea edi,[eax+szFile]
repz cmpsb
mov esi,eax
jnz Quit
mov dword ptr [esi+hSemaphore],00h
popad
add esp,18h
jmp ExitHookApi

hADDR dd 0
hSemaphore dd 0
szFile db "CALC.EXE",0
szFileLen equ $ - szFile
szBuff db 256 dup(0)

Quit:
mov dword ptr [esi+hSemaphore],00h
popad
.ENDIF

pop esi
leave
ret

Exit:

EndProc OnDeviceIoControl

VXD_PAGEABLE_CODE_ENDS

End


Дата: Янв 27, 2004 22:41:59

Или ктонить киньте плиз, ifs.inc мне на мыло - nosferatu_2003@mail.ru


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