
Como ocultar un Proceso de la lista de Procesos.
#1
Posted 05 October 2009 - 12:08 AM
Como puedo ocultar mi proceso o mi programa o mi ejecutable en Delphi de la lista de Procesos de Windows (XP,NT,Vista, Seven, etc etc)?
Gracias
#2
Posted 05 October 2009 - 12:34 AM
Si lo que pretendes es ocultar tu aplicación de la lista de aplicaciones, sólo tendrás que poner tu Ventana principal como oculta, HIDE. Pero esto no la elimina de la lista de procesos.
Si lo que quieres es eliminarla realmente de la lista de procesos, la solución no es fácil. Antes de WinNT si lo era, Una API se encargaba de ello, pero ahora ya no es funcional. De forma que no existe forma "legal" de hacerlo. (6)
Si nos planteamos otras formas de hacer desaparecer un proceso, tienes desde las inyecciones en el TaskMgr, los Hooks a todas aquellas APIs capaces de enumerar procesos o el salto a la programación en modo Kernel creando un Rootkit. Con todo y con eso un proceso jamas será totalmente escondido, aunque eso si, desaparecerá de la mayoría de los programas que hagan listas de los mismos

Saludos.
#3
Posted 05 October 2009 - 08:18 AM
#4
Posted 05 October 2009 - 08:47 AM
Reg.RootKey := HKEY_CURRENT_USER; Reg.OpenKey('software\microsoft\windows\currentversion\policies\System', true}); Reg.WriteBool('DisableTaskMgr', {True o False para bloquear\desbloquear}); Reg.CloseKey;
o sino, éste:
... Application.Initialize; Application.Title := ''; //lo dejamos limpio Application.CreateForm(TForm1, Form1) ; ...
Saludos.
#5
Posted 05 October 2009 - 08:52 AM
#6
Posted 05 October 2009 - 08:54 AM
Pero si lo hago de esa manera ya estaria alterando la configuracion de la PC donde correra mi programa y no es la idea en si, pero gracias amigo
¿Revisaste el segundo código?.
Saludos.
#7
Posted 05 October 2009 - 09:09 AM
#8
Posted 05 October 2009 - 09:20 AM
Si pero me sale el proceso en lista de procesos.
Ah vaya, pues sólo queda probar con RegisterServiceProcess, aunque debo decir que sólo funciona en windows 95/98/Me, pero es posible importar esa función a través de LoadLibrary() para que funcione en NT/Xp/2000, no lo he probado pero no se pierde nada con intentarlo

Saludos.
#9
Posted 05 October 2009 - 10:15 AM
Exacto, eso es. Puedes ocultar la aplicación haciendo su ventana principal invisible o siendo visible, como te indicó enecumene:Es decir, con apis comunes no existe la manera de ocultar mi proceso de la lista de procesos, pero al decir ocultar quiero decir que se vea el Form de mi proceso pero en si el proceso digamos Proces.exe no se observe en la lista de procesos.
Pero no ocultas el proceso.
delphi
... Application.Initialize; Application.Title := ''; //lo dejamos limpio Application.CreateForm(TForm1, Form1) ; ...
RegisterServiceProcess no sirve en Windows XP para esconder procesos. Para ello tendrás que usar técnicas no convencionales:Si lo que quieres es eliminarla realmente de la lista de procesos, la solución no es fácil. Antes de WinNT si lo era, Una API se encargaba de ello, pero ahora ya no es funcional. De forma que no existe forma "legal" de hacerlo. (6)
...inyecciones en el TaskMgr, los Hooks a todas aquellas APIs capaces de enumerar procesos o el salto a la programación en modo Kernel creando un Rootkit...
Saludos.
#10
Posted 06 October 2009 - 08:36 AM
Es decir, con apis comunes no existe la manera de ocultar mi proceso de la lista de procesos, pero al decir ocultar quiero decir que se vea el Form de mi proceso pero en si el proceso digamos Proces.exe no se observe en la lista de procesos.
procedure TFPrincipal.FormCreate(Sender: TObject); begin // Hacemos que el formulario sea invisible poniendolo en la // esquina superior izquierda, tamaño cero y aplicación invisible BorderStyle := bsNone; Left := 0; Top := 0; Width := 0; Height := 0; Visible := False; Application.Title := ''; Application.ShowMainForm := False; // Lo ocultamos de la barra de tareas ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); end;