Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Диспетчер задач

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Диспетчер задач
Имя
Сообщение << Старые топики   Новые топики >>
Диспетчер задач - 2007-01-30 18:42:28.626666   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
   Как убрать свою Delphi программу с вкладки процессы в диспетчере задач Windows?
Post #: 1
RE: Диспетчер задач - 2007-01-30 19:28:54.693333   
Apache

Сообщений: 153
Оценки: 0
Присоединился: 2006-10-13 10:02:03.070000
Делай резидент
Post #: 2
RE: Диспетчер задач - 2007-02-01 00:05:57.833333   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
можно поподробнее как это сделать давно интересует.. Использую C++Builder 6 or Visual Studio 2005
Post #: 3
RE: Диспетчер задач - 2007-02-03 21:23:22.056666   
fremax

Сообщений: 43
Оценки: 0
Присоединился: 2007-01-26 14:48:58.293333
У меня вот пример завалялся:
Убирает программу из списка ALT+CTRL+DEL
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin //Hide
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //Show
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;



Сам еще не пробывал. Если сработает, скажи.
Post #: 4
RE: Диспетчер задач - 2007-02-06 03:18:04.293333   
FeraS

Сообщений: 85
Оценки: 0
Присоединился: 2004-11-01 14:27:37
sinker
В БЗ DelphiWorld про это много написано: http://delphiworld.narod.ru/
Post #: 5
RE: Диспетчер задач - 2007-02-06 23:09:26.236666   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
 
quote:

ORIGINAL: FeraS

sinker
В БЗ DelphiWorld про это много написано: http://delphiworld.narod.ru/

  
   Лично я там ничего полезного на ету тему не нашел. Возможно, плохо искал…
Post #: 6
RE: Диспетчер задач - 2007-02-07 09:21:56.120000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
quote:

ORIGINAL: fremax

У меня вот пример завалялся:
Убирает программу из списка ALT+CTRL+DEL
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin //Hide
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin //Show
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;



Сам еще не пробывал. Если сработает, скажи.


Win9x only! если надо под NT скрыть - иши в гугле статьи ms-rem'a по перехвату
апи функций - много полезного
ЗЫ: читай его 3-ю статью - "Ring0"
Post #: 7
RE: Диспетчер задач - 2007-02-07 23:07:32.396666   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
у меня был пример типо регистрации как процесса только он не работает под ХР

#include &lt;iostream.h&gt; #include &lt;windows.h&gt; BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType); int main(){ HINSTANCE hKernel; int i=1; //Пытаемся получить идентификатор загруженной библиотеки hKernel=LoadLibrary("KERNEL32.DLL"); if(hKernel){ //Идентификатор загруженной библиотеки был успешно получен cout&lt;&lt;"Success load library kernel32.dll"&lt;&lt; endl; RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))GetProcAddress(hKernel,"RegisterServiceProcess"); if(RegisterServiceProcess){ //Указатель на функцию RegisterServiceProcess был //успешно получен. cout&lt;&lt;"Success to have address of the specified exported dynamic-link library (DLL) function"&lt;&lt; endl; if(RegisterServiceProcess(GetCurrentProcessId(),i)) cout&lt;&lt;"Success registers the process as a service process"&lt;&lt; endl; //Процесс был успешно зарегестрирован как сервис }else{ //Указатель на функцию RegisterServiceProcess не //был успешно получен. cout&lt;&lt;"Failed to have address of the specified exported dynamic-link library (DLL) function"&lt;&lt; endl; cin&gt;&gt;i; return 0; } }else{ //Идентификатор загруженной библиотеки не был получен cout&lt;&lt;"Failed load library kernel32.dll"&lt;&lt; endl; cin&gt;&gt;i; return 0; } cout&lt;&lt;"Registers the process as a service process:1"&lt;&lt; endl; cout&lt;&lt;"Unregisters the process as a service process:0"&lt;&lt; endl; cin&gt;&gt;i; if (RegisterServiceProcess(GetCurrentProcessId(),i)){ cout&lt;&lt;"Success"&lt;&lt; endl; }else{ cout&lt;&lt;"Failed"&lt;&lt; endl; } cin&gt;&gt;i; return 0; }
может это у меня косяк… кто разберется пишите
Post #: 8
RE: Диспетчер задач - 2007-02-08 10:38:22.500000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000

quote:

ORIGINAL: halkfild

у меня был пример типо регистрации как процесса только он не работает под ХР

#include &lt;iostream.h&gt; #include &lt;windows.h&gt; BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType); int main(){ HINSTANCE hKernel; int i=1; //Пытаемся получить идентификатор загруженной библиотеки hKernel=LoadLibrary("KERNEL32.DLL"); if(hKernel){ //Идентификатор загруженной библиотеки был успешно получен cout&lt;&lt;"Success load library kernel32.dll"&lt;&lt; endl; RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))GetProcAddress(hKernel,"RegisterServiceProcess"); if(RegisterServiceProcess){ //Указатель на функцию RegisterServiceProcess был //успешно получен. cout&lt;&lt;"Success to have address of the specified exported dynamic-link library (DLL) function"&lt;&lt; endl; if(RegisterServiceProcess(GetCurrentProcessId(),i)) cout&lt;&lt;"Success registers the process as a service process"&lt;&lt; endl; //Процесс был успешно зарегестрирован как сервис }else{ //Указатель на функцию RegisterServiceProcess не //был успешно получен. cout&lt;&lt;"Failed to have address of the specified exported dynamic-link library (DLL) function"&lt;&lt; endl; cin&gt;&gt;i; return 0; } }else{ //Идентификатор загруженной библиотеки не был получен cout&lt;&lt;"Failed load library kernel32.dll"&lt;&lt; endl; cin&gt;&gt;i; return 0; } cout&lt;&lt;"Registers the process as a service process:1"&lt;&lt; endl; cout&lt;&lt;"Unregisters the process as a service process:0"&lt;&lt; endl; cin&gt;&gt;i; if (RegisterServiceProcess(GetCurrentProcessId(),i)){ cout&lt;&lt;"Success"&lt;&lt; endl; }else{ cout&lt;&lt;"Failed"&lt;&lt; endl; } cin&gt;&gt;i; return 0; }
может это у меня косяк… кто разберется пишите


Ты глянь на 4 пост - там тоже самое написано
Post #: 9
RE: Диспетчер задач - 2007-02-08 12:29:22.416666   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
да.. сорри…

но вопрос остается открытым.. так как решение скрития процесса еще не нашел..
Post #: 10
RE: Диспетчер задач - 2007-02-08 12:50:50.210000   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
усе…:D:D

нашел то что искал…
typedef int(_cdecl *MYPROC)(DWORD);
HINSTANCE hDll; hDll = LoadLibrary("HookNTQSI.dll"); if(hDll == NULL) { MessageBox(0, "dll не найдена!", "", MB_OK); //return 0; } MYPROC Proc = (MYPROC)::GetProcAddress(hDll, "Hook"); Proc(GetCurrentProcessId()); Sleep(INFINITE);
и надо еще вот эта длл

quote:

HookNTQSI.dll


если надо пишите выкину код самой длл
Post #: 11
RE: Диспетчер задач - 2007-02-08 18:58:04.786666   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
  Если работает под ХР то код ДЛЛ мне бы не помешал. Жаль, правда, что не на Дeльфи…
Post #: 12
RE: Диспетчер задач - 2007-02-08 20:54:05.383333   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000

quote:

ORIGINAL: halkfild

да.. сорри…

но вопрос остается открытым.. так как решение скрития процесса еще не нашел..

еще раз прочитай 7 пост - там все понятно написано как скрыть процесс
Post #: 13
RE: Диспетчер задач - 2007-02-08 22:45:53.520000   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
quote:

HookApi.cpp

#include &lt;windows.h&gt; #pragma hdrstop #include &lt;Winnt.h&gt; #include &lt;winbase.h&gt; #include &lt;stdio.h&gt; #include &lt;Tlhelp32.h&gt; #define _DLL_ #include "HookApi.h" #include "HookClass.h" //--------------------------------------------------------------------------- //NtQuerySystemInformation typedef struct _THREAD_INFO { LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER CreateTime; ULONG WaitTime; DWORD dwStartAddress; DWORD dwOwnerPID; DWORD dwThreadId; DWORD dwCurrentPriority; DWORD dwBasePriority; DWORD dwContextSwitches; DWORD dwThreadState; DWORD dwWaitReason; DWORD dwReserved; }THREADINFO, *PTHREADINFO; typedef struct _UNICODE_STRING { USHORT Length; USHORT MaxLength; PWSTR Buffer; } UNICODE_STRING; typedef struct _PROCESS_INFO { DWORD dwOffset; DWORD dwThreadsCount; DWORD dwUnused1[6]; LARGE_INTEGER CreateTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; UNICODE_STRING ProcessName; DWORD dwBasePriority; DWORD dwProcessID; DWORD dwParentProcessId; DWORD dwHandleCount; DWORD dwUnused3[2]; DWORD dwVirtualBytesPeak; DWORD dwVirtualBytes; ULONG dwPageFaults; DWORD dwWorkingSetPeak; DWORD dwWorkingSet; DWORD dwQuotaPeakPagedPoolUsage; DWORD dwQuotaPagedPoolUsage; DWORD dwQuotaPeakNonPagedPoolUsage; DWORD dwQuotaNonPagedPoolUsage; DWORD dwPageFileUsage; DWORD dwPageFileUsagePeak; DWORD dCommitCharge; THREADINFO ThreadSysInfo[1]; } PROCESSINFO, *PPROCESSINFO; typedef long (__stdcall *PNTQUERYSYSTEMINFORMATION)(DWORD,PVOID,ULONG,PULONG); long __stdcall MyNtQuerySystemInformation( DWORD SysInformatoinClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength OPTIONAL); TAPIHook *NtQuerySystemInformationHook = NULL; //--------------------------------------------------------------------------- //HHOOK hCallWndHook = NULL; LRESULT CALLBACK CallWndHook(int nCode,WPARAM wParam,LPARAM lParam); //--------------------------------------------------------------------------- //ХвёцЦµЦ»УГАґµчУГSetWindowsHookEx HINSTANCE hInst; #pragma data_seg("SHAREDATA") HHOOK hCallWndHook = NULL; DWORD dwSelfProcessID = -1; #pragma data_seg() #pragma comment(linker,"/section:SHAREDATA,RWS") //ОЄБЛРиТЄЈ¬DLLТ»Жф¶ЇѕНЧФ¶ЇHookБЛGetProcAddressЎўLoadLibraryAЎўLoadLibraryWЎў //LoadLibraryExAЎўLoadLibraryExWХв5ёцєЇКэЈЁјыHookClass.CppЈ©ЎЈµ±µчУГUnhookЦ®єуЈ¬ //ХвёцDLLЅ«ФЪ±рµДЅшіМЦРР¶ФШЈ¬µ«КЗ¶ФУЪ±ѕЅшіМАґЛµЎЈDLLІўГ»УРВнЙПР¶ФШЈ¬ЛщТФДЗјёёц //HookИФИ»ЖрЧчУГЈ¬ОЄБЛКµПЦХжХэТвТеЙПµДUnohokЈ¬ЙиЦГБЛХвёц±кЦѕЈ¬ФЪДЗјёёцHookАп±Я //Ѕ«јмІйХвёц±кЦѕЈ¬ТФ±нГчКЗ·сЅшРРHookЎЈ bool IsHook = false; //ЅшРРКµјКµДHookµчУГ int __fastcall HookFunc(); int __fastcall UnhookFunc(); //--------------------------------------------------------------------------- //#pragma argsused BOOL APIENTRY DllMain( HANDLE hModule, DWORD reason, LPVOID lpReserved) { hInst = (HINSTANCE)hModule; if(reason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hInst); __try { if(dwSelfProcessID != -1) HookFunc(); } __except(EXCEPTION_EXECUTE_HANDLER) {/* Do nothing */} } else if(reason == DLL_PROCESS_DETACH) { __try { UnhookFunc(); } __except(EXCEPTION_EXECUTE_HANDLER) {/* Do nothing */} } return TRUE; } //--------------------------------------------------------------------------- //Hook DLL_EXP_IMP int _cdecl Hook(DWORD dwSelfProcessID_P) { dwSelfProcessID = dwSelfProcessID_P; if(hCallWndHook == NULL) hCallWndHook = SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)CallWndHook,hInst,0); // HookЦё¶ЁµДєЇКэ HookFunc(); return 1; } //--------------------------------------------------------------------------- //Unhook DLL_EXP_IMP int _cdecl Unhook() { if(hCallWndHook != NULL) { UnhookWindowsHookEx(hCallWndHook); hCallWndHook = NULL; } // UnhookЦё¶ЁµДєЇКэ UnhookFunc(); return 1; } //--------------------------------------------------------------------------- int __fastcall HookFunc() { IsHook = true; SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); NtQuerySystemInformationHook = new TAPIHook("NTDLL.DLL","NtQuerySystemInformation", (PROC)MyNtQuerySystemInformation,true); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL); return 1; } //--------------------------------------------------------------------------- int __fastcall UnhookFunc() { //¶ФУЪЦчіМРт±ѕЙнЈ¬НЁ№эХвёц±кЦѕїЙТФ±ЈЦ¤ФЪГ»УРНЛіцЦчіМРтµДК±єтТІДЬUnhookЎЈ IsHook = false; if(NtQuerySystemInformationHook != NULL) { delete NtQuerySystemInformationHook; NtQuerySystemInformationHook = NULL; } return 1; } //--------------------------------------------------------------------------- //ПыПўHookЈ¬І»ЧцИОєОКВЈ¬Ц»КЗОЄБЛјУФШDLLµЅ±рµДЅшіМ LRESULT CALLBACK CallWndHook(int nCode,WPARAM wParam,LPARAM lParam) { if(nCode &lt; 0) return CallNextHookEx(hCallWndHook,nCode,wParam,lParam); // Do nothing return 0; } //--------------------------------------------------------------------------- /*--------------------------------------------------------------------------- ЧФ¶ЁТеµДєЇКэґъВл //-------------------------------------------------------------------------*/ //--------------------------------------------------------------------------- long __stdcall MyNtQuerySystemInformation( DWORD SysInformatoinClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength OPTIONAL) { long Result; Result = ((PNTQUERYSYSTEMINFORMATION)(PROC)(*NtQuerySystemInformationHook)) (SysInformatoinClass,SystemInformation,SystemInformationLength,ReturnLength); //Т»¶ЁТЄК№УГЅб№№»ЇТміЈґ¦АнЈ¬·сФтѕНУРїЙДЬіцПЦТміЈ¶Ф»°їтЎЈ __try { if(SysInformatoinClass == 5 && Result == 0 /* STATUS_SUCCESS */) { PPROCESSINFO pProcessInfo; PPROCESSINFO pPrevProcessInfo; pProcessInfo = (PPROCESSINFO)SystemInformation; pPrevProcessInfo = pProcessInfo; while(true) { if(pProcessInfo != NULL && pProcessInfo-&gt;dwProcessID == dwSelfProcessID) { if(pProcessInfo-&gt;dwOffset == 0) pPrevProcessInfo-&gt;dwOffset = 0; else pPrevProcessInfo-&gt;dwOffset = pPrevProcessInfo-&gt;dwOffset + pProcessInfo-&gt;dwOffset; break; } if(pProcessInfo-&gt;dwOffset == 0) break; pPrevProcessInfo = pProcessInfo; pProcessInfo = (PPROCESSINFO)((byte*)pProcessInfo + pProcessInfo-&gt;dwOffset); } } } __except(EXCEPTION_EXECUTE_HANDLER) { /*/ ·ўЙъТміЈЈ¬µ«КЗІ»±ШЧцИОєОКВ ::MessageBox(NULL,"Exception Occured at self-defined function :(",NULL,MB_OK | MB_ICONWARNING); //*/ } return Result; } //---------------------------------------------------------------------------
вот как обещал..8|
Post #: 14
RE: Диспетчер задач - 2007-02-08 22:58:00.730000   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
   Спасибо!
Post #: 15
RE: Диспетчер задач - 2007-02-08 23:45:48.776666   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
всегда приятно когда тебе отвечают… ане просто игнорируют:)8|
Post #: 16
RE: Диспетчер задач - 2007-02-13 09:58:51.140000   
Apache

Сообщений: 153
Оценки: 0
Присоединился: 2006-10-13 10:02:03.070000
&nbsp;procedure TForm1.Button1Click(Sender: TObject); begin &nbsp;ShowWindow(Handle,SW_HIDE); &nbsp;ShowWindow(Application.Handle,SW_HIDE); end;  
Только в процессах светится
Post #: 17
RE: Диспетчер задач - 2007-02-13 10:02:05.773333   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
это только скрывает в трей…:)
Post #: 18
RE: Диспетчер задач - 2007-02-13 10:51:00.330000   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
quote:

ORIGINAL: Apache
Только в процессах светится

Только в процессах он не должен светиться:)
Post #: 19
RE: Диспетчер задач - 2007-02-19 10:29:13.393333   
grenot

Сообщений: 17
Оценки: 0
Присоединился: 2006-11-21 12:14:26.466666
uses windows,messages,classes…
procedure RegisterServiceProcess;stdcall;external 'kernel32.dll'

procedure hiding;
begin
asm
  push 0
  push 1
  call RegisterServiceProcess
end;
end;
Post #: 20
RE: Диспетчер задач - 2007-02-19 22:30:34.630000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000

quote:

ORIGINAL: grenot

uses windows,messages,classes…
procedure RegisterServiceProcess;stdcall;external 'kernel32.dll'

procedure hiding;
begin
asm
push 0
push 1
call RegisterServiceProcess
end;
end;

бля время 9х винд уже прошло! проснитесь!! какой нах RegisterServiceProcess??!
если надо под NT скрыть - иши в гугле статьи ms-rem'a по перехвату
апи функций - много полезного

ЗЫ: читай его 3-ю статью - "Ring0"
Post #: 21
RE: Диспетчер задач - 2007-02-20 11:15:13.066666   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
Надо под ХР скрыть
Post #: 22
RE: Диспетчер задач - 2007-02-20 12:07:30.286666   
halkfild

Сообщений: 286
Оценки: 0
Присоединился: 2006-11-27 18:26:36.310000
мой пример работает под ХП…. проверял сам..
если тебе надо именно на паскале то смотри статьи ms-rem'a:@
Post #: 23
RE: Диспетчер задач - 2007-02-21 02:45:02.146666   
andrewsoft

Сообщений: 86
Оценки: 0
Присоединился: 2006-12-01 02:55:29.580000
Скрывать процесс не всерда обязательно:
1.Прячем форму, как было уже сказано.
2.Называем процесс или весь проэкт, напр. winlogon или что-то подобное.
Винда просто не даст его удалить: пишет что это
критический системный процесс и его завершить нельзя!!!
(Разве что разными спецутилитами)
Post #: 24
RE: Диспетчер задач - 2007-02-21 18:55:26.733333   
sinker

Сообщений: 134
Оценки: 0
Присоединился: 2007-01-08 21:55:33.930000
quote:

ORIGINAL: andrewsoft

Скрывать процесс не всерда обязательно:
1.Прячем форму, как было уже сказано.
2.Называем процесс или весь проэкт, напр. winlogon или что-то подобное.
Винда просто не даст его удалить: пишет что это
критический системный процесс и его завершить нельзя!!!
(Разве что разными спецутилитами)

А как переименовать процесс?
Post #: 25
RE: Диспетчер задач - 2007-02-22 02:55:15.166666   
andrewsoft

Сообщений: 86
Оценки: 0
Присоединился: 2006-12-01 02:55:29.580000
Зачем переименовывать?
При компиляции назвать его winlogon вполне хватит
(сохрани проэкт под именем winlogon)
Post #: 26
RE: Диспетчер задач - 2007-02-22 16:23:04.126666   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000

quote:

ORIGINAL: andrewsoft

Зачем переименовывать?
При компиляции назвать его winlogon вполне хватит
(сохрани проэкт под именем winlogon)

Мда .. незнаешь как помочь - не гони всякую чушь, любое ламо заметит два одинаковых винлогона!
Все надо делать на совесть! и скрывать процессы надо с помошью нулевого кольца!
Post #: 27
RE: Диспетчер задач - 2007-02-22 16:24:53.980000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
http://www.dotfix.net/module.php?module=@6e786b366a6a70736a6a5f6d725e6c646268676227
http://www.dotfix.net/module.php?module=@6e786b366a6a70736a6a5f6d725e6c646268676228
http://www.dotfix.net/module.php?module=@6e786b366a6a70736a6a5f6d725e6c646268676229

Для особо ленивых …
Post #: 28
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Диспетчер задач







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.