Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› вопрос по недокументированным функциям для получения системной информации |
Посл.ответ | Сообщение |
|
Создано: 21 июля 2014 14:11 · Поправил: im_infamous · Личное сообщение · #1 Доброго времени суток. Столкнулся с проблемой в функции NtQueryObject, которая при передаче ей на вход объекта с GrantedAcess 0x0012019F зависает наглухо на named pipe. При передаче того же самого объекта с флагом 0x001A019F возвращает то, что нужно. Дилема в том, что я хочу циклом выбрать значения всех объектов с флагом 0x0012019F, чтобы ничего не подвисло. Проблема наблюдается в XP(в Vista+ все ок вроде). Объекты для передачи на вход этой функции получаю с использованием функции NtQuerySystemInformation с недокументированным классом SystemHandleInformation В общем, за любую помощь буду благодарен. UPD |
|
Создано: 21 июля 2014 14:20 · Личное сообщение · #2 |
|
Создано: 21 июля 2014 14:35 · Поправил: Rainbow · Личное сообщение · #3 |
|
Создано: 21 июля 2014 14:39 · Личное сообщение · #4 Rainbow пишет: Типичная малварная схема получения доступа к открытому другим процессом объекту. Малварная или нет зависит не от кода, а от того, для чего будет, собственно, использоваться код. Следуя вашей логике все WinAPI вполне можно назвать малварным. А задача, между тем, просто удалять файлы, которые непонятно кем открыты и уже не нужны. |
|
Создано: 21 июля 2014 14:44 · Поправил: Rainbow · Личное сообщение · #5 Малварная или нет зависит не от кода, а от того, для чего будет, собственно, использоваться код. Следуя вашей логике все WinAPI вполне можно назвать малварным. А задача, между тем, просто удалять файлы, которые непонятно кем открыты и уже не нужны. Для такой задачи есть статьи на васме - 3 способа работы с занятыми файлами, да и утилей полно. А тот пример, который в первом посте - повышение привилегий треда на основе токена. Или я не прав ? |
|
Создано: 21 июля 2014 14:59 · Личное сообщение · #6 Rainbow пишет: Для такой задачи есть статьи на васме - 3 способа работы с занятыми файлами, да и утилей полно. А тот пример, который в первом посте - повышение привилегий треда на основе токена. Или я не прав ? Он самый, а что такого? Повышает всего лишь до админских привилегий. Попробуйте без них получить хэндл для другого процесса, а я посмотрю. За наводку на статью спасибо, но все это уже заимплеменчено в приложенном коде. Интерес представляет, собственно, обход ограничения, которое указано в начальном вопросе. Тут либо вы в теме и можете что-то написать по делу, либо одно из двух. |
|
Создано: 21 июля 2014 15:36 · Личное сообщение · #7 MSDN: NTSTATUS NtQueryObject( _In_opt_ HANDLE Handle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _Out_opt_ PVOID ObjectInformation, _In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength ); Что вы ей на вход передаете какой GrantedAcess ??? Это она вам должна вернуть Granted или не Granted в ObjectInformation. |
|
Создано: 21 июля 2014 16:15 · Личное сообщение · #8 Гугли, вопрос уже поднимался неоднократно. http://forum.sysinternals.com/handle-name-help-ntqueryobject_topic14435.html Пиши свой драйвер в общем случае. Либо аккуратно проверяй и обходи их стороной в качестве костыля. | Сообщение посчитали полезным: im_infamous |
|
Создано: 21 июля 2014 16:23 · Поправил: im_infamous · Личное сообщение · #9 Rainbow пишет: Что вы ей на вход передаете какой GrantedAcess ??? Это она вам должна вернуть Granted или не Granted в ObjectInformation. Правда ваша, я допустил неточность в постановке проблемы. В NtQueryObject передается дубликат хэндла объекта, который содержится в массиве хэндлов. Массив же является одним из полей структуры, являющейся возвращаемым значением функции NtQuerySystemInformation. Т.к. в NtQueryObject передается дубликат => я имел ввиду соответствие поля ACESS_MASK структуры SYSTEM_HANDLE конкретному хэндлу(дубликату хэндла) и, как следствие, конкретному объекту, передаваемому в функцию. Надеюсь, теперь все корректно. Добавлено спустя 12 минут Archer пишет: Пиши свой драйвер в общем случае. Либо аккуратно проверяй и обходи их стороной в качестве костыля. Спасибо за линк. Кто далее будет интересоваться подобным - в качестве костыля был использован тот факт, что, по крайней мере, файлы, можно енумить по Share Flags(WinXP). В Vista+ работает(протестированы Server2k8EE и 2k8R2, полет нормальный) вплоть до 7, но NtQueryObject возвращает там как будто бы все, что нужно. Спасибо, что уделили время моей проблеме. |
eXeL@B —› Программирование —› вопрос по недокументированным функциям для получения системной информации |
Эта тема закрыта. Ответы больше не принимаются. |