PDA

Ver la versión completa : Una Ayudita Plis



SUAREZ
13-12-2011, 04:48
Bno ya e aprendido a hacer archivos que se abren ejecutando otros pero me gustaria aprender a hacer que estos programas se abran asi sean cerrados, que se abran automaticamente despues de que el administrador los cierre, como por ejemplo! algunos servicios de Windows "Alg.exe" creo ke es el servicio de la impresora, yo lo cierro con el administrador de tareas y este se abre solo al rato,;
quisiera que me enseñaran.

Markitos1024
13-12-2011, 18:56
Bueno creo que aca hay algo de vocabulario que queda ambiguo

Vos no te referis a abrir archivos, sino a ejecutar procesos, que no es lo mismo. Abrir archivo mas bien se llama cuando un programador por ejemplo a traves de la llamada por ejemplo en c fopen pone un archivo que se encuentra en un disco en memoria para poder utilizar sus registros. Vos parecer referirte a ejecutar un proceso junto con otro, osea mediante llamadas del tipo exec que porejemplo se hace con archivos zip o empaquetadores o diferentes tecnicas. Ahora pareciera que quicieras que ese proceso persista en ejecucion osea que aunque lo "manten" vuelva a ejecutarse. Para esto tendrias que tener otro proceso corriendo que lo llame.

En el caso de alg.exe es un modulo del sistema operativo windows "Application Layer Gateway Service" que seguramente una vez de lo detienes el kernel vuelve a lanzarlo.
No vale la pena aqui aclarar pero el kernel esta claro que nunca pierde el control de la ejecucion, o almenos no deberia hacerlo en un SO que se denomine serio de manera sencilla, y si lo haria seria una grave vulnerabilidad.

Si quisieras que lo haga de la misma manera deberias recompilar el kernel cosa que en win2 lo veo dificil ya que no creo que tengas el codigo :D

saludos

proteo1
13-12-2011, 20:58
comienza un ciclo que verifique si la aplicacion esta ejecutandose sola

de estar sola que abra otra instancia del programa
y si no que no haga nada:)

con ese concepto quiza te funciona

hystd
13-12-2011, 21:16
Varios puntos a aclarar...

Ejecutar un proceso, está mal dicho... lo correcto es decir "ejecutar un programa", y dicho programa en ejecución es lo que se denomina proceso, es decir, programa en RAM = proceso.

En segundo lugar, procesos como alg.exe, no son lanzados por el kernel, sino por el SCM (Service Control Manager), que es un módulo que se ejecuta en modo kernel, y no pertenece al kernel del sistema operativo... es importante tener en cuenta esto (diferenciar kernel del SO y ejecutar en modo kernel).

Para consultar los procesos que lanza el SCM basta con ir a la ruta del registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es (allí se verá el proceso alg.exe).

En tercer lugar para modificar el Kernel del SO no hace falta recompilar, simplemente cualquier proceso en modo kernel, tiene acceso a todo el espacio de memoria direccionable por el SO, por lo que que el kernel, también sería accesible... Y un ejemplo de un proceso en modo kernel, es lo que comunmente se denomina "driver". Un driver, por ejemplo un controlador para tu impresora o tu tarjeta de red, pueden perfectamente "corromper" el kernel "sin querer" y meterte lo que vulgarmente se conoce como un BSOD (http://es.wikipedia.org/wiki/Archivo:BSoD_WinXP.jpg), y ahí tienes tu vulnerabilidad.

Con respecto a la duda de este hilo, hay bastantes formas de lograrlo, y algunas de ellas ya las he nombrado, como lo puede ser un driver de clase que una vez instalado mediante el SCM, cargue el proceso en cuestión, y otras en las que no hace falta ni siquiera "tocar" nada en modo kernel. En modo usuarios recurriendo a una inyección, tendrías por ejemplo que el proceso que quieres mantener "activo", simplemente inyecte la rutina que "lo vuelva a llamar", en un proceso existente (un buen candidato de sufrir esta inyección puede y suele ser explorer.exe).

Un saludo.