![]() |
CTRL+ALT+DELETE
Пишу программу на Delphi. В общем, надо сделат так, чтобы её не было видно в Task Manager, или же надо вообще отключить действие CTRL+ALT+DELETE. Кто-нибудь знает как это сделать в Windows XP\2000\NT при помощи какой-нибудь API-функции или реестра???. Смысл в том, чтобы не было выхода из моей проги способом CTRL+ALT+DELETE.
|
Хмм... всё было бы просто, но сервисы на Дельфи не пишутся, такая вот беда. У кого есть идеи?
|
Мне можно и на VB!!
|
Malone32®
Я, конечно, в программировнии ничего не понимаю, но какие бы я проги не пользовал, я во всех могу выйти по CTRL+ALT+DELETE (это относится к 2000/ХР). Так что я думаю, что это не возможно... |
Kitana Haru
Ну как же так не пишутся? Всегда писались. Как же VCL-классы TService, TServiceApplication, TServiceThread? Да и при создании приложения можно выбрать тип - хоть для Web-сервиса. А вот про сервисы на Delphi, но на чистом API http://www.delphiworld.narod.ru/base..._services.html P.S. Тему нужно в программирование. |
Сложно, сложно, но всё-таки можно :):) :)
Да, просто я думаю может с помощью реестра как-нибудь получится сделать.............. |
Malone32®
Имхо, с помощью реестра ты ничего не сделаешь. CTRL+ALT+DELETE -- это базовая комбинация Win32, и никакими копаниями в реестре ее отключить невозможно. Тут тебе надо вешать хук на клавиатурный драйвер и фильтровать ввод пользователя. Таким образом можно отфильтровать практически всё, вот только насчет CTRL+ALT+DELETE я не уверен. |
Мне кажется - тема более уместна для раздела "Программирование", куда и перенес. + что-то подобное я здесь вроде видел.
|
По поводу CTRL+ALT+DELETE:
В винде всё, что посылает клавиатура, сначала обрабатывает RIT (raw input thread), работающая как часть ядра в кольце защиты 1 (по-моему). Так вот эта RIT при виде сигнала CAD вызывает ф-ю типа [GinaSASчто-то там] из gina.dll, отвечающюю за визуализацию процесса logon/logoff/lock. Виндовые сервисы работают в кольце 2, а приложения - вообще в 3. Так что в NT/2k/XP единственный способ отлова - либо свой сервис для кольца защиты 0 (по типу SoftICE ;)), либо свой драйвер клавиатуры (хотя в работоспособности этого способа я не уверен). 1ый сработает 100%, но написание вещей для ring0 - тема для не одной большой беседы.... :contract: |
ЕЖ
Можно конечно и так извернуться... Но может проще обратиться к С++? Всё-таки для него человек примеров написания найдёт гораздо больше... А реестр оставьте в покое, здесь нужно просто написать не приложение (task) и не процесс (process), а службу (serviсe), которая в Task Manager не отображается... |
Есть такие АПИ, но они работают только в 9х, потому что процесс не скроешь. Как один из вариантов - написать свой таск менеджер, ставить хук, при нажатии заветной комбинации показывать свой менеджер и оттуда убирать процесс. Еще на одном форуме я читал, что можно как-то прицепиться к чужому процессу, если найду - кину. Удачи!
|
Если нужно спрятать свой процесс от task manager'а - дык надо сразу было так говорить. Это ГОРАЗДО проще. Достаточно просто перехватывать вызовы функции NtQuerySystemInformation (все списки процессов так или иначе формируются с помощью неё) и заменять их своими, убирающими тот или иной процесс из списка. За инфой по NtQuerySystemInformation - Read The F***ing MSDN!!!. За инфой по перезвату сис. вызовов - статья.
BTW: не стоит думать, что если в MSDN или статьях примеры на c/c++, то на Дельфи этого нельзя сделать. В большинстве случаем как раз можно, если есть нужный модуль. Вот только я сильно сомневаюсь, что в Дельфи есть модуль Winternl, так что, возможно, придётся извращаться с явным поиском её адреса в ntdll.dll (по-моему там, но возможно и в kernel32.dll). Ну и конечно, в любом случае нужно будет проштудировать Winternl.h и переписать оттуда все struct'ы и прочие #define'ы в синтаксисе Дельфи. |
Цитата:
|
Цитата:
|
Спорить не буду,но не уверен что это так. Поскольку NT 4 не подерживает Tool Help, а Win9x поддерживает. Вполне возможна сомостоятельная реализация в kernel32.dll без изпользования функций Nt... из ntdll.dll.
|
y0da.cjb.net -> Code Snippets -> Invisibility
|
Malone32®
За мониторинг комбинации ctrl+alt+delete в Windows 2000/XP отвечает winlogon.exe, который при её нажатии вызывает экспортируемую модулем msgina.dll функцию WlxLoggedOnSAS. Способ блокировки CTRL+ALT+DEL заключается в написании собственной GINA.DLL с последующей регистрацией её в реестре: KeyName: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon Value Type: REG_SZ Value Name: GinaDLL Собственно надо написать только реализацию функции WlxLoggedOnSAS, которая всегда будет возвращать WLX_SAS_ACTION_NONE, а остальные функции могут связыватся с оригинальной msgina.dll. Подробности с примерами смотри в MSDN - раздел Platform SDK: Logon Authentication |
| Часовой пояс GMT +4, время: 08:13. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.