Добраться до имени файла ( виснет ZwQueryObjecе)
От: rst0x0d  
Дата: 20.08.03 12:38
Оценка:
Есть следующая задача, АКА проблема:
Есть процесс. Нужно получить из него хэндл открытого в нем файла, и потом вызвать DuplicateHandle (CloseSourceHandle)
Хэндлы получаются просто — ZwQuerySystemInformation. и мы получаем список хэндлов всех процессов.
Дальше казалось бы тоже все просто — бежим по хэндлам, делаем DuplicateHandle а потом ZwQueryObject (ObjectNameInformation). Но не тут-то было. Когда мы спрашиваем имя объекта у Named-Pipe , либо у файла в который сейчас происходит запись ( Pending read\write operation ) то ZwQueryObject подвисает в дебрях ядра (после вызова sysenter. Вопрос такой: как можно определить является объект Named-Pipe к примеру, если есть его Handle , открытый у себя в процессе, и соотвественно обойти этот объект — не спрашивать его имя. Либо если есть другой вариант запросить имя объекта тоже хотелось бы знать о нем.
Примечание — есть вариант получения хэндлов, читая из памяти ядра. Но это требует установки NtGlobalFlag, что является неприемлемым по той причине, что код будет выполняться под непривелигированным юзером.
Re: Добраться до имени файла ( виснет ZwQueryObjecе)
От: .h  
Дата: 21.08.03 06:58
Оценка:
Еще один вариант — ObQueryNameString из драйвера
Re[2]: Добраться до имени файла ( виснет ZwQueryObjecе)
От: rst0x0d  
Дата: 21.08.03 08:37
Оценка:
Здравствуйте, .h, Вы писали:

.h>Еще один вариант — ObQueryNameString из драйвера

К сожалению — а) нужен usermode, b) только юзерские привелегии
Re: Добраться до имени файла ( виснет ZwQueryObjecе)
От: vasketsov Россия http://ntprog.by.ru
Дата: 21.08.03 20:52
Оценка:
Здравствуйте, rst0x0d, Вы писали:

http://ntprog.by.ru
Васкецов Сергей
http://registry.km.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.