Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?.. PS: Usermode
если не ошибаюсь при открытии файла функцией FileOpen возращается, так же как и в FileCreate. В WinAPI функция FindFirstFile() возращает, так же зависит от того хендл какого именно файла ты хочешь получить, если библиотеки то вот: Handle := GetModuleHandleA('Library.dll') если процесса то можно так: Code: char szEXEName[ BUFSIZ ]; GetModuleFileName( NULL, // для текущего модуля, подставь другой хэндл для другого szEXEName, // сюда будет записано имя модуля sizeof( szEXEName )-1 );
Про NtOpenFile и так ясно, чот можно получить. FindFirstFile() вообще не возвращасет никаких хедлов на файл. Про модули это ты вообще не по теме
из ниоткуда ты хэндл не получишь , цитирую Рихтера: тоесть для создания понадобится самому вызвыать файловую функцию , или для уже открытия 'искать' процесс который уже имеет доступ к описателю... это что касается создания хэндлов ... про получение - Обязательно прочитай статью MS-REMа ... http://wasm.ru/article.php?article=lockfileswork
есть возможность заюзать ядреную функцию NtVdmControl она множет многое, но вот что именно хз - юзается она порой при эмуляции DOS По крайней мере если через неё можно получить список файлов в дире, то сокрее всего и открыть как нибуть, но точно ен уверен
slesh Есть какая-нить инфа по этой функции? Нашел только эту статью, еще походу много инфы на азиатских сайтах, только там хер что поймешь.
SlyBit http://www.wasm.ru/article.php?article=hidingnt Code: NTSTATUS NtVdmControl( IN ULONG ControlCode, IN PVOID ControlData );
SlyBit у Гари Небета в справочнике по недокументированным функциям Native API есть описание этой функции, определена как: Code: ZwVdmControl performs a control operation on a VDM. NTSYSAPI NTSTATUS NTAPI ZwVdmControl( IN ULONG ControlCode, IN PVOID ControlData );
0verbreaK Спасибо за внимание, но интересуют именно возможные значения поля ControlCode, и по возможности описание данных ControlData.
Code: printf("Exploitation finished.\n"); ZwVdmControl(0, NULL); return 1; Если честно, не понял смысл её использования.
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.
Все то что меня просили, я описал и вопрос почти решен! так что нет смысла дальше мусолить, не смысловыми постами тему.
Code: HANDLE FindFirstFile( LPCTSTR lpFileName, // имя файла LPWIN32_FIND_DATA lpFindFileData // буфер данных ); Если функция завершается успешно, возвращаемое значение - дескриптор поиска, используемый в последующем вызове функции FindNextFile или FindClose. источник насчет всего остального...сори, ступил
Exile1985, При чем тут хендл(дескриптор) файла?.. А всякие источники на народ.ру - до фени. Там тупо скопировали из мсдн. 0verbreaK, ты дал ссылку на одну и ту же статью, только в разных источниках и написал 3 раза прототип функции. При чем тут описание ее работы? =\ Вопрос никапельки не подвинулся к решению...
Уважаемый, асль Вас не понимают, может стоит перефразировать свой вопрос? ты по человечески обьясни, или скажи для чего тебе это нужно. а насчет "Там тупо скопировали из мсдн. ", да какая разница откуда они скопировали, факт остается фактом, ты спрашивал как еще можно получить хендл(дискриптор) файла, ... на, вот так еще можно. "При чем тут хендл(дескриптор) файла?." - "Интересует, есть ли еще способ получить хендл для файла"
Exile1985, ты не понял. FindFirstFile() НЕ возвращает хендл ни наодин файл. она возвращает хендл ПОИСКА. Внимательней читай