Domanda

#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();
}

Ho salvato questo programma come virus.cpp. Sto usando il compilatore Turbo C per compilare questo programma e eseguito da Turbo C (Ctrl + F9).

Sto usando Windows 7 e ho installato il sistema virus Avira AntiVir.

Quando ho provato a correre sopra il programma, si crea un verme (DOS / Candy). Credo che ci sia nulla di sbagliato nel programma.

alt text

Ora qui è qualcosa di speciale. Eseguire lo stesso programma con le seguenti differenze. Qui l'unica differenza è spazio tra \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 differenza è solo \ n e lo spazio. La mia domanda è, perché la mia semplice programma viene rilevato come virus?

Ecco un altro esempio di codice, questa volta per 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();
}

Quando ho eseguito questo programma dà "Virus Warning" - anche se non è un virus. Ora, la tragedia è quando si rimuove distruttori, non viene rilevata come virus.

Ecco la schermata e domanda simile:

linguaggio C - \ n - la creazione di virus

alt text

La domanda è: come e perché?

È stato utile?

Soluzione

Sembra un falso positivo. Poiché i virus moderni usano il polimorfismo a nascondersi da programmi anti-virus, il programma anti-virus deve riferire le partite, anche parziali, ea quanto pare il compilatore con il codice sorgente dato produce una corrispondenza parziale a che il malware.

Altri suggerimenti

Gli antivirus utilizzano euristica e le firme per rilevare le vulnerabilità. I falsi positivi sono inevitabili. Il vostro programma sembra innescare l'euristica. Presumibilmente la sua checksum, dimensione del file o altre caratteristiche corrispondono a un virus conosciuto. Questo è distaccato dal fatto che un piccolo cambiamento è sufficiente a risolvere il problema.

Modifica Come chiamare la propria applicazione virus.exe è una scelta piuttosto infelice, e io presumo che farà scattare la maggior parte dei programmi antivirus in fretta (anche se non è certamente un nome perfetto per un vero e proprio virus ...).

Penso che tu abbia un vero e proprio virus da qualche parte, che forse hanno modificato le librerie standard: D O semplicemente l'antivirus rileva un modello nel file eseguibile.

http://www.viruslist.com/en/viruses/ un'enciclopedia? virusid = 1857 .

La mia ipotesi è che Antivir esplora attraverso stringhe di testo che DOS / Candy contiene, e dal momento che quello nella seconda parte del codice è simile a quello che sta cercando, Antivir rileva il file eseguibile compilato come un virus.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top