Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259

WinApi Hooks System

08.11.2022, 08:59. Показов 6241. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вобщем проблема в том что если запустить процесс с правами юзера то он прекрасно обрабатывает хуки,
но если запустить его как сервис то это неработает.
в чем может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2022, 08:59
Ответы с готовыми решениями:

Windows hooks
Как сделать чтобы программа при нажатии j открывала например калькулятор? В интернете информация по этим хукам не очень понятная, хотел бы...

C# Winapi Hooks
У меня есть программа которая использует winapi PostMessage чтобы посылать окну сообщения, но это очень нагрузочно ( модальный цикл в...

Отличные DLL-ки для установки системных "хуков" (system-wide hooks)
Перерыл за последние несколько дней кучу ресурсов Сети на тему установки системных хуков. Наконец, нашёл то, что просто 'на голову'...

30
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
22.11.2022, 18:21
Студворк — интернет-сервис помощи студентам
Замабувараев, а программно как это сделать. Если допустим запуск на компьютере, и ТС не знает пароля?
Я бы смотрел только в сторону имперсонации.
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
22.11.2022, 20:32
Цитата Сообщение от Morgot Посмотреть сообщение
а программно как это сделать
У функции CreateServiceW два последних параметра отвечают за пароль и аккуант.
1
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
23.11.2022, 01:48
Замабувараев, так я понимаю, но что делать, если ТС не знает пароля? Тогда только имперсон. Это имел ввиду. Ну или у пользователя запросить при инсталле софта, если мы говорим о белой проге.
1
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259
23.11.2022, 13:46  [ТС]
ребята на 50 компьютеров устанавливать программу и вводить пароли както геморно получается уж лучше длл или шел код, покрайней мере это можно раскидать с с помощью скрипта, только ненравится мне идея с шелкодом, как то это не этично
0
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259
02.12.2022, 07:09  [ТС]
а как делать имперсонацию? там же тоже нужен пароль, прост отут куча юзеров и всех паролей не припомнишь
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.12.2022, 16:22
Цитата Сообщение от addedie Посмотреть сообщение
ребята на 50 компьютеров устанавливать программу
В нормально администрируемой сети на 50 компьютеров устанавливать не нужно. Средствами администрирования приложение назначается всем компьютерам в домене. Это несколько шликов мышью, вместо беготни по кабинетам с флэшкой.
1
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
04.12.2022, 05:02
Цитата Сообщение от addedie Посмотреть сообщение
а как делать имперсонацию?
открыть процесс эксплорера , скопировать токен, сделать имперсонацию.
тут не нужны креды.
1
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259
04.12.2022, 18:08  [ТС]
можно пример?


какие апи для этого нужны
0
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
04.12.2022, 20:35
Цитата Сообщение от addedie Посмотреть сообщение
какие апи для этого нужны
1. OpenProcess - explorer.exe, т.е. ищете эксплорер нужного юзера перебором процессом, открываете с правами (см в мсдн или берите максимальные, какие доступны
2.OpenProcessToken - открыть токен с пред. пункта, опять же, см права или TOKEN_ALL_ACCESS
3. И ImpersonateLoggedOnUser (тут токен). Также см. в мсдн функции SetThreadToken, CreateProcessWithToken, но там есть сои нюансы. Самый простой способ это с ImpersonateLoggedOnUser
1
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259
13.03.2023, 19:44  [ТС]
вобщем долго думаю пришел к такому коду

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DWORD WINAPI MainThread()
    {
        HANDLE hProcToken;
        if (OpenProcessToken(GetHandleOfProc(), TOKEN_DUPLICATE, &hProcToken))
        {
            ErrorExit((LPSTR)"OpenProcessToken");
            HANDLE hImpToken;
            if (DuplicateTokenEx(hProcToken, MAXIMUM_ALLOWED, NULL, SecurityIdentification, TokenImpersonation, &hImpToken))
            {
                ErrorExit((LPSTR)"DuplicateTokenEx");
                CloseHandle(hProcToken);
                
                
                if (SetThreadToken(NULL, hImpToken))
                    ErrorExit((LPSTR)"SetThreadToken");
                
                HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadToImpersonate, NULL, 0, NULL);
 
                //ResumeThread(hThread);
                ErrorExit((LPSTR)"ResumeThread");
                Sleep(100000);
                WaitForSingleObject(hThread,INFINITY);
 
                ErrorExit((LPSTR)"NEXT");
                
                RevertToSelf();
                CloseHandle(hImpToken);
                return 0;
            }
        }
        return 0;
    }
 
}
по итогу хук устанавливается но нет респонса тобишь лог незаписывается , при т очто есл изапустить логер как обычный процесс то лог пишется через эту функцию из потока...

Добавлено через 1 минуту
также пробовал создавать новый поток и его хендл присваивать в функцию SetThreadToken но и это не дало результата

Добавлено через 1 минуту
и все функции в данном потоке выполнились успешно разумеется

Добавлено через 1 минуту
здесь тоже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    DWORD WINAPI ThreadToImpersonate()
    {
        
        HINSTANCE hExe = GetModuleHandle(NULL);
 
        
        if (hExe == NULL)
        {
            ErrorExit((LPSTR)"ERROR");
            return 1;
        }
        else
        {
            HHOOK hKeyHook;
            MSG msg;
            hKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, hExe, 0);
            ErrorExit((LPSTR)"SetWindowsHookEx");
            while (GetMessage(&msg, NULL, 0, 0) != 0)
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            UnhookWindowsHookEx(hKeyHook);
        }
        return 0;
    }
0
3 / 3 / 1
Регистрация: 07.09.2019
Сообщений: 259
14.03.2023, 20:43  [ТС]
блин что никто незнает?

Добавлено через 2 часа 41 минуту
пробовал менять рабочий стол вот так в потоке

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    BOOL SetWinSta0Desktop(CHAR* szDesktopName)
    {
        BOOL bSuccess = FALSE;
 
        HWINSTA hWinSta0 = OpenWindowStationA("WinSta0", FALSE, MAXIMUM_ALLOWED);
        if (NULL == hWinSta0) { ErrorExit((LPSTR)"OpenWindowStation"); }else ErrorExit((LPSTR)"OpenWindowStation");
 
        bSuccess = SetProcessWindowStation(hWinSta0);
        if (!bSuccess) { ErrorExit((LPSTR)"SetProcessWindowStation"); } else ErrorExit((LPSTR)"SetProcessWindowStation");
 
        HDESK hDesk = OpenDesktopA(szDesktopName, 0, FALSE, MAXIMUM_ALLOWED);
        if (NULL == hDesk) { ErrorExit((LPSTR)"OpenDesktop"); } else ErrorExit((LPSTR)"OpenDesktop");
 
        bSuccess = SetThreadDesktop(hDesk);
        if (!bSuccess) { ErrorExit((LPSTR)"SetThreadDesktop"); } else ErrorExit((LPSTR)"SetThreadDesktop");
 
            if (hDesk != NULL) { CloseDesktop(hDesk); }
        if (hWinSta0 != NULL) { CloseWindowStation(hWinSta0); }
 
        
SetWinSta0Desktop((CHAR*)"default")
все функции успешно отрабатывают и я так понимаю висит процесс на GetMessage тоесть логер стартанул но нелогируется ничего...грешил на доступ к файлу но и там проблем нету процессэксплорер показал что с этим все в порядке...


может надо другой рабочий стол использовать?как вообще узнать на каком из них он запущен?

Добавлено через 46 минут
и может я неправильно переключаюсь между столами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2023, 20:43

WinApi CreateProcessWithLogonW запуск от SYSTEM
Привет. Есть ли возможно это сделать? Сигнатура метода просит юзера и пароль, как получить токен system?

И опять. Hooks
Доброе время суток, товарищи. Пытаюсь поймать WM_USER + 31845... Соответственно - SetWindowsHookEx с параметрами и WH_CALLWNDPROC и...

Hooks, WH_KEYBOARD
В общем, решил заняться хуками. Вот код, который у меня получился: DLL'ка: #include "DLL.h" extern "C"...

windows hooks
не могу запустить этот код с msdn не видит хук функции выдает все hook функции как undeclared identifier какую библиотеку еще надо...

Windows Hooks на C#
Добрый день. В интернете нашел множество статей с подробным описанием и примерами установки глобальных хуков, а вот с хуками на отдельный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru