|
|
| Посл.отвђт | Сообщен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 |