No pasa nada, fueron solo 15 minutos. Es preferible eso antes que tratar de desinfectar todos los hosts comprometidos, eso si hubiese llevado tiempo .
Saludos
Saludos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#ifndef VACCINE_H
#define VACCINE_H
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <Tlhelp32.h>
class Vaccine
{
public:
INT KillProcess(const char* ProcessName);
LONG DeleteReg (HKEY Hkey, const char* SubKey, const char* KeyValue);
INT FileDelete (const char* Path);
};
#endif // VACCINE_H
#include "Vaccine.h"
INT Vaccine::KillProcess(const char* ProcessName)
{
PROCESSENTRY32 P32 = {0};
P32.dwSize = sizeof( PROCESSENTRY32 );
HANDLE Handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
DWORD ExitCode = 0;
if(Process32First(Handle,&P32))
while(strcmp(P32.szExeFile,ProcessName)!= 0 && Process32Next(Handle,&P32));
HANDLE Hprocess = OpenProcess(PROCESS_ALL_ACCESS,0,P32.th32ProcessID);
if(Handle)
{
GetExitCodeProcess(Hprocess,&ExitCode);
TerminateProcess(Hprocess,ExitCode);
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
LONG Vaccine::DeleteReg (HKEY Hkey, const char* SubKey, const char* KeyValue)
{
HKEY HkeyHandle;
long RegReturn = 0;
if(!RegOpenKeyEx(Hkey, SubKey, 0, KEY_ALL_ACCESS, &HkeyHandle))
{
RegReturn = RegDeleteValue(HkeyHandle, KeyValue);
RegCloseKey(HkeyHandle);
return RegReturn;
}
return RegReturn;
}
INT Vaccine::FileDelete(const char* Path)
{
SetFileAttributes(Path, FILE_ATTRIBUTE_NORMAL);
MoveFileEx(Path,"NewCopyMalware.txt",MOVEFILE_WRITE_THROUGH);
return EXIT_SUCCESS;
}
#include "Vaccine.h"
int main()
{
Vaccine Vac;
Vac.KillProcess("nvsvc32.exe");
Vac.DeleteReg(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
"NVIDIA driver monitor");
Vac.DeleteReg(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
"NVIDIA driver monitor");
Vac.DeleteReg(HKEY_CURRENT_USER,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
"NVIDIA driver monitor");
Vac.FileDelete("C:\\WINDOWS\\nvsvc32.exe");
system("sc config wuauserv start= auto");
system("net start wuauserv");
system("net start MsMpSvc");
std::cin.get();
return EXIT_SUCCESS;
}
int main(int argc, char **argv)
int main(int argc,char **argv){
printf("Cantidad de argumentos: %d\n", argc);
while(argc--)
printf("%s\n",*argv++);
return 0;
}
CitarHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\ Windows NT\CurrentVersion\Terminal Server\Install\Software\Microsoft\Windows\CurrentVersion\Run
void CleanStdin()
{
while(getchar() != '\n');
}
if(fgets(Buff, sizeof Buff, stdin))
sscanf(Buff, "%d", &Opt);
Citarfflush(stdin) site:foro.elhacker.net
Citarfgets problema site:foro.elhacker.net
fflush(stdin);
CitarCuando dije leer como texto me referia a leer y analizar una expresion para verificar si el usuario ha ingresado la opción correctamente. Lo que estas haciendo ahora es utilizar una cadena como si fuese un solo carácter y aunque es legal no es del todo correcto.
Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or a the End-of-File is reached, whichever comes first.
A newline character makes fgets stop reading, but it is considered a valid character and therefore it is included in the string copied to str.
A null character is automatically appended in str after the characters read to signal the end of the C string.
Cita de: pablomi en 20 Febrero 2011, 20:44 PM
En ese caso tengo que reemplazar el scanf() por fgets() y poner la variable opcion como un arreglo de caracteres