Чтение файла из ядра

Тема в разделе "WASM.BEGINNERS", создана пользователем JCronuz, 30 июл 2010.

  1. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Есть код Four-F'а,
    Код (Text):
    1. ReadFile proc
    2.  
    3. local oa:OBJECT_ATTRIBUTES
    4. local iosb:IO_STATUS_BLOCK
    5. local hFile:HANDLE
    6. local p:PVOID
    7. local cb:DWORD
    8. local fsi:FILE_STANDARD_INFORMATION
    9.  
    10.     invoke DbgPrint, $CTA0("\nFileWorks: Opening file for reading\n")
    11.  
    12.     InitializeObjectAttributes addr oa, addr g_usFileName, \
    13.                         OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL
    14.     invoke ZwOpenFile, addr hFile, FILE_READ_DATA + SYNCHRONIZE, addr oa, addr iosb, \
    15.                 FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT
    16.     .if eax == STATUS_SUCCESS
    17.  
    18.         invoke DbgPrint, $CTA0("FileWorks: File openeded\n")
    19.  
    20.         invoke ZwQueryInformationFile, hFile, addr iosb, addr fsi, sizeof fsi, FileStandardInformation
    21.         .if eax == STATUS_SUCCESS
    22.  
    23.             mov eax, fsi.EndOfFile.LowPart
    24.             inc eax                             ; one byte more for terminating zero
    25.             mov cb, eax
    26.  
    27.             invoke ExAllocatePool, PagedPool, cb
    28.             .if eax != NULL
    29.                 mov p, eax
    30.  
    31.                 invoke RtlZeroMemory, p, cb
    32.  
    33.                 invoke ZwReadFile, hFile, 0, NULL, NULL, addr iosb, p, cb, 0, NULL
    34.                 .if eax == STATUS_SUCCESS
    35.                     invoke DbgPrint, $CTA0("FileWorks: File content: \=%s\=\n"), p
    36.                 .else
    37.                     invoke DbgPrint, $CTA0("FileWorks: Can't read from the file. Status: %08X\n"), eax
    38.                 .endif
    39.  
    40.                 invoke ExFreePool, p
    41.  
    42.             .else
    43.                 invoke DbgPrint, $CTA0("FileWorks: Can't allocate memory. Status: %08X\n"), eax
    44.             .endif
    45.         .else
    46.             invoke DbgPrint, $CTA0("FileWorks: Can't query file size. Status: %08X\n"), eax
    47.         .endif
    48.  
    49.         invoke ZwClose, hFile
    50.  
    51.     .else
    52.         invoke DbgPrint, $CTA0("FileWorks: Can't open file. Status: %08X\n"), eax
    53.     .endif
    54.  
    55.     ret
    56.  
    57. ReadFile endp
    Как перевести на Си следующую строку

    Код (Text):
    1. invoke DbgPrint, $CTA0("FileWorks: File content: \=%s\=\n"), p
    Туплю, выдает левый результат.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Блин, стоит запостить как сразу прозрел, сила васма :)
    Забыл узнать длину файла
    не выполнял

    Код (Text):
    1. invoke ZwQueryInformationFile, hFile, addr iosb, addr fsi, sizeof fsi, FileStandardInformation