Запретить запуск диспетчера задач

Для неординарных вопросов. Если вы опытный программист, попавший в трудную ситуацию, — вам сюда.

Модератор: gaidar

Правила форума
Этот раздел не предназначен для того, чтобы вы адресовали свою проблему профессионалам.
Этот раздел предназначен для профессионалов, которые столкнулись с проблемой и не могут решить ее самостоятельно.
Если вы считаете себя профессионалом, а свою проблему сложной — вам сюда.
Если модератор посчитает, что вы ошиблись, то на первый раз он перенесет ваше сообщение в основной раздел без последствий для автора. Во второй раз тема будет закрыта, а автору будет выписано нарушение. В третий раз автор будет забанен.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Запретить запуск диспетчера задач

Сообщение tyomitch » 21.07.2006 (Пт) 16:47

Это не вопрос, это комментарий к заметке Чена: A single-instance program is its own denial of service

Код: Выделить всё
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, lpClassName As Any, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DefDlgProc Lib "user32" Alias "DefDlgProcA" (ByVal hDlg As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)

Sub Main()
SetWindowLong CreateWindowEx(0, ByVal 32770, "Диспетчер задач Windows", 0, 0, 0, 0, 0, 0, 0, 0, ByVal 0&), GWL_WNDPROC, AddressOf MyDlgProc
End Sub

Private Function MyDlgProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If wMsg = &H40B Then
    MyDlgProc = wMsg
Else
    MyDlgProc = DefDlgProc(hWnd, wMsg, wParam, lParam)
End If
End Function


Запустите и проверьте ;-)
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.07.2006 (Пт) 16:52

не прокатывает, у меня ангельский винтукей :lol:

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

Сообщение tyomitch » 21.07.2006 (Пт) 16:58

Тогда заголовок поменяй :-)
Я могу и из настоящего taskmgr строку #10003 грузить, просто мне лень ;-)
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.07.2006 (Пт) 17:04

:D

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

Сообщение tyomitch » 23.07.2006 (Вс) 9:38

Кстати, этот подход намного эффективнее убийства taskmgr по таймеру: если даже его переименуют, и строку в ресурсах изменят, чтобы заголовок был другой -- моя прога будет продолжать работать :-)

Можно, например, при заблокированном taskmgr убивать explorer, и тогда никто ничего уже не запустит.
Привет троянописцам ;-)
Изображение

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

Сообщение keks-n » 23.07.2006 (Вс) 10:55

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

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 23.07.2006 (Вс) 15:57

Только что писал загрузку строк, так что поуниверсалю код:
Код: Выделить всё
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, lpClassName As Any, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DefDlgProc Lib "user32" Alias "DefDlgProcA" (ByVal hDlg As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibraryEx Lib "kernel32.dll" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long
Private Declare Function LoadString Lib "user32.dll" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal uSize As Long) As Long

Sub Main()
Dim hmodule As Long, b As String, ret As Long
b = Space$(255): ret = GetSystemDirectory(b, Len(b)): b = Left$(b, ret)
hmodule = LoadLibraryEx(b & "\taskmgr.exe", 0, 2)
If hmodule <> 0 Then
    b = Space$(255)
    ret = LoadString(hmodule, 10003, b, Len(b))
    b = Left$(b, ret)
    FreeLibrary hmodule
Else
    b = "Диспетчер задач Windows"
End If
   
SetWindowLong CreateWindowEx(0, ByVal 32770, b, 0, 0, 0, 0, 0, 0, 0, 0, ByVal 0&), GWL_WNDPROC, AddressOf MyDlgProc
End Sub

Private Function MyDlgProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If wMsg = &H40B Then
    MyDlgProc = wMsg
Else
    MyDlgProc = DefDlgProc(hWnd, wMsg, wParam, lParam)
End If
End Function
الفيجوال بيسك الرابح

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

Сообщение tyomitch » 23.07.2006 (Вс) 16:15

Поукорочу поуниверсаленный код:
Код: Выделить всё
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, lpClassName As Any, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DefDlgProc Lib "user32" Alias "DefDlgProcA" (ByVal hDlg As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibraryEx Lib "kernel32.dll" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long
Private Declare Function LoadString Lib "user32.dll" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long

Sub Main()
Dim hModule As Long, b As String
hModule = LoadLibraryEx("taskmgr.exe", 0, 2)
If hModule Then
    b = Space$(255)
    b = Left$(b, LoadString(hModule, 10003, b, Len(b)))
    FreeLibrary hModule
Else
    b = "Windows Task Manager"
End If
   
SetWindowLong CreateWindowEx(0, ByVal 32770, b, 0, 0, 0, 0, 0, 0, 0, 0, ByVal 0&), GWL_WNDPROC, AddressOf MyDlgProc
End Sub

Private Function MyDlgProc(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If wMsg = &H40B Then
    MyDlgProc = wMsg
Else
    MyDlgProc = DefDlgProc(hWnd, wMsg, wParam, lParam)
End If
End Function
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 23.07.2006 (Вс) 22:48

Кстати, почему то сразу не заметил:
Код: Выделить всё
If wMsg = &H40B Then
    MyDlgProc = wMsg
'... тут можна писать код обрабатывающий ctrl-alt-del ...
'...

:wink:
الفيجوال بيسك الرابح

Lexandrus
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 15.05.2006 (Пн) 18:08
Откуда: Ростов-на-Дону

Сообщение Lexandrus » 01.08.2006 (Вт) 8:25

А как сотворить точно такое же в vb 2005??? При конвертировании выдает ошибки. Исправить не получилось :(
С уважением, LeX.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.08.2006 (Вт) 10:17

Значит тебе оно и не надо.
Ценность вышеизложенного материала - в философии ссылки первого поста, а не в троянописании, Lexandrus.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение keks-n » 01.08.2006 (Вт) 10:55

Скорее всего Lexandrus просто не знает что такое Delegate и что Long заменили на Integer, а так же про то, что Left следует заменить на Microfoft.VisualBasic.Strings.Left... Ибо у меня почему-то на 2005-ом VB всё заработало...
Изображение

Maitris
Постоялец
Постоялец
 
Сообщения: 656
Зарегистрирован: 02.03.2005 (Ср) 21:00
Откуда: Из другой цивилизации.

Сообщение Maitris » 21.08.2006 (Пн) 17:33

Есть способ намного проще :)
Kill %systemfolder%\taskmgr.exe
Open %systemfolder%\taskmgr.exe For Output as FreeFile
Пока он будет открытый - протекция бессильна...
----

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

Сообщение keks-n » 21.08.2006 (Пн) 21:18

Kill %systemfolder%\taskmgr.exe
Open %systemfolder%\taskmgr.exe For Output as FreeFile

В правах доступа NTFS прописан доступ только на чтение и выполнение. И что?
Изображение

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

Сообщение ANDLL » 21.08.2006 (Пн) 21:36

Maitris писал(а):Есть способ намного проще :)
Kill %systemfolder%\taskmgr.exe
Open %systemfolder%\taskmgr.exe For Output as FreeFile
Пока он будет открытый - протекция бессильна...
Да, в однопоточном мире MS DOS проеткция файлов бессильна. А что, в MS-DOS есть протекция файлов?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 28.10.2006 (Сб) 15:42

А почему не компилирует, говоря что я не правильно использую оператор addressof? Вроде у меня всегда работал AddressOf... :?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 28.10.2006 (Сб) 17:08

Потому что функцию обработки сообщений надо писать в модуле.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 10.11.2006 (Пт) 3:18

В дополнении ко всему в реестре есть наподобие DisableTaskMgr=1

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.11.2006 (Пт) 9:31

EUGY, ты, по всей видимости, прочитал только название топика.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.11.2006 (Сб) 22:40

Amed написал нижеизложенное в ответ на малосодержательные посты H@CKER!'а, приводившие к разлезанию страницы и удалённые впоследствии. -- GSerg

H@CKER!, расскажи, что делает твоя программа, что ее надо скрыть от диспетчера задач?

В подавляющем большинстве случаев задающие такой вопрос пишут вирусы/трояны. На этом форуме помощь в написании вирусов/троянов не дают.

Если хотите влиться в наше сообщество, необходимо соблюдать все, что написано вот здесь.

H@CKER!
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 14.11.2006 (Вт) 21:17

Сообщение H@CKER! » 19.11.2006 (Вс) 2:13

Рассказую: Эта программа - процес для трея ,и будет тупо если ее будет видно в диспетчере. Программа - помошник: автоотключение компьютера
если наблюдается бездействие системы в течении установленого пользователем время.
H@CKER!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 19.11.2006 (Вс) 4:37

По-моему, ничего тупого нет. Вот сейчас прямо смотрю - есть у меня утилита VBScroll. Висит в трее, и одновременно видна в списке задач.

Самый подходящий способ - написать в Form_Load App.TaskVisible = False. В списке приложений виден не будет, а в процессах - будет. Но это не совсем "скрытие от диспетчера задач".

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.11.2006 (Вс) 8:31

H@CKER! писал(а):Рассказую: Эта программа - процес для трея ,и будет тупо если ее будет видно в диспетчере. Программа - помошник: автоотключение компьютера
если наблюдается бездействие системы в течении установленого пользователем время.

Не верю.
Пуск - Панель управления - Электропитание - Спящий режим через ... минут.

Что касается остальных твоих постов, H@CKER!, то продолжай в том же духе, и удалят не только твои посты, но и тебя вместе с твоей подсетью.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

max-aziat
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 13.06.2005 (Пн) 13:41
Откуда: Таджикистан

Сообщение max-aziat » 13.03.2007 (Вт) 15:25

Amed писал(а):Что ты имел ввиду :"... это не совсем "скрытие от диспетчера задач" ".

если можно, по конкретнее пожалуста
не всё сразу дается ...

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.03.2007 (Сб) 12:14

Давненько был вдали от таких вопросов и пардон, что воще ввязываюсь :oops: , но объясните, что это должно дать?:-)
Вставил приведенный tyomitch'ем код (+ загрузку пустой формы из Main после создания окна и замены адреса процедуры, чтобы прога на том не завершилась). Task Manager запускается потом спокойно...
Есть ли у меня вопрос? У меня всегда есть вопрос

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

Сообщение tyomitch » 24.03.2007 (Сб) 12:29

Если у тебя винда нерусская, то прочитай топик целиком.
Изображение

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.03.2007 (Сб) 12:32

ПРочитал сразу, запускал Таск менеджер, заголовок окна скопировал для CreateWindowEx из Spy++
Есть ли у меня вопрос? У меня всегда есть вопрос

ProgSoldier
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 24
Зарегистрирован: 24.12.2005 (Сб) 0:17
Откуда: Украина

Сообщение ProgSoldier » 29.03.2007 (Чт) 3:06

У вас вспоминалось замена таскменеджера:
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe"

А как можно обойти это?
Если страуса пугать с частотой 50 раз в секунду, то его можно использовать как отбойный молоток

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

Сообщение tyomitch » 29.03.2007 (Чт) 9:56

В каком смысле, обойти?
Запретить изменение этого ключа?
Например, установив ACL "никому ничего".
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.03.2007 (Чт) 11:54

Ну чтение-то оставь...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

След.

Вернуться в Раздел для Профессионалов

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList  
cron