Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: ambigus9 en 16 Agosto 2014, 20:38 pm



Título: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: ambigus9 en 16 Agosto 2014, 20:38 pm
He probado SandBoxie y sólo deja 2 veces...No más y si intento ejectuar desde otra SandBox...cosume toda la RAM y sale pantallazo azul :( ¿Qué me recomiendan?


Título: Re: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: engel lex en 16 Agosto 2014, 21:30 pm
has intentado con una maquina virtual?


Título: Re: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: ambigus9 en 16 Agosto 2014, 22:29 pm
Si pero no son livianas....y ya probé con VirtualBox y VMWare y son muy pesadas...y VirtualBox me manda error y se cierra y el otro tengo que instalar un Sistema Operativo entero y la idea es correr el programa y acceder a carpetas del Disco Duro del Operativo original ( Windows 7 )

El programa es MEGASync...la idea es correrlo varias veces con diferentes cuentas y eso se puede hacer con SandyBoxie pero sólo 2 veces :( No más :(

¿Alguna sugerencia en particular?


Título: Re: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: scott_ en 17 Agosto 2014, 01:13 am
Una máquina web. Un sistema en la web, con un buen procesador te corre bien.

Un Cordial Saludo  ;D


Título: Re: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: Eleкtro en 17 Agosto 2014, 04:04 am
Buenas

Primero de nada:

· ¿Que es lo primero que debes hacer antes de acudir a un foro?:
  Acudir al servicio de soporte de la aplicación, al email del autor, para pedirle que implementen la multiple instancia, o pedirle información sobre el tipo de limitación que usaron, o algo que te pueda ayudar, ya que nosotros no somos magos.



¿Alguna sugerencia en particular?

Aparte de que seguramente haya alguna buena razón (ideada por el desarrollador) por la cual limitar la aplicación a 1 única instancia, hay varias formas de llevar a cabo esta limitación, por ejemplo:

  • Usando un MUTEX
  • Comprobando el nombre del proceso en la lista de procesos activos.
  • Comprobando la existencia de un archivo local específico.
  • etc, etc, etc..

Te preguntarás: "¿Y que?", pues que la dificultad de una posible solución varia dependiendo de cual sea la forma que el desarrollador empleó, por ejemplo:

· Si está comprobando el nombre del proceso en la lista de procesos activos:
Con hacer copias del executable y renombrar el nombre de cada archivo sería suficiente.

· Si está comprobando el nombre del proceso en la lista de procesos activos:
Sería suficiente con eliminar el archivo antes de cada inicio de los posteriores procesos.

· Si usó una detección vía MUTEX:
  1. Si quieres una solución temporal deberás isolar el proceso en un espacio virtual (SandBox), por ejemplo con sandboxie.

  2. Otra solución temporal y sin virtualización sería cerrar el/los Handle(s) relacionados con el MUTEX, esto puedes averiguarlo y hacerlo de forma sencilla con la aplicación ProcessExplorer de SysInternals.
   Nota: En caso de ser un ensamblado .NET y que el desarrollador haya implementado la detección por MUTEX desde las opciones de VisualStudio (y no de otra forma más manual), deberás cerrar unos 4 o 5 Handles cuyos nombres contienen las palabras clave "MUTEX" y "BaseNamedObjects".

  3. Si quieres una solución definitiva, creo que haría falta conocimientos de ingenieria inversa para desensamblar la aplicación, buscar la instrucción relacionada con el MUTEX y realizar los cambios necesarios para que permita múltiples instancias.




En fín, cuando desarrollas una aplicación puedes modificarle su identificador único, y la característica principal de una aplicación single-instance es NO permitir más de una instancia de un proceso que tenga el mismo identificador.

Creando un SandBox (como hace la aplicación SandBoxie o cualquier virtualizador de aplicaciones) estarás creando un espacio virtual de memoria donde ejecutar ese proceso de forma aislada al resto, por lo tanto puedes ejecutar la aplicación tanto en el Host como en el SandBox sin que el Identificador de los dos procesos "colisionen", aunque la verdad es que no tengo muy claro el motivo, no se si es que quizás estos programas modifican de alguna manera el contexto del proceso hijo (la app single-instance) para que puedan heredar el identificador del proceso padre (el virtualizador) de alguna manera abstracta o algo parecido, no lo sé, pero claro, si intentas ejecutar la misma aplicación dos veces en el mismo espacio virtual del SandBox... pues pasa lo que ya he explicado, se detecta el MUTEX.




⇲ Documentación:
· Globally unique identifier (GUID) (http://en.wikipedia.org/wiki/Globally_unique_identifier)
· Mutual exclusion (MUTEX) (http://en.wikipedia.org/wiki/Mutual_exclusion)

⇲ Utilidades:
· Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)


Título: Re: ¿Cómo ejecutar varias veces el mismo programa?
Publicado por: quiAnar en 14 Septiembre 2014, 19:16 pm
Gran respuesta Eleкtro de mucha utilidad muchas gracias.