Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2011, 13:14   #1
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию Список пользователей

Здраствуйте. Суть проблемы заключается в том, что я никак не могу найти, каким образом диспетчер задач получает список активных сеансов на компьютере. Скорей всего тоже через функцию NtQuerySystemInformation. Только вот как именно? Уже почти неделю гугл мучаю
hiho вне форума Ответить с цитированием
Старый 23.08.2011, 14:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
и далее по МСДН
p51x вне форума Ответить с цитированием
Старый 23.08.2011, 14:54   #3
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

странно, я почему-то думал, что эта функция используется для получения списка процессов. И что навряд ли диспетчер будет получать список активных сессий через нее. Скорее уж через WTSQuerySessionInformation. Хотя ее вызов я отловить не смог.
hiho вне форума Ответить с цитированием
Старый 23.08.2011, 16:16   #4
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

NetUserEnum
NetQueryDisplayInformation
SnX вне форума Ответить с цитированием
Старый 24.08.2011, 03:28   #5
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

аналогично, не смог отловить момент вызова этой функции в диспетчере. Да и в списке импорта ее нет.
hiho вне форума Ответить с цитированием
Старый 24.08.2011, 10:24   #6
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Цитата:
аналогично, не смог отловить момент вызова этой функции в диспетчере. Да и в списке импорта ее нет.
и что?
Тебе нужно знать как именно это делает диспетчер задач?

UPD:
Диспетчер использует WTSEnumerateSessionsW, WTSQuerySessionInformationW

Последний раз редактировалось SnX; 24.08.2011 в 11:18.
SnX вне форума Ответить с цитированием
Старый 24.08.2011, 13:57   #7
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

Да, нужны именно те функции, которые использует диспетчер.

PS: WTSEnumerateSessionsW и WTSQuerySessionInformationW находятся в DLL "wtsapi32.dll", но вызов GetModuleHandle("wtsapi32.dll") возвращает NULL, а значит эта DLL не отображена в адресном пространстве процесса. Да и не видно, чтоб диспетчер эти функции импортировал.
Список импорта можно глянуть тут
hiho вне форума Ответить с цитированием
Старый 24.08.2011, 18:57   #8
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

На win7 диспетчер юзает именно WTS*.
Цитата:
но вызов GetModuleHandle("wtsapi32.dll")
Вызов где?

Залей лучше куда-нибудь свой диспетчер.
SnX вне форума Ответить с цитированием
Старый 24.08.2011, 19:43   #9
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

Цитата:
Сообщение от SnX Посмотреть сообщение
На win7 диспетчер юзает именно WTS*.
А остальные?

Цитата:
Сообщение от SnX Посмотреть сообщение
Вызов где?
Вызываю из DLL, которая инжектирована в процесс "taskmgr.exe" методом удаленных потоков.
Этим способом нормально перехватываю NtQuerySystemInformation. Так что в реализации ошибок вроде быть не должно =)

Может используются какие-то оболочки для этих функций? Просто я никогда не занимался дизассемблированием и не могу посмотреть сам.
Вложения
Тип файла: rar taskmgr.rar (102.3 Кб, 22 просмотров)

Последний раз редактировалось hiho; 24.08.2011 в 19:50.
hiho вне форума Ответить с цитированием
Старый 25.08.2011, 10:30   #10
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

это диспетчер задач из версий вёнд начиная с висты, вызов из модуля менеджера находится тут
imagbasebase+1C1D call _WTSEnumerateSessionsW@20 ; WTSEnumerateSessionsW(x,x,x,x,x)
к слову сказать, функция юзает сепшоны и при выборе вкладки "пользователи" вкладка постоянно обновляется и отладчик впадает в ступор
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\

маленькое объяснение если кому то это нужно:
007C1C1D . E8 47FBFFFF CALL taskmgr.007C1769 ; JMP to WTSAPI32.WTSEnumerateSessionsW <-
вызывает, кстати в последствии эту функу
75071CD1 E8 2D010000 CALL 75071E03 ; JMP to WINSTA.WinStationEnumerateW <-(winsta.dll должна быть уже после загрузки тк есть в импортах нет её в импортах!1)
то есть можете перехватить ее, вызвать в перехватчике и считать ответ, только уж параметры сами поищите, я мельком глянул, сразу не нашел
WTSAPI32.dll загружается при первом же вызове вкладки "пользователи"
сперва вызывается
imbase+1C1D CALL imbase+1769
imbase+1769 это стаб который выглядит след образом
imbase+1769 JMP DWORD PTR DS:[imbase+1E010]
DWORD PTR DS:[imbase+1E010] здесь поначалу лежит вызов функции imbase+6A2D (_imp_load__WTSEnumerateSessionsW@2 0), которая загружает длл, изменяет адрес в [imbase+1E010] на адрес функции WTSEnumerateSessionsW@20 и собственно вызывает ее.

(хотя винсты.длл сразу после загрузки нет, она грузится несколько потом при инициализации всех хреновин менеджера, поэтому хватайте LoadLibraryExW если длл еще не загружена, ловите вызов загрузки нужной библиотеки, загружайте в обработчике перехвата и перехватывайте во вновь загруженной длл все что нужно, также изначально по адресу im+1e010 загружен адрес переходника загружающего адрес WTSEnumerateSessionsW(по названиям ида _imp_load__WTSEnumerateSessionsW@20 ), поэтому быть может будет легче изменить его, в перехватчике изменив адрес возврата на свой(и сохранив оригинальный, разумеется) и по возврату на этот измененный адрес WTSAPI32.dll будет уже в памяти)
Нет, ну правда..

Последний раз редактировалось yuran666666; 25.08.2011 в 11:00.
yuran666666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каком виде хранить список он-лайн пользователей? Виталий Желтяков PHP 7 10.05.2011 08:17
Список пользователей организации TheBoss Microsoft Office Excel 4 26.11.2010 12:28
Как вытащить из XP список пользователей UnD)eaD)Snake Win Api 10 29.04.2008 20:38
сделать в боте список зарегистрированных пользователей Kukkk Компоненты Delphi 2 06.10.2007 18:01