Как заблокировать нажатиe ctrl+alt+del?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Как заблокировать нажатиe ctrl+alt+del?

Сообщение Grey_of_Lagan » 11.08.2007 (Сб) 1:36

Как заблокировать нажатиe ctrl+alt+del?
я уже пробовал с помошью CompControl1.ALT_CTRL_DEL_Disabled почему-то не работает. мож апи есть какая?
если кто нить че нить знает по этому поводу напишите мне в асю:199205014. заранее благодарен

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.08.2007 (Сб) 6:41

Б@йан! Не бывает!
Весь мир матрица, а мы в нем потоки байтов!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.08.2007 (Сб) 9:36

Б@йан! Не бывает!
Ой ли?

Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del и Ctrl+Shift+Esc.

Все это дело можно перехватить.

Для перехвата необходимо внедрить DLL в процесс Winlogon, сабклассить указанное окно, и обрабатывать сообщение WM_HOTKEY:


Код: Выделить всё
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
    if( WM_HOTKEY == msg ){
         // Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
         if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }

         if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }
        }

    // Вызываем стандартный обработчик
    return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}

Функция DllMain:

Код: Выделить всё
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
    if( DLL_PROCESS_ATTACH == fdwReason ){
         // Находим окно
         g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );

         // Заменяем обработчик
         if( g_hSASwnd != NULL )
              g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
        }

    if( DLL_PROCESS_DETACH == fdwReason ){
         // Возвращаем обработчик
         if( g_hSASwnd != NULL )
              SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
        }

    return TRUE;
}

Осталось дело за малым - внедрить DLL. Для этого нужны права администратора
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 11.08.2007 (Сб) 10:30

Ну скажем так, решение весьма не простое. Это точнее.
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.08.2007 (Сб) 10:46

А ещё можно поставить свой драйвер в стек клавиатуры :-)

А можно просто вырубить winlogon: http://blogs.technet.com/markrussinovic ... vices.aspx
Изображение

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 11.08.2007 (Сб) 18:51

А еще можно прикинуться Screen-Saver'ом, насколько я помню..
label:
cli
jmp label

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.08.2007 (Сб) 19:07

Это и делает код в первом посте, работоспособный только в Win9x.
Изображение

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 11.08.2007 (Сб) 21:23

Мдя. Точно. Почему же мне казалось, что он у меня и в XP работал??? Бывает...
label:
cli
jmp label

Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Сообщение Grey_of_Lagan » 12.08.2007 (Вс) 2:39

Twister писал(а):
Б@йан! Не бывает!
Ой ли?

Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del и Ctrl+Shift+Esc.

Все это дело можно перехватить.

Для перехвата необходимо внедрить DLL в процесс Winlogon, сабклассить указанное окно, и обрабатывать сообщение WM_HOTKEY:


Код: Выделить всё
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
    if( WM_HOTKEY == msg ){
         // Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
         if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }

         if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }
        }

    // Вызываем стандартный обработчик
    return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}

Функция DllMain:

Код: Выделить всё
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
    if( DLL_PROCESS_ATTACH == fdwReason ){
         // Находим окно
         g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );

         // Заменяем обработчик
         if( g_hSASwnd != NULL )
              g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
        }

    if( DLL_PROCESS_DETACH == fdwReason ){
         // Возвращаем обработчик
         if( g_hSASwnd != NULL )
              SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
        }

    return TRUE;
}

Осталось дело за малым - внедрить DLL. Для этого нужны права администратора


как я понял это на фсегда отключит "три кнопки" а мне надо тока на время работы проги)))) если это возможно то объясни как это сделать. спасиба ;)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.08.2007 (Вс) 4:56

Мимо.

При завершении программы выполнится этот:
Код: Выделить всё
if( DLL_PROCESS_DETACH == fdwReason ){
         // Возвращаем обработчик
         if( g_hSASwnd != NULL )
              SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
        }

код и восстановит оригинальный WindowProc.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 13.08.2007 (Пн) 13:02

При завершении программы

Совсем необязательно - надо осознанно спровоцировать выгрузку dll.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 13.08.2007 (Пн) 14:27

Ну скажем так, решение весьма не простое. Это точнее.
Ну конечно, готовых ОСХ-ов для этого нет. Нужно поработать головой и ручками.
А ещё можно поставить свой драйвер в стек клавиатуры
Это для только дZенствующих... :)
Совсем необязательно - надо осознанно спровоцировать выгрузку dll.
Так, давайте по порядку. Если логическое ударение поставить на фразу надо осознанно, то фраза не верна, ибо DllMain с DLL_PROCESS_DETACH по-любому выполнится и при завершении процесса, и при выгрузке либы.
А я все практикую лечение травами...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 13.08.2007 (Пн) 14:55

Пропишитесь дебаггером для TaskMan.exe.
Строчка в реестре и будет ВАШ ехе запускаться, делов то.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.08.2007 (Пн) 15:11

Sebas забыл, что по сабжевой комбинации клавиш TaskMgr запускается только в WinXP, и только вне домена?
Изображение

Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Сообщение Grey_of_Lagan » 16.08.2007 (Чт) 1:05

Grey_of_Lagan писал(а):
Twister писал(а):
Б@йан! Не бывает!
Ой ли?

Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del и Ctrl+Shift+Esc.

Все это дело можно перехватить.

Для перехвата необходимо внедрить DLL в процесс Winlogon, сабклассить указанное окно, и обрабатывать сообщение WM_HOTKEY:


Код: Выделить всё
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
    if( WM_HOTKEY == msg ){
         // Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
         if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }

         if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
              MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
                                               TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
              return 0;
             }
        }

    // Вызываем стандартный обработчик
    return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}

Функция DllMain:

Код: Выделить всё
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
    if( DLL_PROCESS_ATTACH == fdwReason ){
         // Находим окно
         g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );

         // Заменяем обработчик
         if( g_hSASwnd != NULL )
              g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
        }

    if( DLL_PROCESS_DETACH == fdwReason ){
         // Возвращаем обработчик
         if( g_hSASwnd != NULL )
              SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
        }

    return TRUE;
}

Осталось дело за малым - внедрить DLL. Для этого нужны права администратора


как я понял это на фсегда отключит "три кнопки" а мне надо тока на время работы проги)))) если это возможно то объясни как это сделать. спасиба ;)


теперь нада объяснить как заставить этот код работать...? пробовал добавить в модуль но все становится красным и не работает...объяснит плизззз как добиться работоспособности... )))

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16475
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 16.08.2007 (Чт) 6:28

пробовал добавить в модуль но все становится красным и не работает...

:lol: :lol: :lol:


Автор, это СИ :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 16.08.2007 (Чт) 9:29

Twister
Я, наверное, недопонял код. Выгрузка dll происходит автоматически после завершения процесса, это да. Только вот если это winlogon.exe, тл это произойдёт во время шатдауна системы. Чтобы отключить во время её работы надо осознанно её выгружать. Где я не прав?
Изображение

Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Сообщение Grey_of_Lagan » 16.08.2007 (Чт) 23:27

keks-n писал(а):Twister
Я, наверное, недопонял код. Выгрузка dll происходит автоматически после завершения процесса, это да. Только вот если это winlogon.exe, тл это произойдёт во время шатдауна системы. Чтобы отключить во время её работы надо осознанно её выгружать. Где я не прав?


если чесно то я ниче не понял из того что ты сказал....вообщем я чотел добиться того: загружаю я прогу(которую я делаю ) там в ней определенные действия...и одно из них заключается в том пока моя прога работает и выполняет возложенные мной на нее функции комп не реагирует на нажатие "трех кнопок" вот и все....

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.08.2007 (Пт) 0:48

А вообще-то зачем?
Изображение

Pasha47
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 22.07.2007 (Вс) 18:29

Сообщение Pasha47 » 17.08.2007 (Пт) 1:31

Хм... как всегда нестандартно, но во время работы моей проги нажимать три кнопки бесполезно...

Обошолся одной строкой в форм_лоад :lol:
Вложения
no.rar
(2.21 Кб) Скачиваний: 229

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.08.2007 (Пт) 7:04

Ну и где эта строчка?
Весь мир матрица, а мы в нем потоки байтов!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 17.08.2007 (Пт) 11:11

keks-n
Где я не прав?
Конечно ты прав.
тл это произойдёт во время шатдауна системы
Ну, если заняться демагогией, то не обязательно во время шатдауна. Винлогон прибить ни кто не запретит.
А я все практикую лечение травами...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 17.08.2007 (Пт) 11:27

Осталось дело за малым - внедрить DLL. Для этого нужны права администратора
За таким ли уж малым?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.08.2007 (Пт) 12:19

Twister
После прибиения винлогона обычно шатдаун наступает :). Если не плясать с бубном, конечно.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2007 (Пт) 13:16

Мы с Twister-ом привели ссылку на конкретное пошаговое описание необходимых для выживания системы плясок.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.08.2007 (Пт) 15:25

Grey_of_Lagan
Не моё, где взял, не помню, чисто случайно откопал в завалах:
http://share.fire-lines.ru/keks-n/DisableCAD.rar
Изображение

Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Сообщение Grey_of_Lagan » 17.08.2007 (Пт) 23:22

keks-n писал(а):Grey_of_Lagan
Не моё, где взял, не помню, чисто случайно откопал в завалах:
http://share.fire-lines.ru/keks-n/DisableCAD.rar


че то не работает эта ссылка....(((( там вот что "Rar!л░F|▌Би▒щ⌡[#П іЯmПр
Eu6]mч<⌠▄JъgLО╛&ШYІT╞⌠В\©▓┴^╦dН\жМ!q╚╪е┌Cm+ы 5[М|" когда ты там был там было по другому?

Pasha47
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 22.07.2007 (Вс) 18:29

Сообщение Pasha47 » 17.08.2007 (Пт) 23:23

Ну и где эта строчка?

Код: Выделить всё
При лоад.
Open "C:\windows\system32\taskmgr.exe" For Binary Lock Read Write As #1

И соответственно при анлоад
Close #1


Правда для полново щастья надо будет определить где винда сидит, но это уже слишком просто чтоб писать.

Теперь таск нельзя запустить даже вручную. Правда что мне мешает заюзать другой прогой ВиевПроц....?.. [/syntax]

Pasha47
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 22.07.2007 (Вс) 18:29

Сообщение Pasha47 » 17.08.2007 (Пт) 23:26

Код: Выделить всё
че то не работает эта ссылка....(((( там вот что "Rar!л░F|▌Би▒щ⌡[#П іЯmПр
Eu6]mч<⌠▄JъgLО╛&ШYІT╞⌠В\©▓┴^╦dН\жМ!q╚╪е┌Cm+ы 5[М|" когда ты там был там было по другому?


Правой кнопкой мышки по ссылке: Сохранить как....

У меня всё грузит.... Пробуй IE.

Grey_of_Lagan
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 10.08.2007 (Пт) 0:37
Откуда: Россия

Сообщение Grey_of_Lagan » 18.08.2007 (Сб) 0:12

Pasha47 писал(а):
Код: Выделить всё
че то не работает эта ссылка....(((( там вот что "Rar!л░F|▌Би▒щ⌡[#П іЯmПр
Eu6]mч<⌠▄JъgLО╛&ШYІT╞⌠В\©▓┴^╦dН\жМ!q╚╪е┌Cm+ы 5[М|" когда ты там был там было по другому?


Правой кнопкой мышки по ссылке: Сохранить как....

У меня всё грузит.... Пробуй IE.


спассиба)) всеофигено работает и строка твоя тоже офигенно работает)) давай в асе пообщаемя? мож ише че интересного расскажешь? еси че вот мой номер 199205014

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 5

    TopList