Хук вырубает звук

Тема в разделе "WASM.NT.KERNEL", создана пользователем Hippey, 16 фев 2012.

  1. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Какой-то дикий трэшъ и угаръ в этой теме происходит...
    А какого хрена вы пытаетесь использовать класс ProcessImageFileName?
    Он возвращает имя файла в Native-формате, а не в классическом DOS-виде.
     
  2. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    x64 прав, нужно будет конвертировать в нормальный формат(не \Device\Floppy0\ или \Device\HarddiskVolume1), если необходимо конвертить в дос имя. У меня есть некий древний код:
    Код (Text):
    1. ConvertVolumeNameToDosName proc uses ebx VolumeName:PUNICODE_STRING, ResultDosName:PULONG
    2. Local SymbolicLinkHandle:HANDLE
    3. Local DeviceMap:PROCESS_DEVICEMAP_INFORMATION
    4. Local ObjAttr:OBJECT_ATTRIBUTES
    5. Local DosName:UNICODE_STRING
    6. Local DosNameBuffer[4]:BYTE
    7. Local LinkName:UNICODE_STRING
    8. Local LinkNameBuffer[MAX_PATH]:BYTE
    9.     invoke ZwQueryInformationProcess, NtCurrentProcess, ProcessDeviceMap, addr DeviceMap, SizeOf PROCESS_DEVICEMAP_INFORMATION, NULL
    10.     test eax,eax
    11.     jnz exit_
    12.     mov ObjAttr.uLength,SizeOf OBJECT_ATTRIBUTES   
    13.     mov ObjAttr.hRootDirectory,eax 
    14.     mov ObjAttr.pSecurityDescriptor,eax
    15.     mov ObjAttr.pSecurityQualityOfService,eax
    16.     mov ObjAttr.pObjectName,OffSet DirectoryName
    17.     mov ObjAttr.uAttributes,eax
    18.     invoke ZwOpenDirectoryObject, addr ObjAttr.hRootDirectory, DIRECTORY_QUERY, addr ObjAttr
    19.     test eax,eax
    20.     jnz exit_
    21.     lea ecx,DosName
    22.     mov ObjAttr.pObjectName,ecx
    23.     lea edx,DosNameBuffer
    24.     mov DosName.Buffer,edx
    25.     lea eax,LinkNameBuffer
    26.     mov LinkName.Buffer,eax
    27.     mov dword ptr DosName,65536*4 or 4
    28.     mov LinkName.MaximumLength,MAX_PATH
    29.     xor ebx,ebx
    30. loop_:
    31.     bt DeviceMap.DriveMap,ebx
    32.     jnc next_volume_       
    33.     lea eax,[ebx+'A'+':'*65536]
    34.     mov dword ptr DosNameBuffer,eax
    35.     invoke ZwOpenSymbolicLinkObject, addr SymbolicLinkHandle, SYMBOLIC_LINK_QUERY, addr ObjAttr
    36.     test eax,eax
    37.     jnz err_open_  
    38.     invoke ZwQuerySymbolicLinkObject, SymbolicLinkHandle, addr LinkName, NULL
    39.     push eax
    40.     invoke ZwClose, SymbolicLinkHandle
    41.     pop eax
    42.     test eax,eax
    43.     jnz next_volume_
    44.     invoke RtlCompareUnicodeString, VolumeName, addr LinkName, TRUE
    45.     test eax,eax
    46.     jz err_open_
    47. next_volume_:
    48.     inc ebx
    49.     cmp ebx,32
    50.     jc loop_
    51.     mov eax,STATUS_OBJECT_NAME_NOT_FOUND
    52. err_open_:
    53.     push eax
    54.     invoke ZwClose, ObjAttr.hRootDirectory
    55.     pop eax
    56.     .if !Eax   
    57.     mov edx,ResultDosName
    58.     mov dword ptr [edx],ebx
    59.     .endif
    60. exit_:
    61.     ret
    62. align 16
    63. DirectoryNameWide   WCHAR "\","?","?"
    64. DirectoryName       UNICODE_STRING <SizeOf DirectoryNameWide, SizeOf DirectoryNameWide, OffSet DirectoryNameWide>
    65. ConvertVolumeNameToDosName endp
    66.  
    67. ConvertVolumeToDosFileName proc uses ebx esi edi VolumeFileName:PUNICODE_STRING, DosFileName:PUNICODE_STRING
    68. Local LocalVolumeName:UNICODE_STRING
    69. Local DosName:ULONG
    70.     mov edi,VolumeFileName
    71.     mov ax,'\'
    72.     mov edi,UNICODE_STRING.Buffer[edi]
    73.     cld
    74.     mov LocalVolumeName.Buffer,edi
    75.     mov ecx,MAX_PATH*2
    76.     lea edi,[edi + 8*2]     ;\Device\*
    77.     mov edx,edi
    78.     repne scasw ;\Device\Floppy0\*
    79.     mov ecx,edi
    80.     sub ecx,edx ;Length
    81.     add ecx,8*2 - 2
    82.     mov esi,edi
    83.     mov LocalVolumeName._Length,cx
    84.     mov LocalVolumeName.MaximumLength,cx
    85.     invoke ConvertVolumeNameToDosName, addr LocalVolumeName, addr DosName
    86.     test eax,eax
    87.     cld
    88.     jnz exit_
    89.     xor eax,eax
    90.     mov ecx,MAX_PATH
    91.     repne scasw
    92.     mov eax,STATUS_INVALID_PARAMETER
    93.     jne exit_
    94.     mov eax,MAX_PATH
    95.     mov edx,DosFileName
    96.     assume edx:PUNICODE_STRING
    97.     sub eax,ecx
    98.     dec eax
    99.     mov ebx,eax
    100.     lea ecx,[eax*2 + 2*3 + 2]
    101.     cmp UNICODE_STRING.MaximumLength[edx],cx
    102.     mov eax,STATUS_BUFFER_TOO_SMALL
    103.     jc exit_
    104.     sub ecx,2
    105.     mov edi,[edx].Buffer
    106.     mov eax,DosName
    107.     mov [edx]._Length,cx
    108.     add eax,'A'
    109.     mov word ptr [edi+4],'\'
    110.     or eax,':'*65536
    111.     mov ecx,ebx
    112.     mov dword ptr [edi],eax
    113.     lea edi,[edi+6]
    114.     rep movsw
    115.     mov word ptr [edi],cx
    116.     xor eax,eax
    117. exit_:
    118.     ret
    119. ConvertVolumeToDosFileName endp
    120.  
    121. QueryProcessImageFileName proc ProcessHandle:HANDLE, FileName:PUNICODE_STRING
    122. Local Buffer[MAX_PATH]:WCHAR
    123.     invoke ZwQueryInformationProcess, ProcessHandle, ProcessImageFileName, addr Buffer, MAX_PATH*2, NULL
    124.     .if !Zero?
    125.     invoke ConvertVolumeToDosFileName, addr Buffer, FileName
    126.     .endif 
    127.     ret
    128. QueryProcessImageFileName endp
     
  3. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    x64
    Malfoy
    Я же ему как бы намекаю, надо добавить логи ... Блин он ведь так не че делать не будет((
     
  4. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    shchetinin
    Ваши наркоманские намёки не катят. Что значит:
    Даже мне не понятно. Какие есчо логи ?? О чём вы говорите!?
     
  5. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    Блин нельзя возврощать указатель на память размещенную на стеки что опять не понятно? что за припораты вы принимаете ?

    наверное Debug логи ...

    Блин сильное вы что то принимаете ...