Averiguad cómo detecta la página lo que os pide y como tenerlo o al menos hacedle creer que lo tenéis.
Un saludo de ghastlyX
Un saludo de ghastlyX
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úCita de: LordKevin en 9 Junio 2008, 06:17 AMToda encuesta es subjetiva, por algo recoge opiniones de la gente. Lo que si veo absurdo es decir qué antivirus detecta más virus, es mejor ver como basan su detección mejor que ver lo grande que es su base de firmas.Cita de: ghastlyX en 30 Agosto 2007, 14:53 PM
Para que los resultados sean lo más fiables posibles, se despega la anterior encuesta y se pone esta, con muchos más antivirus, para que la opción "Otros" no se tenga que utilizar casi nada. Todos a votar y dar su opinión
Un saludo de ghastlyX
Es absurdo, decir cual es el mejor antivirus, tal vez decir cual es el que mas detecta virus sea mas objetivo.
Esta encuesta es subjetiva.
Cita de: V1rk4N en 11 Junio 2008, 02:28 AM¿Kaspersky atacado por un troyano? Mucho dudo eso, no es imposible, pero dudo que un troyano que pulule por ahí consiga neutralizar el Kaspersky. Sobre lo de los rootkits, muchos antivirus han incorporado ya sistemas de detección de rootkits.
x lo que e estado viendo .. hay tecnikas que se le aplikan a los antivirus.. para que no detecte al virus o troyano.. modificando su Kernel del antivirus.. principalmente .. eso me ha pasdo con el KASPERSKY ... un troyano ..se lo pasaba por el huevo al kaspersky.. ya que modifico la integridad del antivirus.. y bueno.. tube que darle un buen formateo.. pero.. eso me asombro.. veia como el antivirus se cabreaba.. jajja.. lo actializaba.. si creen que era un rootkit al S.O. x sika no-.!! xq.. ya les pase varios anti-rootkits,,.. al.. S.O no!! se la isieron al antivirus.,. a el le aplikaroin la tecnika del Rootkit.. y Bum,.. cayo el antivirus. x mas fuerte que apreca.. .. bueno yo confio ..en la THE HACKER ANTIVIRUS.. lo maximo.. 100% HEURISTICO. .ese se viola cualquier amenaza.. solo su interfas grafica es un poco monse.. pero lo que vale es su calidad .. pruebenlo.. !!2.
-----------------------------------------------
?¿como apliko tecnikas de root-kits al antivirus.. !??¿¿?.. si he visto.. pero.. me gustaria aprender +++
tanks-- opinen
#define E 19
#define PHI_N 70176 //(p - 1) * (q - 1)
#include <stdio.h>
int main()
{
int i;
for(i = 0; i < 70757; i++)
{
if(((i * E) % PHI_N) == 1) printf("d = %d\n", i);
}
return 0;
}
#include <stdio.h>
int main()
{
int i;
char abc[] = " ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
int cifrado[] = {19, 20, 1, 20, 5, 13, 1, 14, 21, 9, 5, 14, 5, 20, 5, 7, 22, 19, 16, 17, 1, 19, 1, 17, 19, 9, 13, 16, 20, 20, 22, 6, 9, 3, 9, 3, 9, 5, 14, 21, 5, 13, 5, 14, 21, 5, 20, 7, 19, 1, 14, 4, 5, 20};
for(i = 0; i < 54; i++) printf("%c", abc[cifrado[i]]);
return 0;
}
CitarY una duda que hasta ahora no he podido resolver es cómo matar un proceso inmortal mediante vacunas, por ejemplo algunos troyanos que vienen con opción de persistencia y que cuando matamos el proceso, éste vuelve a aparecer en unos segundos. A esos no los puedo eliminar mas que en modo a prueba de fallos, pero yo no quiero eso, sino matarlos como lo hacen los antivirus que así sean inmortales, el antivirus igual lo mata. Hay alguna forma para hacer eso?Yo es que tengo el problemilla que nunca he usado troyanos porque no me gustan nada, así que todo lo que he trabajado con ellos ha sido para cargármelos xDD. Dime alguno que haga eso y me lo miro, seguro que se pueden matar, ya miraré el sistema de autoprotección que tienen.
CitarY otra duda... hay algunos virus que toman el nombre de procesos conocidos como explorer.exe o lsass.exe y que no se dejan matar así nomas porque windows piensa que son procesos esenciales. Con el código que has puesto se dejan matar estos procesos?.Con ese código te va a dar problemas para eso, dime lo de los troyanos que dices y para el próximo capítulo a ver si hago un código que mate ambas cosas.
int main()
{
...
}
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
int KillProcess(LPCTSTR lpfilename)
{
...
}
int main()
{
...
}
WIN32_FIND_DATA Win32FindData;
HANDLE handle;
DWORD exitcode;
PROCESSENTRY32 pe32;
HANDLE WINAPI CreateToolhelp32Snapshot(
__in DWORD dwFlags,
__in DWORD th32ProcessID
);
BOOL WINAPI Process32First(
__in HANDLE hSnapshot,
__inout LPPROCESSENTRY32 lppe
);
BOOL WINAPI Process32Next(
__in HANDLE hSnapshot,
__out LPPROCESSENTRY32 lppe
);
//Cierra un handle abierto
BOOL WINAPI CloseHandle(
__in HANDLE hObject
);
//Abre un proceso
HANDLE WINAPI OpenProcess(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId
);
//Devuelve el estado de finalización del proceso
BOOL WINAPI GetExitCodeProcess(
__in HANDLE hProcess,
__out LPDWORD lpExitCode
);
//Termina un proceso y sus threads
BOOL WINAPI TerminateProcess(
__in HANDLE hProcess,
__in UINT uExitCode
);
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //Guardamos en nuestra variable de tipo HANDLE la "foto"
if(handle == INVALID_HANDLE_VALUE) return ERROR_LISTAR; //Si no es correcta la "foto" se acaba la funcion y se devuelve un error
pe32.dwSize = sizeof(PROCESSENTRY32); //Definimos la medida de nuestra estructura PROCESSENTRY32
if(!Process32First(handle, &pe32)) //Si hay un error al mirar el primer proceso
{
CloseHandle(handle); //Cierra el HANDLE que usamos
return ERROR_PROCESO; //Acaba la funcion devolviendo un error
}
int i; //Declaramos un par de variables más que hacen falta para pasar a mayusculas dos cadenas
char lpfilename2[strlen(lpfilename) + 1];
strcpy(lpfilename2, lpfilename);
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]); //Pasamos a mayúsculas las dos cadenas a comparar para que si no son exactamente iguales en cuanto a mayusculas o minusculas, también mate el proceso
for(i = 0; lpfilename2[i] != '\0'; i++) lpfilename2[i] = toupper(lpfilename2[i]);
while(strcmp(pe32.szExeFile,lpfilename2)) /Mientras el proceso no coincida con el que buscamos...
{
if(!Process32Next(handle, &pe32)) //Va mirando el siguiente, acabando la funcion si hay errores
{
CloseHandle(handle);
return ERROR_PROCESO;
}
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]); //Pasa a mayusculas por lo que he dicho antes
}
/**Una vez hemos encontrado el proceso**//
handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); //Abrimos el proceso
if(handle == NULL) //Si sale mal, damos error y salimos de la funcion
{
CloseHandle(handle);
return ERROR_PROCESO;
}
else //Si no sale mal...
{
GetExitCodeProcess(handle, &exitcode); //Cogemos el exitcode del proceso y lo guardamos en nuestra variable destinada a ese cometido
TerminateProcess(handle, exitcode); //Matamos el proceso
CloseHandle(handle); //Cerramos el HANDLE que habiamos usado
return 0; //Devolvemos el valor 0, que es el que indicara que todo va bien y acaba la funcion
}
#define ERROR_LISTAR 1
#define ERROR_PROCESO 2
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
int KillProcess(LPCTSTR lpfilename)
{
WIN32_FIND_DATA Win32FindData;
HANDLE handle;
DWORD exitcode;
PROCESSENTRY32 pe32;
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(handle == INVALID_HANDLE_VALUE) return ERROR_LISTAR;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
int i;
char lpfilename2[strlen(lpfilename) + 1];
strcpy(lpfilename2, lpfilename);
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
for(i = 0; lpfilename2[i] != '\0'; i++) lpfilename2[i] = toupper(lpfilename2[i]);
while(strcmp(pe32.szExeFile,lpfilename2))
{
if(!Process32Next(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
}
handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
if(handle == NULL)
{
CloseHandle(handle);
return ERROR_PROCESO;
}
else
{
GetExitCodeProcess(handle, &exitcode);
TerminateProcess(handle, exitcode);
CloseHandle(handle);
return 0;
}
}
int main()
{
...
}
int FileDelete(LPCTSTR lpfilename);
BOOL WINAPI DeleteFile(
__in LPCTSTR lpFileName
);
int FileDelete(LPCTSTR lpfilename)
{
return DeleteFile(lpfilename);
}
#define ERROR_LISTAR 1
#define ERROR_PROCESO 2
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
int FileDelete(LPCTSTR lpfilename);
int KillProcess(LPCTSTR lpfilename)
{
WIN32_FIND_DATA Win32FindData;
HANDLE handle;
DWORD exitcode;
PROCESSENTRY32 pe32;
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(handle == INVALID_HANDLE_VALUE) return ERROR_LISTAR;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
int i;
char lpfilename2[strlen(lpfilename) + 1];
strcpy(lpfilename2, lpfilename);
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
for(i = 0; lpfilename2[i] != '\0'; i++) lpfilename2[i] = toupper(lpfilename2[i]);
while(strcmp(pe32.szExeFile,lpfilename2))
{
if(!Process32Next(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
}
handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
if(handle == NULL)
{
CloseHandle(handle);
return ERROR_PROCESO;
}
else
{
GetExitCodeProcess(handle, &exitcode);
TerminateProcess(handle, exitcode);
CloseHandle(handle);
return 0;
}
}
int FileDelete(LPCTSTR lpfilename)
{
return DeleteFile(lpfilename);
}
int main()
{
...
}
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName);
LONG WINAPI RegOpenKeyEx(
__in HKEY hKey,
__in_opt LPCTSTR lpSubKey,
__reserved DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
LONG WINAPI RegDeleteValue(
__in HKEY hKey,
__in_opt LPCTSTR lpValueName
);
LONG WINAPI RegCloseKey(
__in HKEY hKey
);
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName)
{
HKEY hregkey; //Definimos la variable donde guardaremos la ruta entera de la clave
long vuelta; //Definimos la variable donde guardaremos el valor a devolver
if(RegOpenKeyEx(hkey, lpSubKey, 0, KEY_ALL_ACCESS, &hregkey) == ERROR_SUCCESS) //Si consigue abrir la clave...
{
vuelta = RegDeleteValue(hregkey, lpValueName); //Borra el valor de la clave y guarda el resultado en "vuelta"
RegCloseKey(hregkey); //Cierra el handle que hemos usado
return vuelta; //Devuelve "vuelta"
}
else return ERROR_OPEN_REG; //Si no consigue abrir la clave, devuelve este error
}
#define ERROR_LISTAR 1
#define ERROR_PROCESO 2
#define ERROR_OPEN_REG 3
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
int FileDelete(LPCTSTR lpfilename);
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName);
int KillProcess(LPCTSTR lpfilename)
{
WIN32_FIND_DATA Win32FindData;
HANDLE handle;
DWORD exitcode;
PROCESSENTRY32 pe32;
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(handle == INVALID_HANDLE_VALUE) return ERROR_LISTAR;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
int i;
char lpfilename2[strlen(lpfilename) + 1];
strcpy(lpfilename2, lpfilename);
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
for(i = 0; lpfilename2[i] != '\0'; i++) lpfilename2[i] = toupper(lpfilename2[i]);
while(strcmp(pe32.szExeFile,lpfilename2))
{
if(!Process32Next(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
}
handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
if(handle == NULL)
{
CloseHandle(handle);
return ERROR_PROCESO;
}
else
{
GetExitCodeProcess(handle, &exitcode);
TerminateProcess(handle, exitcode);
CloseHandle(handle);
return 0;
}
}
int FileDelete(LPCTSTR lpfilename)
{
return DeleteFile(lpfilename);
}
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName)
{
HKEY hregkey;
long vuelta;
if(RegOpenKeyEx(hkey, lpSubKey, 0, KEY_ALL_ACCESS, &hregkey) == ERROR_SUCCESS)
{
vuelta = RegDeleteValue(hregkey, lpValueName);
RegCloseKey(hregkey);
return vuelta;
}
else return ERROR_OPEN_REG;
}
int main()
{
...
}
C:\gusano.exe
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Soy un gusano malo y propagador
int main()
{
KillProcess("gusano");
FileDelete("C:\\gusano");
RegKill(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Soy un gusano malo y propagador");
return 0;
}
int main()
{
long salida;
salida = KillProcess("gusano.exe");
if(salida == ERROR_LISTAR) printf("Error al listar los procesos\n");
else if((salida == ERROR_PROCESO) && (GetLastError() == ERROR_NO_MORE_FILES)) printf("El proceso no existe\n");
else if(salida == ERROR_PROCESO) printf("Error al manejar los procesos\n");
else printf("Proceso finalizado correctamente\n");
salida = FileDelete("C:\\gusano.exe");
if(salida == ERROR_FILE_NOT_FOUND) printf("Archivo no encontrado\n");
else if(salida == ERROR_ACCESS_DENIED) printf("Acceso denegado\n");
else if(salida) printf("Archivo eliminado correctamente\n");
else printf("Error al eliminar el archivo\n");
salida = RegKill(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Soy un gusano malo y propagador");
if(salida == ERROR_OPEN_REG) printf("Error al abrir el registro\n");
else if(salida == ERROR_SUCCESS) printf("Valor borrado del registro\n");
else printf("Error al borrar valor del registro\n");
return 0;
}
#define ERROR_LISTAR 1
#define ERROR_PROCESO 2
#define ERROR_OPEN_REG 3
#include <stdio.h>
#include <windows.h>
#include <Tlhelp32.h>
#include <ctype.h>
int KillProcess(LPCTSTR lpfilename);
int FileDelete(LPCTSTR lpfilename);
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName);
int KillProcess(LPCTSTR lpfilename)
{
WIN32_FIND_DATA Win32FindData;
HANDLE handle;
DWORD exitcode;
PROCESSENTRY32 pe32;
handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(handle == INVALID_HANDLE_VALUE) return ERROR_LISTAR;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
int i;
char lpfilename2[strlen(lpfilename) + 1];
strcpy(lpfilename2, lpfilename);
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
for(i = 0; lpfilename2[i] != '\0'; i++) lpfilename2[i] = toupper(lpfilename2[i]);
while(strcmp(pe32.szExeFile,lpfilename2))
{
if(!Process32Next(handle, &pe32))
{
CloseHandle(handle);
return ERROR_PROCESO;
}
for(i = 0; pe32.szExeFile[i] != '\0'; i++) pe32.szExeFile[i] = toupper(pe32.szExeFile[i]);
}
handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
if(handle == NULL)
{
CloseHandle(handle);
return ERROR_PROCESO;
}
else
{
GetExitCodeProcess(handle, &exitcode);
TerminateProcess(handle, exitcode);
CloseHandle(handle);
return 0;
}
}
int FileDelete(LPCTSTR lpfilename)
{
return DeleteFile(lpfilename);
}
long RegKill(HKEY hkey, LPCTSTR lpSubKey, LPCTSTR lpValueName)
{
HKEY hregkey;
long vuelta;
if(RegOpenKeyEx(hkey, lpSubKey, 0, KEY_ALL_ACCESS, &hregkey) == ERROR_SUCCESS)
{
vuelta = RegDeleteValue(hregkey, lpValueName);
RegCloseKey(hregkey);
return vuelta;
}
else return ERROR_OPEN_REG;
}
int main()
{
long salida;
salida = KillProcess("gusano.exe");
if(salida == ERROR_LISTAR) printf("Error al listar los procesos\n");
else if((salida == ERROR_PROCESO) && (GetLastError() == ERROR_NO_MORE_FILES)) printf("El proceso no existe\n");
else if(salida == ERROR_PROCESO) printf("Error al manejar los procesos\n");
else printf("Proceso finalizado correctamente\n");
salida = FileDelete("C:\\gusano.exe");
if(salida == ERROR_FILE_NOT_FOUND) printf("Archivo no encontrado\n");
else if(salida == ERROR_ACCESS_DENIED) printf("Acceso denegado\n");
else if(salida) printf("Archivo eliminado correctamente\n");
else printf("Error al eliminar el archivo\n");
salida = RegKill(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "Soy un gusano malo y propagador");
if(salida == ERROR_OPEN_REG) printf("Error al abrir el registro\n");
else if(salida == ERROR_SUCCESS) printf("Valor borrado del registro\n");
else printf("Error al borrar valor del registro\n");
return 0;
}