Просмотр полной версии : Получить хендл на файл
Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?..
PS: Usermode
Exile1985
11.07.2008, 12:21
Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?..
PS: Usermode
если не ошибаюсь при открытии файла функцией FileOpen возращается, так же как и в FileCreate.
В WinAPI функция FindFirstFile() возращает, так же зависит от того хендл какого именно файла ты хочешь получить, если библиотеки то вот:
Handle := GetModuleHandleA('Library.dll')
если процесса то можно так:
char szEXEName[ BUFSIZ ];
GetModuleFileName(
NULL, // для текущего модуля, подставь другой хэндл для другого
szEXEName, // сюда будет записано имя модуля
sizeof( szEXEName )-1
);
Про NtOpenFile и так ясно, чот можно получить.
FindFirstFile() вообще не возвращасет никаких хедлов на файл.
Про модули это ты вообще не по теме ;)
из ниоткуда ты хэндл не получишь ,
цитирую Рихтера:
Когда процесс инициализируется в первый paз, таблица описателей еще пуста. Но стоит одному из его потоков вызвать функцию, создающую объект ядра (например, CreateFtleMapping), как ядро выделяет для этого объекта блок памяти и инициализирует его, далее ядро просматривает таблицу описателей, принадлежащую данному процессу, и отыскивает свободную запись. Поскольку таблица еще пуста, ядро обнаруживает структуру с индексом 1 и инициализирует ее
тоесть для создания понадобится самому вызвыать файловую функцию , или для уже открытия 'искать' процесс который уже имеет доступ к описателю...
это что касается создания хэндлов ...
про получение -
Обязательно прочитай статью MS-REMа ...
http://wasm.ru/article.php?article=lockfileswork
есть возможность заюзать ядреную функцию NtVdmControl
она множет многое, но вот что именно хз - юзается она порой при эмуляции DOS
По крайней мере если через неё можно получить список файлов в дире, то сокрее всего и открыть как нибуть, но точно ен уверен
slesh
Есть какая-нить инфа по этой функции? Нашел только эту (http://megalib.com/books/923/22050.htm) статью, еще походу много инфы на азиатских сайтах, только там хер что поймешь.
0verbreaK
11.07.2008, 23:44
SlyBit
http://www.wasm.ru/article.php?article=hidingnt
NTSTATUS NtVdmControl(
IN ULONG ControlCode,
IN PVOID ControlData
);
0verbreaK
Я ж про нее и говорю...
0verbreaK
12.07.2008, 14:39
SlyBit у Гари Небета в справочнике по недокументированным функциям Native API есть описание этой функции, определена как:
ZwVdmControl performs a control operation on a VDM.
NTSYSAPI
NTSTATUS
NTAPI
ZwVdmControl(
IN ULONG ControlCode,
IN PVOID ControlData
);
0verbreaK
Спасибо за внимание, но интересуют именно возможные значения поля ControlCode, и по возможности описание данных ControlData.
0verbreaK
13.07.2008, 15:46
Посмотри реализацию эксплоита
http://www.milw0rm.com/exploits/2412
printf("Exploitation finished.\n");
ZwVdmControl(0, NULL);
return 1;
Если честно, не понял смысл её использования.
0verbreaK
13.07.2008, 17:23
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.
0verbreaK, ппц. Прошу, читай что постишь и что тебя просят =\
0verbreaK
13.07.2008, 20:01
0verbreaK, ппц. Прошу, читай что постишь и что тебя просят =\
Все то что меня просили, я описал и вопрос почти решен! так что нет смысла дальше мусолить, не смысловыми постами тему.
Exile1985
14.07.2008, 16:19
FindFirstFile() вообще не возвращасет никаких хедлов на файл.
HANDLE FindFirstFile(
LPCTSTR lpFileName, // имя файла
LPWIN32_FIND_DATA lpFindFileData // буфер данных
);
Если функция завершается успешно, возвращаемое значение -
дескриптор поиска, используемый в последующем вызове
функции FindNextFile или FindClose.
источник (http://vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_findfirstfile.htm)
Про модули это ты вообще не по теме ;)
насчет всего остального...сори, ступил :)
Exile1985,
Если функция завершается успешно, возвращаемое значение -
дескриптор поиска.
При чем тут хендл(дескриптор) файла?..
А всякие источники на народ.ру - до фени. Там тупо скопировали из мсдн.
0verbreaK,
ты дал ссылку на одну и ту же статью, только в разных источниках и написал 3 раза прототип функции. При чем тут описание ее работы? =\ Вопрос никапельки не подвинулся к решению...
Exile1985
15.07.2008, 17:45
Exile1985,
При чем тут хендл(дескриптор) файла?..
А всякие источники на народ.ру - до фени. Там тупо скопировали из мсдн.
0verbreaK,
ты дал ссылку на одну и ту же статью, только в разных источниках и написал 3 раза прототип функции. При чем тут описание ее работы? =\ Вопрос никапельки не подвинулся к решению...
Уважаемый, асль Вас не понимают, может стоит перефразировать свой вопрос?
ты по человечески обьясни, или скажи для чего тебе это нужно.
а насчет "Там тупо скопировали из мсдн.
", да какая разница откуда они скопировали, факт остается фактом, ты спрашивал как еще можно получить хендл(дискриптор) файла, ... на, вот так еще можно.
"При чем тут хендл(дескриптор) файла?." - "Интересует, есть ли еще способ получить хендл для файла"
Exile1985, ты не понял. FindFirstFile() НЕ возвращает хендл ни наодин файл. она возвращает хендл ПОИСКА. Внимательней читай ;)
0verbreaK
15.07.2008, 20:32
первый и второй прототипы отличаются. ControlCode описан во втором, да и к тому же дал ссылку, на реализацию функции, где и используется ControlCode.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot