Блокирование интерфейса

Discussion in 'WASM.NT.KERNEL' started by Drakon, May 15, 2006.

  1. Drakon

    Drakon New Member

    Blog Posts:
    0
    Joined:
    Sep 24, 2004
    Messages:
    85
    Location:
    Russia
    У меня возникла такая проблемка: нужно сделать чтобы если запущена моя программа, то нельзя было переключаться на другие задачи, нажимать там на меню пуск и т. д. Короче чтобы все сообщения с клавиатуры и мыши которые в итоге идут не к окну моей программы просто блокировались. И самое главное прога должна в винде начиная с версии 98.

    Так вот два вопроса:

    1. Есть какие-нить встроенные в винду средства чтобы просто это сделать?

    2. Я вижу вариант типа в explorer'е найти оконную процедуру или что-нить такую и поковырять её. Криво?
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Staff Member

    Blog Posts:
    2
    Joined:
    Jun 11, 2004
    Messages:
    3,568
    Location:
    Russia
    Вы не учли, что CTRL-ALT-DEL просто так не перехватишь. К тому же, кто такой прогой пользоваться будет? Ведь нет свободы действий.

    А так есть вариант писать драйвер (для NT отдельно, для 98 отдельно) он будет перехватывать все и вся.

    Но сразу скажу , что так просто тяп-ляп не получится.
     
  3. Stiver

    Stiver Партизан дзена

    Blog Posts:
    0
    Joined:
    Dec 18, 2004
    Messages:
    812
    Location:
    Germany
    TermoSINteZ





    Такие программы устанавливают на компьютеры в общественных местах, в библиотеке например, или я помнится как-то для бензозаправки что-то похожее делал.



    Drakon



    CTRL-ALT-DEL я запрещал заменой gina.dll на свою собственную. Все остальное можно перехватить хуками.
     
  4. Drakon

    Drakon New Member

    Blog Posts:
    0
    Joined:
    Sep 24, 2004
    Messages:
    85
    Location:
    Russia
    Такс.. Чтобы заменить gina в работающей системе надо знать кто использует эту библиотеку? Вроде только winlogon... Или я не прав. И как сделать замену? Я так понял надо перехватить только вызов функции WlxLoggedOnSas в процессе winlogin: библиотека msgina.dll?



    Насчёт хуков: где можно почитать? =)
     
  5. gloomyraven

    gloomyraven Руслан

    Blog Posts:
    0
    Joined:
    Apr 16, 2006
    Messages:
    288
    Location:
    Москва
  6. Guest

    Guest Guest

    Blog Posts:
    0
    Смотрите проще Господа =)

    Explorer.exe->Suspend

    Winlogon.exe->Suspend
     
  7. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    Единственная клавиша, которую не получится нормально "перехватить" через WM_KEYDOWN - F10. Все остальные сами посылаются сначала обработчику главного окна и если их не погасить, далее превращаются в системные команды. Ctrl+Alt+Del можно временно запретить через реестр (проверял только на XP). В msn можно найти в какой ветке и что менять для отключения Ctrl+Alt+Del.
     
  8. spn_dd

    spn_dd New Member

    Blog Posts:
    0
    Joined:
    May 24, 2006
    Messages:
    22
    Location:
    Ukraine
    т.к. все переферийные устройства имеют контроллеры, то лучшим вариантом является блокирование именно на этом уровне, а для этого однозначно необходимо писать драйвер.



    Но тебя такое конечно не устроит, так что только хуки.
     
  9. _BC_

    _BC_ БЦ

    Blog Posts:
    0
    Joined:
    Jan 20, 2005
    Messages:
    759
    На 9х можно заблокировать alt+tab, alt+esc, ctrl+esc, ctrl+alt+del и тп вызовом
    Code (Text):
    1. call    SystemParametersInfoA, 61h, 0, offset some_buf, 0


    второй параметр = 0 => заблокировать, 1 => разбл.



    На nt -- SetWindowsHookExA, но с её помощью 3 пальца нельзя хукнуть.
     
  10. _BC_

    _BC_ БЦ

    Blog Posts:
    0
    Joined:
    Jan 20, 2005
    Messages:
    759
    Вот трофейная дллка с примером использования:

    [​IMG] 1545077570__khook.rar
     
  11. Four-F

    Four-F New Member

    Blog Posts:
    0
    Joined:
    Aug 31, 2002
    Messages:
    1,237
  12. mix_mix

    mix_mix Михаил

    Blog Posts:
    0
    Joined:
    Oct 8, 2005
    Messages:
    277
    Location:
    Токио
    А нельзя сделать прозрачное окошко программы на весь экран? Только чтобы поверх всех окон выло, при потере фокуса опять переключаться на себя. Тогда никакие сообщения другим окнам не дойдут, т.к. они будут приходить окошку твоей проги.
     
  13. zxm

    zxm New Member

    Blog Posts:
    0
    Joined:
    Jul 20, 2006
    Messages:
    71
    Что касается перхвата контр альт делита. Мне это нужно для моей програмы. Там типа отключение клавы и мыши. Для отключения использвоал функцию BlockInput из user32.dll. Вот с CAD возникли проблемы. Я знаю три способа перехвата CAD(речь идёт тока об 2000/2003/XP):
    1. Замена msgina.dll. Это можно сделать и заменой файла и добавлением ключика в реестре(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDll) на адрес нашей длл. Написать длл не сложно так как по сути это дллл-обёртка. В ней все функции (их насколько я помню 10) вызываются без изменений у настоящей джины, кроме WlxLoggedOnSas - она вызвается при CAD.
    Недостаток этого способа это то что установка Джина с помощью ключа в реестре тербует перезагрузки и то что в вин 2000 и 2003 при нажатии КАД проиходит переключение декстопов. При перехвате происходит мелькание экрана. Поэтому этот способ мне не подходит

    2. Винлогон регистрирует КАД при помощи функции RegisterHotkey. При нажатии КАД окно винлогона, на которое зарегитрироват хотки получается сообщенеи WM_HOTKEY.
    Так вот способ такой: Длл-инджектион в винлогон, изменение обработчика окна на свой. Окно обрабатываеющее КАД можно найти FindWindow('SAS Window class', 'SAS window' ), изменить обработчик с помощью SetWindowLong. Недостаток у этого способа это то что некоторым умным антивирусам не нравится длл-инджектион. Поэтому этот способ мне тоже не подходит.

    3. Написание драйвера-фильтра клавиатуры.