Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Kaxperday en 30 Mayo 2015, 18:33 pm



Título: Programa persistente en C#
Publicado por: Kaxperday en 30 Mayo 2015, 18:33 pm
Hola he visto que hay troyanos que al cerrarlos se vuelven a ejecutar pasado un tiempo, ¿como es eso posible?, ¿cómo puedo implementarlo?

¿Será otra aplicación que lo ejecuta no? ¿2 programas en uno entonces?

Saludos.


Título: Re: Programa persistente en C#
Publicado por: Eleкtro en 30 Mayo 2015, 20:23 pm
Quizás KuBox conozca alguna otra metodología más apropiada, ya que lo mio no es el diseño de virus/troyanos, pero te lo comento igual...

Una manera de hacerlo sería desarrollando un servicio de Windows, instalarlo y mantener el servicio escuchando la actividad del proceso (ya sea mediante técnicas IPC cómo sockets o un mapeo de memoria compartida, o simplemente realizando una consulta a la lista de procesos actual Process.GetPRocesses() ), si se detecta inactividad (es decir, si no se encuentra el proceso en ejecución) iniciarlo de nuevo.
Esto sería practicamente lo mismo que mantener 2 procesos en ejecución cómo sugeriste, pero con sus ventajas (y su elegancia xD).

Creating a Windows Service Application - MSDN (https://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.110%29.aspx)
A basic Windows service in C# - MSDN Code (https://code.msdn.microsoft.com/windowsapps/CSWindowsService-9f2f568e)
+
➢  Interprocess Communications (IPC) - MSDN (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574%28v=vs.85%29.aspx)

Saludos!


Título: Re: Programa persistente en C#
Publicado por: Kaxperday en 31 Mayo 2015, 13:15 pm
Gracias Elektro como siempre, parece que además de tu opción que es abrir un servicio que compruebe si el programa está o no en ejecución, he encontrado otra opción que consiste en inyectar threads a otros procesos para que comprueben si mi programa está o no en ejecución y haga algo al respecto, si inyectaría eso a svchost.exe funcionaría sin necesidad de servicio, el problema es ¿realmente funcionará? y ¿cómo se hace? XD

Bueno, ya me las intentaré apañar para el resto.

http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces

Saludos y gracias.