Ну это я знаю. Юзал по такой схеме: NtQuerySystemInformation...04.02.05 16:31 Число просмотров: 1820 Автор: AS Статус: Незарегистрированный пользователь
Ну это я знаю. Юзал по такой схеме: NtQuerySystemInformation ... DuplicateHandle ... NtQueryObject
Но вот как путь к файлу получить? \BaseNamedObjects\*** не устраивает.
> Как получить список всех отображаемых в память файлов > процесса? Под NT можно сделать при помощи Native API. В частности ZwQuerySystemInformation() с InformationClass-ом 16 (SystemHandlesInformation)
Получить все хендлы и выбрать из них хендлы секций (Section) - winapi-шный file mapping представляется в ядре объектом-секцией
Ну это я знаю. Юзал по такой схеме: NtQuerySystemInformation...04.02.05 16:31 Автор: AS Статус: Незарегистрированный пользователь
Ну это я знаю. Юзал по такой схеме: NtQuerySystemInformation ... DuplicateHandle ... NtQueryObject
Но вот как путь к файлу получить? \BaseNamedObjects\*** не устраивает.
Все равно, спасибо
Эх. Как из нулевого кольца вытащить из секции файл я знаю04.02.05 16:59 Автор: amirul <Serge> Статус: The Elderman
> Все равно, спасибо А вот в 3-м кольце это скорее всего нереально. Если это ОЧЕНЬ необходимо, то возможно тебе придется писать сопутствующий драйвер, который будет заниматься грязной работой
Да, наверное, драйвер...04.02.05 17:11 Автор: AS Статус: Незарегистрированный пользователь Отредактировано 04.02.05 17:17 Количество правок: 1
:( ладно, шас пошарюсь в исходниках ntoskrnl, посморю формат Section, может все просто - хэндл файла
выдрать и ObQueryNameString
хотя какой в задницу хэндл... он тогда должен был быть в списке, возвращенном NtQerySystemInformation
Ну тогда все просто [upd]04.02.05 17:35 Автор: amirul <Serge> Статус: The Elderman Отредактировано 04.02.05 17:40 Количество правок: 2
> :( ладно, шас пошарюсь в исходниках ntoskrnl, посморю > формат Section, может все просто - хэндл файла > выдрать и ObQueryNameString > хотя какой в задницу хэндл... он тогда должен был быть в > списке, возвращенном NtQerySystemInformation
Пусть тебя не смущает, что в _SECTION_OBJECT-е указан тип _SEGMENT_OBJECT, а я указал _SEGMENT. Не знаю почему но там валяется именно _SEGMENT (проверено).
Как видишь разница в положении ControlArea. При этом проверено, что из _SEGMENT-а она читается правильно.
Ну а получить имя из _SECTION_OBJECT-а можно при помощи функции ObGetObjectName()
-------------------------------------
Да кстати, получить _FILE_OBJECT из HANDLE-а можно при помощи ObReferenceObjectByHandle
И еще. Все структуры даны для XP SP0. На других виндах скорее всего не поменялись - но это нуждается в проверке
thx еще раз.04.02.05 18:11 Автор: AS Статус: Незарегистрированный пользователь Отредактировано 04.02.05 18:17 Количество правок: 1
thx еще раз.
> Ну а получить имя из _SECTION_OBJECT-а можно при помощи > функции ObGetObjectName() А будет ли действительно возвращен путь к файлу для _FILE_OBJECT?
> Да кстати, получить _FILE_OBJECT из HANDLE-а можно при > помощи ObReferenceObjectByHandle Знаю, но если бы был хэндл, то и проблем бы не было :)
ЗЫ
Это LiveKd? Hи разу не юзал, но по листингу впечатляет. Лучше, чем SoftIce?
Будет. Только в виде...04.02.05 20:04 Автор: amirul <Serge> Статус: The Elderman
> thx еще раз. > > Ну а получить имя из _SECTION_OBJECT-а можно при > помощи > > функции ObGetObjectName() > А будет ли действительно возвращен путь к файлу для > _FILE_OBJECT? Будет. Только в виде \Device\HarddiskVolume0\Path\To\File.ext
> > Да кстати, получить _FILE_OBJECT из HANDLE-а можно при > > помощи ObReferenceObjectByHandle > Знаю, но если бы был хэндл, то и проблем бы не было :) Ну дык, ObOpenObjectByPointer и будет тебе хендл :-)
Только на фига
> ЗЫ > Это LiveKd? Hи разу не юзал, но по листингу впечатляет. > Лучше, чем SoftIce? Ага. Только в последних WinDbg/KD этот самый LiveKD уже не нужен - они и сами умеют коннектиться к локальной сессии (правда с кучей ограничений). А структуры - из символов винды, в софтайс их тоже можно проимпортить (SymbolRetriever-ом). И отвечая на вторую часть вопроса, да WinDbg гораздо мощнее софтайса