Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Скрыть процесс в диспетчере задачь...Как? (http://forum.oszone.net/showthread.php?t=29490)

Guest 29-09-2002 10:00 204184

Програмирование в Builder С++ v.5
 
Может кто подскажет? Как сделать под WIN98 чтобы при нажатии ALT+CTRL+DEL в появимшемся окне процессов не было видно моего?

Andreich 23-04-2004 09:10 204161

Как скрыт свою прогу в диспетчере задач (три веселых буквы)...

hasherfrog 23-04-2004 09:35 204162

Всё зависит от ОС. Например в ХР - запустить её как службу. Поконкретнее, пожалуйста. А ещё лучше - пройдитесь поиском, этот вопрос первый по популярности, имхо.

unknown bug 23-04-2004 12:11 204163

Имхо в диспетчере задач видны и службы. Для сокрытия - либо внедрение своего кода в другой процесс, либо подмена функции, выдающей список запущенных процессов (вылетело название, то ли CreateToolhelp32Snapshot(), то ли что-то еще)...

hasherfrog 23-04-2004 13:59 204164

Ч@рт возьми, ошибся. Не в ХР, конечно же, а в 9х
Код:

implementation
function RegisterServiceProcess(dwProcessID, dwType: DWORD): DWORD;
  stdcall; external 'KERNEL32.DLL';
// hide, verstecken
procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterServiceProcess(GetCurrentProcessID, 1);
end;
// show again, wieder anzeigen
procedure TForm1.Button2Click(Sender: TObject);
begin
  RegisterServiceProcess(GetCurrentProcessID, 0);
end;

ещё здесь: http://www.delphifaq.com/fq/q2106.shtml

А для ХР всё сложнее, посмотри здесь: http://www.codeproject.com/useritems...;select=663761
Там очень подробно и вроде даже с исходниками.

suxxl 23-04-2004 14:45 204165

unknown bug:
мы просто с помощью длл подменивали таблицу импортов...
ну короче то же самое, что и ты сказал...

Andreich 24-04-2004 17:24 204166

Большой сенкс! Попробую

ekstrim 28-04-2004 00:10 204167

спасиба и от меня

Guest 01-05-2004 11:47 204168

Я делал прогу которая должна работать в xp и в win9x. если она в win9x то она должна себя скрывать через RegisterServiceProcess, но когда ее компилируеш в xp то он ругается что точка входа в процедуру не найдена. че делать?

vasketsov 05-05-2004 21:12 204169

Guest
Определять RegisterServiceProcess через GetProcAddress

pomka 09-05-2004 16:09 204170

а как

Surround 25-06-2004 22:31 204171

vasketsov
а не подскажешь, как? :)

hasherfrog 26-06-2004 11:22 204172

Surround
Смотрите здесь

Surround 26-06-2004 12:33 204173

hasherfrog
я не очень понимаю сишный код :(
как-нибудь на делфи это сложно выглядеть будет?

hasherfrog 26-06-2004 12:39 204174

Что-то типа этого

Surround 26-06-2004 13:13 204175

hasherfrog
спасибо! но я не очень понял, что там должно быть в скобках в
Цитата:

rsp(...).
попытался засунуть полученный адрес в вызов RegisterServiceProcess - компилятор заругался, или его ваще не туда вставлять надо?

hasherfrog 26-06-2004 13:20 204176

Surround
Пересмотрите данную тему с самого начала.

Добавлено:

И вообще, ну заюзайте поиск, в самом-то деле :(
Вот, смотрите, что я сразу же нашёл.

Surround 27-06-2004 16:35 204177

hasherfrog
прошу прощения. Спасибо :biglaugh:
компилится ok, но теперь при выполнеии что-та типа:
Цитата:

Project такой-то raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 00000000.

unreliable 27-06-2004 23:02 204178

А если еще использовать определение операционной системы получится вообще стоящая програмка.

Surround 28-06-2004 06:51 204179

unreliable
определить ось - это хорошо, но под XP скрываться не хочет - ругается нулями...:(

[s]Исправлено: Surround, 6:53 28-06-2004[/s]

hasherfrog 28-06-2004 14:03 204180

Surround
Данные функции не сработают под XP. Вам уже намекнули, что определение версии ос поможет обойти проблему с 00000.

Surround 28-06-2004 18:34 204181

hasherfrog
да мне именно под XP и нужно было :(

hasherfrog 29-06-2004 08:52 204182

Surround
Ну вот, приплыли :) См. 4 пост

suxxl 29-06-2004 12:30 204183

Если влом разбираться в подменой таблиц импорта, и внедрением своего кода, то можешь просто обозвать свое приложение системным именем :-)

XaErO 24-08-2004 00:00 204185

Програмирование в Builder С++ v.5
 
[STFW!]
Как скрыть свое приложение от диспетчера задач
Внимание! Не работает в семействе NT (2000, XP)

   typedef DWORD (WINAPI *LPREGISTERSERVICEPROCESS) (DWORD, DWORD);

   HINSTANCE h_i;

   LPREGISTERSERVICEPROCESS lpRegProc;

   h_i = LoadLibrary("KERNEL32.DLL");

   if (h_i)

   {

       lpRegProc = (LPREGISTERSERVICEPROCESS)GetProcAddress(h_i, "RegisterServiceProcess");

       if (lpRegProc)

       {

           lpRegProc(NULL, 1);

       }

       FreeLibrary(h_i);

   }

Bondurik 31-08-2004 10:19 204186

В NT есть (по крайней мере был) крутой обход инспектора.
Пишиш Application.Title='program manager' и прога исчезает .
Но что же делоть если прога консолевая и нету не кокого  Application.:(

Savant 27-01-2005 20:13 292753

Вложений: 1
Если кому интересно, отрыл исходник dll на Object Pascal, которая скроет Ваше проложение от Task Manager'a и других программ, использующих для получения списка процессов функцию NtQuerySystemInformation из ntdll.dll (соответственно, пашет только на NT-системах). Проверил ток что на XP_sp2, работает отлично :) Вес dll, если компилить без оптимизаций через Delphi7 42 кило.

Мда, забыл сказать, как использовать :)
Итак, нужно вызвать функцию HideProcess:
Код:

function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL,
где pid - идентификатор процесса, который нужно спрятать, а HideOnlyFromTaskManager - нужно ли прятать процесс только от TaskManager

Пример:
Код:

program SuperHide;
 
function HideProcess(pid: DWORD; HideOnlyFromTaskManager: BOOL): BOOL; stdcall; external 'nt_hide.dll';
 
begin
  HideProcess(GetCurrentProcessId, false); // прячем текущий процесс
  ... // весь остальной код
end.

извиняйте, если что-то подобное было уже, не на все хватило терпения прочитать. Если это повтор, сообщите, я удалю пост


Время: 07:05.

Время: 07:05.
© OSzone.net 2001-