Pregunta

#include<stdio.h>
#include<conio.h>
union abc
{
    int a;
    int x;
    float g;
};
struct pqr
{
    int a;
    int x;
    float g;

} ;

void main()
{
    union abc b;
    struct pqr c;
clrscr();
b.a=10;
textbackground(2);
textcolor(6);
cprintf(" A = %d",b.a);
printf("\nUnion = %d",sizeof(b));
printf("\nStructure = %d",sizeof(c));
getch();
}

He guardado este programa como virus.cpp. Estoy usando Turbo compilador C para compilar este programa y se ejecuta desde Turbo C (Ctrl + F9).

Estoy utilizando Windows 7 y he instalado el sistema antivirus de Avira AntiVir.

Cuando traté de correr por encima de programa, se crea un gusano (DOS / caramelo). Creo que no hay nada malo en el programa.

texto alternativo

Ahora aquí es algo especial. Ejecutar el mismo programa con las siguientes diferencias. Aquí la única diferencia es el espacio entre \n:

#include<stdio.h>
#include<conio.h>
union abc
{
    int a;
    int x;
    float g;
};
struct pqr
{
    int a;
    int x;
    float g;

} ;

void main()
{
    union abc b;
    struct pqr c;
clrscr();
b.a=10;
textbackground(2);
textcolor(6);
cprintf(" A = %d",b.a);
printf("\n Union = %d",sizeof(b));
printf("\n Structure = %d",sizeof(c));
getch();
}

La diferencia es sólo \ n y el espacio. Mi pregunta es, ¿por qué es mi programa simple es detectado como virus?

Aquí hay otro ejemplo de código, esta vez para C ++:

#include<iostream.h>
#include<conio.h>
class A
{
    int a,b;
public:
    A()
    {
        a=0;b=0;
    }

    A(int x)
    {a=x;
    b=0;
    }

    A(int x,int y)
    {
    a=x;
    b=y;
    }

    ~A()
    {
    cout<<"All things are deleted.";
    }

    void get()
    {
    cout<<"\nA = "<<a;
    cout<<"\nB = "<<b;
    }
};

void main()
{

A a1(5,10);
clrscr();
a1.get();
getch();
}

Al ejecutar este programa se da "advertencia de virus" - A pesar de que no es un virus. Ahora, la tragedia es cuando se quita destructores, no lo detectará como virus.

Aquí está la captura de pantalla y pregunta similar:

lenguaje C - \ n - la creación de virus

texto alternativo

La cuestión es cómo y por qué?

¿Fue útil?

Solución

Parece un falso positivo. Dado que los virus modernos usan polimorfismo para esconderse de los programas antivirus, el programa anti-virus tiene que reportar partidos, incluso parciales, y al parecer su compilador con el código fuente dada produce una coincidencia parcial a que el malware.

Otros consejos

Los escáneres de virus utilizan heurísticas y firmas para detectar vulnerabilidades. Los falsos positivos son inevitables. Su programa parece desencadenar la heurística. Es de suponer que la suma de control, tamaño de archivo u otras características se ajustan a un virus conocido. Esta es secundado por el hecho de que un pequeño cambio es suficiente para resolver el problema.

Editar Situaciones que requieren la aplicación virus.exe es una muy desafortunada elección, y me gustaría presumir que dará lugar a la mayoría de los escáneres de virus rápidamente (aunque ciertamente no es un nombre perfecto de un virus real ...).

Creo que tienes un virus real en alguna parte, que tal vez han modificado las bibliotecas estándar: D O simplemente el antivirus detecta un patrón en el ejecutable.

http://www.viruslist.com/en/viruses/ la enciclopedia? virusid = 1,857 .

Mi conjetura es que el Antivir explora a través de cadenas de texto que DOS / caramelo contiene, y desde el que está en la segunda pieza de código es como el que se está buscando, Antivir detecta el ejecutable compilado como un virus.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top