Получить хендл на файл

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by razzzar, 11 Jul 2008.

  1. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?..
    PS: Usermode
     
    #1 razzzar, 11 Jul 2008
    Last edited: 11 Jul 2008
  2. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    если не ошибаюсь при открытии файла функцией FileOpen возращается, так же как и в FileCreate.

    В WinAPI функция FindFirstFile() возращает, так же зависит от того хендл какого именно файла ты хочешь получить, если библиотеки то вот:
    Handle := GetModuleHandleA('Library.dll')

    если процесса то можно так:
    Code:
    char szEXEName[ BUFSIZ ];
    
    GetModuleFileName(
       NULL,   // для текущего модуля, подставь другой хэндл для другого
       szEXEName, // сюда будет записано имя модуля
       sizeof( szEXEName )-1
     );
     
    1 person likes this.
  3. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Про NtOpenFile и так ясно, чот можно получить.
    FindFirstFile() вообще не возвращасет никаких хедлов на файл.
    Про модули это ты вообще не по теме ;)
     
  4. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    из ниоткуда ты хэндл не получишь ,
    цитирую Рихтера:
    тоесть для создания понадобится самому вызвыать файловую функцию , или для уже открытия 'искать' процесс который уже имеет доступ к описателю...

    это что касается создания хэндлов ...
    про получение -
    Обязательно прочитай статью MS-REMа ...
    http://wasm.ru/article.php?article=lockfileswork
     
    7 people like this.
  5. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Jes, спасибо за ссылку.
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    есть возможность заюзать ядреную функцию NtVdmControl
    она множет многое, но вот что именно хз - юзается она порой при эмуляции DOS
    По крайней мере если через неё можно получить список файлов в дире, то сокрее всего и открыть как нибуть, но точно ен уверен
     
    1 person likes this.
  7. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    slesh

    Есть какая-нить инфа по этой функции? Нашел только эту статью, еще походу много инфы на азиатских сайтах, только там хер что поймешь.
     
  8. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    SlyBit
    http://www.wasm.ru/article.php?article=hidingnt

    Code:
    NTSTATUS NtVdmControl(        
                    IN ULONG ControlCode,
                    IN PVOID ControlData
            );
    
     
  9. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    0verbreaK

    Я ж про нее и говорю...
     
  10. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    SlyBit у Гари Небета в справочнике по недокументированным функциям Native API есть описание этой функции, определена как:

    Code:
    ZwVdmControl performs a control operation on a VDM.
    NTSYSAPI
    NTSTATUS
    NTAPI
    ZwVdmControl(
    IN ULONG ControlCode,
    IN PVOID ControlData
    );
    
     
  11. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    0verbreaK

    Спасибо за внимание, но интересуют именно возможные значения поля ControlCode, и по возможности описание данных ControlData.
     
    #11 SlyBit, 12 Jul 2008
    Last edited: 12 Jul 2008
  12. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Посмотри реализацию эксплоита
    http://www.milw0rm.com/exploits/2412
     
  13. SlyBit

    SlyBit Elder - Старейшина

    Joined:
    4 Jul 2008
    Messages:
    49
    Likes Received:
    8
    Reputations:
    0
    Code:
    printf("Exploitation finished.\n");
    ZwVdmControl(0, NULL);
        
    return 1;
    Если честно, не понял смысл её использования.
     
    #13 SlyBit, 13 Jul 2008
    Last edited: 13 Jul 2008
  14. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Code:
    ZwVdmControl
    ZwVdmControl performs a control operation on a VDM.
    NTSYSAPI
    NTSTATUS
    NTAPI
    ZwVdmControl(
    IN ULONG ControlCode,
    IN PVOID ControlData
    );
    Parameters
    ControlCode
    The control code for operation to be performed.
    ControlData
    Pointer to a caller-allocated buffer or variable that contains the data required to
    perform the operation.
    Return Value
    Returns STATUS_SUCCESS or an error status.
    Related Win32 Functions
    None.
    Remarks
    None.
     
    2 people like this.
  15. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    0verbreaK, ппц. Прошу, читай что постишь и что тебя просят =\
     
  16. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Все то что меня просили, я описал и вопрос почти решен! так что нет смысла дальше мусолить, не смысловыми постами тему.
     
  17. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    Code:
    HANDLE FindFirstFile(
      LPCTSTR lpFileName,               // имя файла
      LPWIN32_FIND_DATA lpFindFileData  // буфер данных
    );
    Если функция завершается успешно, возвращаемое значение -
     дескриптор поиска, используемый в последующем вызове
     функции FindNextFile или FindClose.
    источник

    насчет всего остального...сори, ступил :)
     
    #17 Exile1985, 14 Jul 2008
    Last edited: 14 Jul 2008
  18. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Exile1985,
    При чем тут хендл(дескриптор) файла?..
    А всякие источники на народ.ру - до фени. Там тупо скопировали из мсдн.

    0verbreaK,
    ты дал ссылку на одну и ту же статью, только в разных источниках и написал 3 раза прототип функции. При чем тут описание ее работы? =\ Вопрос никапельки не подвинулся к решению...
     
    #18 razzzar, 14 Jul 2008
    Last edited: 15 Jul 2008
  19. Exile1985

    Exile1985 Elder - Старейшина

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    Уважаемый, асль Вас не понимают, может стоит перефразировать свой вопрос?

    ты по человечески обьясни, или скажи для чего тебе это нужно.

    а насчет "Там тупо скопировали из мсдн.
    ", да какая разница откуда они скопировали, факт остается фактом, ты спрашивал как еще можно получить хендл(дискриптор) файла, ... на, вот так еще можно.
    "При чем тут хендл(дескриптор) файла?." - "Интересует, есть ли еще способ получить хендл для файла"
     
    #19 Exile1985, 15 Jul 2008
    Last edited: 15 Jul 2008
    1 person likes this.
  20. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Exile1985, ты не понял. FindFirstFile() НЕ возвращает хендл ни наодин файл. она возвращает хендл ПОИСКА. Внимательней читай ;)