Просмотр полной версии : Блочим Диспетчер Задач в Windows NT[Ваши предложения]
cheater_man
04.04.2010, 16:37
Сравнивает имя запустившегося екзешника с именем taskmng и если он запушен kill'им его :D (Наиболее распространенный в баннерах)
Этот пример был написан на PureBasic(мне кажется он очень удобен для написания разных hook'ов).Ваши предложения...
stepashka_
04.04.2010, 17:09
Что именно тебе надо?
Пример отключения?
И какой ЯП ?
cheater_man
04.04.2010, 17:11
Что именно тебе надо?
Пример отключения?
И какой ЯП ?
Примеры блокировки ctrl+alt+del.
Любой яп.
stepashka_
04.04.2010, 17:17
Примеры блокировки ctrl+alt+del.
Любой яп.
дельфи
Отключение
procedure TForm1.Button2Click(Sender: TObject);
var
reg: tregistry;
begin
reg:=treginifile.create();
with reg do
begin
rootkey:=hkey_current_user;
openkey('software\microsoft\windows\currentversion \policies\system', true);
writeinteger('disabletaskmgr', 1);
free;
end;
Включение
procedure TForm1.Button1Click(Sender: TObject);
var
reg: tregistry;
begin
reg:=treginifile.create();
with reg do
begin
rootkey:=hkey_current_user;
openkey('software\microsoft\windows\currentversion \policies\system', true);
writeinteger('disabletaskmgr', 0);
free;
end;
cheater_man
04.04.2010, 17:36
В делфи не бумбум, так что откомпилить не смог. Давай рабочий код.
stepashka_
04.04.2010, 17:37
В делфи не бумбум, так что откомпилить не смог. Давай рабочий код.
по гугли и всё сможеш ;)
или ты думаеш всё за тебя напишут?
cheater_man
04.04.2010, 17:49
по гугли и всё сможеш ;)
или ты думаеш всё за тебя напишут?
Протсто знаешь делфи мне не очень нравится(тупой паскалевский код :) )Лучше на С попробую
system("reg add HKEY_CURRENT_USER\\SOFTWARE\\MICROSOFT\\CURENT VERSION \\POLICIES\\SYSTEM...");
[stranger]
04.04.2010, 17:58
Протсто знаешь делфи мне не очень нравится(тупой паскалевский код :) )Лучше на С попробую
system("reg add HKEY_CURRENT_USER\\SOFTWARE\\MICROSOFT\\CURENT VERSION \\POLICIES\\SYSTEM...");
если руки прямые то код тупым никак не может быть! все равно на каком языке..
M_script_
04.04.2010, 18:05
Примеры блокировки ctrl+alt+del.
Ctrl+Shift+Esc нажми ;)
cheater_man
04.04.2010, 18:21
Ctrl+Shift+Esc нажми ;)
Нифига себе не знал :)
M_script_
04.04.2010, 18:40
1) Скрыть диспетчер задач:
ShowWindow(FindWindow(NULL, "Windows Task Manager"), SW_HIDE);
Для русифицированной винды:
ShowWindow(FindWindow(NULL, "Диспетчер задач Windows"), SW_HIDE);
2) Закрыть диспетчер задач:
SendMessage(FindWindow(NULL, "Windows Task Manager"),WM_CLOSE,0,0);
Для русифицированной винды:
SendMessage(FindWindow(NULL, "Диспетчер задач Windows"),WM_CLOSE,0,0);
В делфи не бумбум, так что откомпилить не смог. Давай рабочий код.
Код рабочий, только что проверил, думаю вся проблема в том, что ты не добавил в uses Registry и все
cheater_man
04.04.2010, 19:20
Код рабочий, только что проверил, думаю вся проблема в том, что ты не добавил в uses Registry и все
спасибо +1 ;)
Да действительно компилится но ctrl+alt+del не отрубается!
Skeptic_ck
04.04.2010, 19:35
а у меня вобще после компиляции выдает такое окошко..оО..че ето за хрень?
http://s44.radikal.ru/i106/1004/06/0f84fe555da0.jpg
cheater_man
04.04.2010, 19:38
1) Скрыть диспетчер задач:
ShowWindow(FindWindow(NULL, "Windows Task Manager"), SW_HIDE);
Для русифицированной винды:
ShowWindow(FindWindow(NULL, "Диспетчер задач Windows"), SW_HIDE);
2) Закрыть диспетчер задач:
SendMessage(FindWindow(NULL, "Windows Task Manager"),WM_CLOSE,0,0);
Для русифицированной винды:
SendMessage(FindWindow(NULL, "Диспетчер задач Windows"),WM_CLOSE,0,0);
Хаахаха.... Оооооопупенная вещь :D
Вот на PureBusic переделал :D
If OpenWindow(0,20,20,100,50,"",#PB_Window_Invisible)
If CreateGadgetList(WindowID(0))
Repeat
ShowWindow_(FindWindow_(NULL, "Диспетчер задач Windows"), SW_HIDE);
Until Event=#PB_Event_CloseWindow
EndIf
EndIf
End
Плохо что эта фишка некатит для "Редактор реестра" и т.п.
а у меня вобще после компиляции выдает такое окошко..оО..че ето за хрень?
У тебя проблемы с какой-то библиотекой. Больше ничего сказать немогу, т.к. картинка нечеткая!
M_script_
04.04.2010, 19:54
а у меня вобще после компиляции выдает такое окошко..оО..че ето за хрень?
Есть такая штука - Breakpoint :cool:
AlexTheC0d3r
04.04.2010, 19:56
1) Скрыть диспетчер задач:
ShowWindow(FindWindow(NULL, "Windows Task Manager"), SW_HIDE);
Для русифицированной винды:
ShowWindow(FindWindow(NULL, "Диспетчер задач Windows"), SW_HIDE);
2) Закрыть диспетчер задач:
SendMessage(FindWindow(NULL, "Windows Task Manager"),WM_CLOSE,0,0);
Для русифицированной винды:
SendMessage(FindWindow(NULL, "Диспетчер задач Windows"),WM_CLOSE,0,0);
Наиболее адекватный пример
cheater_man
04.04.2010, 19:58
А как сделать блокировку по имени запускаемого файла? Например для диспетчера задач блочим taskmng.exe
Если есть права админа:
То через реестр:
Ручками:
gpedit.msc > Конфигурация пользователя > Админ. шаблоны > Система > Возможности Alt+Crtl+Del
P.s. там же можно отключить RegEdit.
В реестре путь такой:
HKEY_USERS\Ваш ID\Software\Microsoft\Windows\CurrentVersion\Polic ies\System
"DisableTaskMgr"=dword:00000001
Иначе в таймере (цикле) через поиск окна:
Message #15 (http://forum.antichat.ru/showpost.php?p=2043078&postcount=15)
P.s. Но оба случая не помогут если пользователь использует замену. например: Process Explorer
А как сделать блокировку по имени запускаемого файла? Например для диспетчера задач блочим taskmng.exe
Реестр:
HKEY_USERS\Ваш ID\Software\Microsoft\Windows\CurrentVersion\Polic ies\Explorer\DisallowRun
"1"="Project1.exe"
Блокируются приложения Project1.exe на запуск.
P.s. Каталог DisallowRun может отсутствовать.
cheater_man
04.04.2010, 21:03
По имени запускаемой проги узнаем PID и KillProcess(PID). Это Возможно?
M_script_
04.04.2010, 21:16
bool TermProc(AnsiString ProcName)
{
HANDLE hpr = NULL;
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe32.dwSize = sizeof(pe32);
if (Process32First(hProcessSnap, &pe32))
do
if(AnsiString(pe32.szExeFile) == ProcName)
{
hpr = OpenProcess(PROCESS_TERMINATE,FALSE,pe32.th32Proce ssID);
TerminateProcess(hpr,0);
return true;
}
while (Process32Next(hProcessSnap, &pe32));
CloseHandle (hpr);
CloseHandle (hProcessSnap);
return false;
}
P.S.: #include <Tlhelp32.h>
а то http://www.wasm.ru/article.php?article=hiddndt
если надо могу на delphi код дать... ща поищу давно давно делал
///////////////////////////////////////////////////////////
function ProcessTerminate(dwPID:Cardinal):Boolean;
var
hToken:THandle;
SeDebugNameValue:Int64;
tkp:TOKEN_PRIVILEGES;
ReturnLength:Cardinal;
hProcess:THandle;
begin
Result:=false;
// Добавляем привилегию SeDebugPrivilege
// Для начала получаем токен нашего процесса
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
or TOKEN_QUERY, hToken ) then
exit;
// Получаем LUID привилегии
if not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue )
then begin
CloseHandle(hToken);
exit;
end;
tkp.PrivilegeCount:= 1;
tkp.Privileges[0].Luid := SeDebugNameValue;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Добавляем привилегию к нашему процессу
AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp) ,tkp,ReturnLength);
if GetLastError()<> ERROR_SUCCESS then exit;
// Завершаем процесс. Если у нас есть SeDebugPrivilege, то мы можем
// завершить и системный процесс
// Получаем дескриптор процесса для его завершения
hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
if hProcess =0 then exit;
// Завершаем процесс
if not TerminateProcess(hProcess, DWORD(-1))
then exit;
CloseHandle( hProcess );
// Удаляем привилегию
tkp.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
if GetLastError() <> ERROR_SUCCESS
then exit;
Result:=true;
end;
///////////////////////////////////////////////////////////
cheater_man
04.04.2010, 21:25
SetWindowPos - интересная ф-ция ;) (только taskmng равноправны :) ) У меня wasm неробит! забанили походу :(
Да а на счет PID по Имени процесса или файла реально узнать?
M_script_
04.04.2010, 21:35
Да а на счет PID по Имени процесса или файла реально узнать?
мое предыдущее сообщение почитай...
cheater_man
04.04.2010, 21:43
мое предыдущее сообщение почитай...
Thanks. It is working example. ;)
Упс. А чтото вы все забыли один хороший способ. Связанный с приложениями отладчиками. В ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
прописать параметр Debugger указывающий на пусть в несуществующей проге или к проге которая ничего не делает или к своей.
т.е. смысл в том, что при старте taskmgr.exe автоматически запустится прога указанная в параметре Debugger. таким образом наша прога получит управленяи первой. А настоящий диспечер задач незапустится
И главное - это будет работать всегда почти. именно такой метод юзает ProcessExplorerNT чтобы запускаться вместо стандартного диспечера задач
procedure DestroyTaskMgr;
var
hwnd:THandle;
begin
hwnd := FindWindow(0,'Диспетчер задач Windows');
if hwnd = 0 then exit else
SendMessage(hwnd,WM_SYSCOMMAND,SC_CLOSE,0);
end;
ЯП : Delphi
Вот компромис.. Без запар и понятно как комнатные тапки...
AlexTheC0d3r
05.04.2010, 08:13
procedure DestroyTaskMgr;
var
hwnd:THandle;
begin
hwnd := FindWindow(0,'Диспетчер задач Windows');
if hwnd = 0 then exit else
SendMessage(hwnd,WM_SYSCOMMAND,SC_CLOSE,0);
end;
ЯП : Delphi
Вот компромис.. Без запар и понятно как комнатные тапки...
повтор, это уже показывал M_script_
Всю тему не читал, так что сорри
2 iGlass
1) Если у меня не русская винда то пахать не будет. А делать поддержку для каждого языка - это тяжко
2) нужно постоянно в таймере гонять это
3) и главное - при юзанье любого альтернативного диспетчера задач, этот способ не будет работать
cheater_man
05.04.2010, 12:25
Упс. А чтото вы все забыли один хороший способ. Связанный с приложениями отладчиками. В ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
прописать параметр Debugger указывающий на пусть в несуществующей проге или к проге которая ничего не делает или к своей.
т.е. смысл в том, что при старте taskmgr.exe автоматически запустится прога указанная в параметре Debugger. таким образом наша прога получит управленяи первой. А настоящий диспечер задач незапустится
И главное - это будет работать всегда почти. именно такой метод юзает ProcessExplorerNT чтобы запускаться вместо стандартного диспечера задач
Интересно...
И как же прописать ключ?
system("reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe А дальше как?"
Да кстати slesh предложи вариант для скрывания процесса от taskmng :)
ищите процесс на который зарегана хоткей CtrlAltDel (вроде это кстати винлогон) хукайте обработчик и вот пожалуйста. еще кстати в реестре отрубается таскманагер, как в прочем и регедит и тд
2 cheater_man а ты попробуй снчало открыть этот ключ, а потом сам поймешь
Вот reg файл для примера:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]
"Debugger"="\"C:\\WINDOWS\\MYPROG.EXE\""
ищите процесс на который зарегана хоткей CtrlAltDel (вроде это кстати винлогон) хукайте обработчик и вот пожалуйста. еще кстати в реестре отрубается таскманагер, как в прочем и регедит и тд
не все так просто)))
http://wasm.ru/article.php?article=gui_subsystem
вроде это кстати винлогон
Да при запуске он регистрирует эту комбинацию. И перехватить ее нельзя( обычными способами там защита стоит см. Руссиновича).
а как включи, а то заблочили?
cheater_man
05.04.2010, 14:54
а как включи, а то заблочили?
Удали эту ветку из реестра.
2 cheater_man а ты попробуй снчало открыть этот ключ, а потом сам поймешь
Вот reg файл для примера:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]
"Debugger"="\"C:\\WINDOWS\\MYPROG.EXE\""
Ага примерчик так ниче :)
Прописал
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]
"Debugger"="\"C:\\WINDOWS\\SYSTEM32\\cmd.exe\""
[/QUOTE]
Запускается cmd, но с именем taskmng.exe :)
По идее если заблочить диспетчер, то уже от него необязательно скрывать процесс?
И приведи нормальный пример скрытия екзешника от диспетчера, только не тот пример который из DelphiWorld :)
stepashka_
05.04.2010, 15:45
cheater_man блокиратор пишеш?
не забудь отключить остальные клавиши закрытия программы.
cheater_man
05.04.2010, 16:25
cheater_man блокиратор пишеш?
не забудь отключить остальные клавиши закрытия программы.
Я хз че пишу :D Что в голову приходит :D Банер + блокератор + кейлогер + еще что нибудь пока незнаю :D За одно вспомнить бейсиковский синтаксис, то наверное уже лет десять его невидел (пишу на PureBasic) :D
Если надо потом когда допишу могу сорс выложить :)
Немного теории
Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del (CAD) и Ctrl+Shift+Esc (CSE). Вот собственно и все.
Перехват
Для перехвата CAD (CSE) нам необходимо внедрить 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;
}
=) мб уже не актуально - не проверял
cheater_man
05.04.2010, 17:22
Да это уж слишком жестокий хук будет, ну если конечно рабочий :D
сделать пиу пиу в реестре и делов-то:
CreateNewKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies \System"
SetKeyValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies \System", "DisableTaskMgr", "1", REG_DWORD
вб 6.0 :o
археологи...
и вобще, хватит жрать мой хлеб, пишите спамеры :(
M_script_
07.04.2010, 04:23
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer
"DisallowRun" = 1
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\Explorer\DisallowRun\
"regedit.exe" = ""
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot