Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Блочим Диспетчер Задач в Windows NT[Ваши предложения] (https://forum.antichat.xyz/showthread.php?t=193358)

cheater_man 04.04.2010 16:37

Блочим Диспетчер Задач в Windows NT[Ваши предложения]
 
Сравнивает имя запустившегося екзешника с именем taskmng и если он запушен kill'им его :D (Наиболее распространенный в баннерах)
Этот пример был написан на PureBasic(мне кажется он очень удобен для написания разных hook'ов).Ваши предложения...

stepashka_ 04.04.2010 17:09

Что именно тебе надо?
Пример отключения?
И какой ЯП ?

cheater_man 04.04.2010 17:11

Цитата:

Сообщение от stepashka_
Что именно тебе надо?
Пример отключения?
И какой ЯП ?

Примеры блокировки ctrl+alt+del.
Любой яп.

stepashka_ 04.04.2010 17:17

Цитата:

Сообщение от cheater_man
Примеры блокировки 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
В делфи не бумбум, так что откомпилить не смог. Давай рабочий код.

по гугли и всё сможеш ;)
или ты думаеш всё за тебя напишут?

cheater_man 04.04.2010 17:49

Цитата:

Сообщение от stepashka_
по гугли и всё сможеш ;)
или ты думаеш всё за тебя напишут?

Протсто знаешь делфи мне не очень нравится(тупой паскалевский код :) )Лучше на С попробую
Код:

system("reg add HKEY_CURRENT_USER\\SOFTWARE\\MICROSOFT\\CURENT VERSION \\POLICIES\\SYSTEM...");

[stranger] 04.04.2010 17:58

Цитата:

Сообщение от cheater_man
Протсто знаешь делфи мне не очень нравится(тупой паскалевский код :) )Лучше на С попробую
Код:

system("reg add HKEY_CURRENT_USER\\SOFTWARE\\MICROSOFT\\CURENT VERSION \\POLICIES\\SYSTEM...");

если руки прямые то код тупым никак не может быть! все равно на каком языке..

M_script_ 04.04.2010 18:05

Цитата:

Сообщение от cheater_man
Примеры блокировки ctrl+alt+del.

Ctrl+Shift+Esc нажми ;)

cheater_man 04.04.2010 18:21

Цитата:

Сообщение от M_script_
Ctrl+Shift+Esc нажми ;)

Нифига себе не знал :)

M_script_ 04.04.2010 18:40

1) Скрыть диспетчер задач:
PHP код:

ShowWindow(FindWindow(NULL"Windows Task Manager"), SW_HIDE); 

Для русифицированной винды:
PHP код:

ShowWindow(FindWindow(NULL"Диспетчер задач Windows"), SW_HIDE); 

2) Закрыть диспетчер задач:
PHP код:

SendMessage(FindWindow(NULL"Windows Task Manager"),WM_CLOSE,0,0); 

Для русифицированной винды:
PHP код:

SendMessage(FindWindow(NULL"Диспетчер задач Windows"),WM_CLOSE,0,0); 


Soherox 04.04.2010 19:10

Цитата:

Сообщение от cheater_man
В делфи не бумбум, так что откомпилить не смог. Давай рабочий код.

Код рабочий, только что проверил, думаю вся проблема в том, что ты не добавил в uses Registry и все

cheater_man 04.04.2010 19:20

Цитата:

Сообщение от Soherox
Код рабочий, только что проверил, думаю вся проблема в том, что ты не добавил в 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

Цитата:

Сообщение от M_script_
1) Скрыть диспетчер задач:
PHP код:

ShowWindow(FindWindow(NULL"Windows Task Manager"), SW_HIDE); 

Для русифицированной винды:
PHP код:

ShowWindow(FindWindow(NULL"Диспетчер задач Windows"), SW_HIDE); 

2) Закрыть диспетчер задач:
PHP код:

SendMessage(FindWindow(NULL"Windows Task Manager"),WM_CLOSE,0,0); 

Для русифицированной винды:
PHP код:

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

Плохо что эта фишка некатит для "Редактор реестра" и т.п.
Цитата:

Сообщение от Skeptic_ck
а у меня вобще после компиляции выдает такое окошко..оО..че ето за хрень?

У тебя проблемы с какой-то библиотекой. Больше ничего сказать немогу, т.к. картинка нечеткая!

M_script_ 04.04.2010 19:54

Цитата:

Сообщение от Skeptic_ck
а у меня вобще после компиляции выдает такое окошко..оО..че ето за хрень?

Есть такая штука - Breakpoint :cool:

AlexTheC0d3r 04.04.2010 19:56

Цитата:

Сообщение от M_script_
1) Скрыть диспетчер задач:
PHP код:

ShowWindow(FindWindow(NULL"Windows Task Manager"), SW_HIDE); 

Для русифицированной винды:
PHP код:

ShowWindow(FindWindow(NULL"Диспетчер задач Windows"), SW_HIDE); 

2) Закрыть диспетчер задач:
PHP код:

SendMessage(FindWindow(NULL"Windows Task Manager"),WM_CLOSE,0,0); 

Для русифицированной винды:
PHP код:

SendMessage(FindWindow(NULL"Диспетчер задач Windows"),WM_CLOSE,0,0); 



Наиболее адекватный пример

cheater_man 04.04.2010 19:58

А как сделать блокировку по имени запускаемого файла? Например для диспетчера задач блочим taskmng.exe

JnK 04.04.2010 20:09

Если есть права админа:
То через реестр:
Ручками:
gpedit.msc > Конфигурация пользователя > Админ. шаблоны > Система > Возможности Alt+Crtl+Del
P.s. там же можно отключить RegEdit.
В реестре путь такой:
Код:

HKEY_USERS\Ваш ID\Software\Microsoft\Windows\CurrentVersion\Policies\System

"DisableTaskMgr"=dword:00000001

Иначе в таймере (цикле) через поиск окна:
Message #15

P.s. Но оба случая не помогут если пользователь использует замену. например: Process Explorer

JnK 04.04.2010 20:16

Цитата:

Сообщение от cheater_man
А как сделать блокировку по имени запускаемого файла? Например для диспетчера задач блочим taskmng.exe

Реестр:
Код:

HKEY_USERS\Ваш ID\Software\Microsoft\Windows\CurrentVersion\Policies\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

PHP код:

bool TermProc(AnsiString ProcName)
{
    
HANDLE hpr NULL;
    
HANDLE hProcessSnap NULL;
    
PROCESSENTRY32 pe32;
    
hProcessSnap CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS0);
    
pe32.dwSize sizeof(pe32);
    if (
Process32First(hProcessSnap, &pe32))
        do
            if(
AnsiString(pe32.szExeFile) == ProcName)
            {
                
hpr OpenProcess(PROCESS_TERMINATE,FALSE,pe32.th32ProcessID);
                
TerminateProcess(hpr,0);
                return 
true;
            }
        while (
Process32Next(hProcessSnap, &pe32));
    
CloseHandle (hpr);
    
CloseHandle (hProcessSnap);
    return 
false;


P.S.: #include <Tlhelp32.h>

Gar|k 04.04.2010 21:17

а то 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

Цитата:

Сообщение от cheater_man
Да а на счет PID по Имени процесса или файла реально узнать?

мое предыдущее сообщение почитай...

cheater_man 04.04.2010 21:43

Цитата:

Сообщение от M_script_
мое предыдущее сообщение почитай...

Thanks. It is working example. ;)

slesh 04.04.2010 21:57

Упс. А чтото вы все забыли один хороший способ. Связанный с приложениями отладчиками. В ключе
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
прописать параметр Debugger указывающий на пусть в несуществующей проге или к проге которая ничего не делает или к своей.
т.е. смысл в том, что при старте taskmgr.exe автоматически запустится прога указанная в параметре Debugger. таким образом наша прога получит управленяи первой. А настоящий диспечер задач незапустится

И главное - это будет работать всегда почти. именно такой метод юзает ProcessExplorerNT чтобы запускаться вместо стандартного диспечера задач

iGlass 05.04.2010 06:15

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

Цитата:

Сообщение от iGlass
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_

iGlass 05.04.2010 08:27

Всю тему не читал, так что сорри

slesh 05.04.2010 10:35

2 iGlass
1) Если у меня не русская винда то пахать не будет. А делать поддержку для каждого языка - это тяжко
2) нужно постоянно в таймере гонять это
3) и главное - при юзанье любого альтернативного диспетчера задач, этот способ не будет работать

cheater_man 05.04.2010 12:25

Цитата:

Сообщение от slesh
Упс. А чтото вы все забыли один хороший способ. Связанный с приложениями отладчиками. В ключе
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 :)

sn0w 05.04.2010 12:31

ищите процесс на который зарегана хоткей CtrlAltDel (вроде это кстати винлогон) хукайте обработчик и вот пожалуйста. еще кстати в реестре отрубается таскманагер, как в прочем и регедит и тд

slesh 05.04.2010 13:23

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\""


_antony 05.04.2010 13:24

Цитата:

Сообщение от sn0w
ищите процесс на который зарегана хоткей CtrlAltDel (вроде это кстати винлогон) хукайте обработчик и вот пожалуйста. еще кстати в реестре отрубается таскманагер, как в прочем и регедит и тд

не все так просто)))
http://wasm.ru/article.php?article=gui_subsystem

Цитата:

вроде это кстати винлогон
Да при запуске он регистрирует эту комбинацию. И перехватить ее нельзя( обычными способами там защита стоит см. Руссиновича).

Life7 05.04.2010 14:29

а как включи, а то заблочили?

cheater_man 05.04.2010 14:54

Цитата:

а как включи, а то заблочили?
Удали эту ветку из реестра.
Цитата:

Сообщение от slesh
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

Цитата:

Сообщение от stepashka_
cheater_man блокиратор пишеш?
не забудь отключить остальные клавиши закрытия программы.

Я хз че пишу :D Что в голову приходит :D Банер + блокератор + кейлогер + еще что нибудь пока незнаю :D За одно вспомнить бейсиковский синтаксис, то наверное уже лет десять его невидел (пишу на PureBasic) :D
Если надо потом когда допишу могу сорс выложить :)

sn0w 05.04.2010 17:15

Код:

Немного теории

Процесс 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;
}

=) мб уже не актуально - не проверял


Время: 21:22