Добраться до имени файла ( виснет 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, что является неприемлемым по той причине, что код будет выполняться под непривелигированным юзером.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.