уважаемые воины! поделитесь, пожалуйста, рабочим кодом, который получает путь к .ехе текущего процесса из драйвера с использованием EPROCESS? способ сделать это через PEB работает, но хотелось бы сделать это через поля EPROCESS, ибо в PEB процесс может записать сам все что угодно. а с EPROCESS я уже два дня не могу собрать по всему интернету корректные хедеры
romano посмотри статьи "бога нулевого кольца", http://www.wasm.ru/article.php?article=drvw2k14 там есть всё, а чего нет, спроси у Него, может Он и ответит.
посмотрел, скомпилировал, все работает, большое спасибо осталась одна загвоздка, я получаю правильную структуру типа FILE_OBJECT, и мне нужно получить из нее полное имя файла с путем в НТ-виде (\Device\HarddiskVolume1\...). у Four-F в примере FILE_OBJECT.DeviceObject скармливается функции RtlVolumeDeviceToDosName, а мне ДОС-путь не нужен. какой функции скормить FILE_OBJECT.DeviceObject, чтобы получить путь к девайсу в НТ виде? может быть ObQueryNameString?
<font color="gray][ romano</font><!--color--><font color="gray]: мне нужно получить из нее полное имя файла с путем в НТ-виде (\Device\HarddiskVolume1\...) ]</font><!--color--> Цитата из статьи: Поле DeviceObject структуры FILE_OBJECT хранит указатель на объект "устройство", которому принадлежит файл. Из объекта "устройство" можно извлечь его имя. Но тогда мы получим путь к файлу относительно объекта "устройство". Например, "\Device\HarddiskVolume1\WINNT\system32\notepad.exe". С помощью функции RtlVolumeDeviceToDosName преобразуем его в более привычный "C:\ WINNT\system32\notepad.exe". <font color="gray][ romano</font><!--color--><font color="gray]: может быть ObQueryNameString? ]</font><!--color--> Да. По отношению к FILE_OBJECT.DeviceObject и проаппендить имя файла. Имя файла тоже можно через ObQueryNameString или напрямую из FILE_OBJECT.FileName.
Four-F спасибо за универсальный код с добыванием EPROCESS.SEGMENT! работает на 2к-хр-2к3. всех сервиспаков у меня нет, но все равно громадный респект! и вопрос: были ли случаи, чтобы когда-нибудь этот код обламывался?
Статья уже больше года на сайте висит. За это время никто не жаловался. Если судить по этому, то, наверное, случаев облома не было
к сожалению, он уникален для момента создания процесса, т.к. опирается и на количество референсов и количество описателей. Было бы очень здорово доработать его для любого случая, этакий GetSectionByProcessPid в любой момент времени.
<font color="gray][ Flasher</font><!--color--><font color="gray]: на XP sp1 eng не работает Process Monior ]</font><!--color--> Подробнее можно? <font color="gray][ sherion</font><!--color--><font color="gray]: Было бы очень здорово доработать его для любого случая, этакий GetSectionByProcessPid в любой момент времени. ]</font><!--color--> Process Monior - это учебный пример, добавлять туда функционал или каким другим способом его эдвансить я не буду.
Four-F, сорри, глупость ляпнул, я думал там типа tasklist'a будет показывать все процессы на данный момент