IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   CTRL+ALT+DELETE (https://www.imho.ws/showthread.php?t=76859)

Malone32® 02.01.2005 23:44

CTRL+ALT+DELETE
 
Пишу программу на Delphi. В общем, надо сделат так, чтобы её не было видно в Task Manager, или же надо вообще отключить действие CTRL+ALT+DELETE. Кто-нибудь знает как это сделать в Windows XP\2000\NT при помощи какой-нибудь API-функции или реестра???. Смысл в том, чтобы не было выхода из моей проги способом CTRL+ALT+DELETE.

Kitana Haru 03.01.2005 00:07

Хмм... всё было бы просто, но сервисы на Дельфи не пишутся, такая вот беда. У кого есть идеи?

Malone32® 03.01.2005 00:29

Мне можно и на VB!!

Riddler 03.01.2005 00:57

Malone32®
Я, конечно, в программировнии ничего не понимаю, но какие бы я проги не пользовал, я во всех могу выйти по CTRL+ALT+DELETE (это относится к 2000/ХР). Так что я думаю, что это не возможно...

ЕЖ 03.01.2005 01:05

Kitana Haru
Ну как же так не пишутся? Всегда писались. Как же VCL-классы TService, TServiceApplication, TServiceThread? Да и при создании приложения можно выбрать тип - хоть для Web-сервиса.

А вот про сервисы на Delphi, но на чистом API
http://www.delphiworld.narod.ru/base..._services.html

P.S. Тему нужно в программирование.

Malone32® 03.01.2005 01:32

Сложно, сложно, но всё-таки можно :):) :)

Да, просто я думаю может с помощью реестра как-нибудь получится сделать..............

Mg0 03.01.2005 12:15

Malone32®
Имхо, с помощью реестра ты ничего не сделаешь. CTRL+ALT+DELETE -- это базовая комбинация Win32, и никакими копаниями в реестре ее отключить невозможно. Тут тебе надо вешать хук на клавиатурный драйвер и фильтровать ввод пользователя. Таким образом можно отфильтровать практически всё, вот только насчет CTRL+ALT+DELETE я не уверен.

Plague 03.01.2005 12:50

Мне кажется - тема более уместна для раздела "Программирование", куда и перенес. + что-то подобное я здесь вроде видел.

chesnok 03.01.2005 15:22

По поводу 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:

Kitana Haru 03.01.2005 15:27

ЕЖ
Можно конечно и так извернуться...
Но может проще обратиться к С++?
Всё-таки для него человек примеров написания найдёт гораздо больше...
А реестр оставьте в покое, здесь нужно просто написать не приложение (task) и не процесс (process), а службу (serviсe), которая в Task Manager не отображается...

gvozd 03.01.2005 16:00

Есть такие АПИ, но они работают только в 9х, потому что процесс не скроешь. Как один из вариантов - написать свой таск менеджер, ставить хук, при нажатии заветной комбинации показывать свой менеджер и оттуда убирать процесс. Еще на одном форуме я читал, что можно как-то прицепиться к чужому процессу, если найду - кину. Удачи!

chesnok 03.01.2005 16:13

Если нужно спрятать свой процесс от task manager'а - дык надо сразу было так говорить. Это ГОРАЗДО проще. Достаточно просто перехватывать вызовы функции NtQuerySystemInformation (все списки процессов так или иначе формируются с помощью неё) и заменять их своими, убирающими тот или иной процесс из списка. За инфой по NtQuerySystemInformation - Read The F***ing MSDN!!!. За инфой по перезвату сис. вызовов - статья.

BTW: не стоит думать, что если в MSDN или статьях примеры на c/c++, то на Дельфи этого нельзя сделать. В большинстве случаем как раз можно, если есть нужный модуль. Вот только я сильно сомневаюсь, что в Дельфи есть модуль Winternl, так что, возможно, придётся извращаться с явным поиском её адреса в ntdll.dll (по-моему там, но возможно и в kernel32.dll). Ну и конечно, в любом случае нужно будет проштудировать Winternl.h и переписать оттуда все struct'ы и прочие #define'ы в синтаксисе Дельфи.

alexey_ma 04.01.2005 12:01

Цитата:

chesnok:
Достаточно просто перехватывать вызовы функции NtQuerySystemInformation (все списки процессов так или иначе формируются с помощью неё) и заменять их своими, убирающими тот или иной процесс из списка. За инфой по NtQuerySystemInformation
Не только. B 2000 и XP еще подерживется Tool Help как это было в Win9x. С помощью Tool Help Functions тоже можно получить список процессов потоков, модулей и т.п.

chesnok 04.01.2005 12:36

Цитата:

Сообщение от alexey_ma
Не только. B 2000 и XP еще подерживется Tool Help как это было в Win9x. С помощью Tool Help Functions тоже можно получить список процессов потоков, модулей и т.п.

Ну дык ToolHelp API собственно использует NtQuerySystemInformation (ToolHelp API - просто удобная надстройка), которая в свою очередь просто читает данные из системных таблиц.

alexey_ma 04.01.2005 16:35

Спорить не буду,но не уверен что это так. Поскольку NT 4 не подерживает Tool Help, а Win9x поддерживает. Вполне возможна сомостоятельная реализация в kernel32.dll без изпользования функций Nt... из ntdll.dll.

Avoidik 04.01.2005 17:35

y0da.cjb.net -> Code Snippets -> Invisibility

blacklist 12.01.2005 03:52

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.