Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Получить хендл на файл (https://forum.antichat.xyz/showthread.php?t=76759)

razzzar 11.07.2008 00:04

Получить хендл на файл
 
Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?..
PS: Usermode

Exile1985 11.07.2008 12:21

Цитата:

Сообщение от razzzar
Интересует, есть ли еще способ получить хендл для файла, кроме как вызова NtCreateFile() ?..
PS: Usermode

если не ошибаюсь при открытии файла функцией FileOpen возращается, так же как и в FileCreate.

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

если процесса то можно так:
Код:

char szEXEName[ BUFSIZ ];

GetModuleFileName(
  NULL,  // для текущего модуля, подставь другой хэндл для другого
  szEXEName, // сюда будет записано имя модуля
  sizeof( szEXEName )-1
 );


razzzar 11.07.2008 13:37

Про NtOpenFile и так ясно, чот можно получить.
FindFirstFile() вообще не возвращасет никаких хедлов на файл.
Про модули это ты вообще не по теме ;)

Jes 11.07.2008 13:49

из ниоткуда ты хэндл не получишь ,
цитирую Рихтера:
Цитата:

Когда процесс инициализируется в первый paз, таблица описателей еще пуста. Но стоит одному из его потоков вызвать функцию, создающую объект ядра (например, CreateFtleMapping), как ядро выделяет для этого объекта блок памяти и инициализирует его, далее ядро просматривает таблицу описателей, принадлежащую данному процессу, и отыскивает свободную запись. Поскольку таблица еще пуста, ядро обнаруживает структуру с индексом 1 и инициализирует ее
тоесть для создания понадобится самому вызвыать файловую функцию , или для уже открытия 'искать' процесс который уже имеет доступ к описателю...

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

razzzar 11.07.2008 15:59

Jes, спасибо за ссылку.

slesh 11.07.2008 16:49

есть возможность заюзать ядреную функцию NtVdmControl
она множет многое, но вот что именно хз - юзается она порой при эмуляции DOS
По крайней мере если через неё можно получить список файлов в дире, то сокрее всего и открыть как нибуть, но точно ен уверен

SlyBit 11.07.2008 19:27

slesh

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

0verbreaK 11.07.2008 23:44

SlyBit
http://www.wasm.ru/article.php?article=hidingnt

Код:

NTSTATUS NtVdmControl(       
                IN ULONG ControlCode,
                IN PVOID ControlData
        );


SlyBit 12.07.2008 01:13

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
);



Время: 02:19