|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.08.2011, 13:14 | #1 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
Список пользователей
Здраствуйте. Суть проблемы заключается в том, что я никак не могу найти, каким образом диспетчер задач получает список активных сеансов на компьютере. Скорей всего тоже через функцию NtQuerySystemInformation. Только вот как именно? Уже почти неделю гугл мучаю
|
23.08.2011, 14:20 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,770
|
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
и далее по МСДН |
23.08.2011, 14:54 | #3 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
странно, я почему-то думал, что эта функция используется для получения списка процессов. И что навряд ли диспетчер будет получать список активных сессий через нее. Скорее уж через WTSQuerySessionInformation. Хотя ее вызов я отловить не смог.
|
23.08.2011, 16:16 | #4 |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
NetUserEnum
NetQueryDisplayInformation |
24.08.2011, 03:28 | #5 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
аналогично, не смог отловить момент вызова этой функции в диспетчере. Да и в списке импорта ее нет.
|
24.08.2011, 10:24 | #6 | |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
Тебе нужно знать как именно это делает диспетчер задач? UPD: Диспетчер использует WTSEnumerateSessionsW, WTSQuerySessionInformationW Последний раз редактировалось SnX; 24.08.2011 в 11:18. |
|
24.08.2011, 13:57 | #7 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
Да, нужны именно те функции, которые использует диспетчер.
PS: WTSEnumerateSessionsW и WTSQuerySessionInformationW находятся в DLL "wtsapi32.dll", но вызов GetModuleHandle("wtsapi32.dll") возвращает NULL, а значит эта DLL не отображена в адресном пространстве процесса. Да и не видно, чтоб диспетчер эти функции импортировал. Список импорта можно глянуть тут |
24.08.2011, 18:57 | #8 | |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
На win7 диспетчер юзает именно WTS*.
Цитата:
Залей лучше куда-нибудь свой диспетчер. |
|
24.08.2011, 19:43 | #9 |
Форумчанин
Регистрация: 29.04.2008
Сообщений: 100
|
А остальные?
Вызываю из DLL, которая инжектирована в процесс "taskmgr.exe" методом удаленных потоков. Этим способом нормально перехватываю NtQuerySystemInformation. Так что в реализации ошибок вроде быть не должно =) Может используются какие-то оболочки для этих функций? Просто я никогда не занимался дизассемблированием и не могу посмотреть сам. Последний раз редактировалось hiho; 24.08.2011 в 19:50. |
25.08.2011, 10:30 | #10 |
Форумчанин
Регистрация: 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 <-( то есть можете перехватить ее, вызвать в перехватчике и считать ответ, только уж параметры сами поищите, я мельком глянул, сразу не нашел 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. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В каком виде хранить список он-лайн пользователей? | Виталий Желтяков | 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 |