Вопрос

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

Я сохранил эту программу как virus.cpp.Я использую компилятор Turbo C для компиляции этой программы и запуска из Turbo C (Ctrl + F9).

Я использую Windows 7 и установил антивирусную систему Avira AntiVir.

Когда я попытался запустить вышеуказанную программу, она создала червя (DOS / Candy).Я считаю, что в программе нет ничего плохого.

альтернативный текст

А теперь вот что-то особенное.Выполните ту же программу со следующим отличием.Здесь единственное различие заключается в пространстве между \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();
}

Разница только в и пробеле.Мой вопрос в том, почему моя простая программа обнаружена как вирус?

Вот еще один пример кода, на этот раз для 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();
}

Когда я запускаю эту программу, она выдает "Предупреждение о вирусе" - даже если это не вирус.Теперь трагедия в том, что когда вы удаляете деструкторы, они не обнаруживают его как вирус.

Вот снимок экрана и аналогичный вопрос:

Язык C - - создающий вирус

альтернативный текст

Вопрос в том, как и почему?

Это было полезно?

Решение

Похоже на ложноположительный результат.Поскольку современные вирусы используют полиморфизм, чтобы скрыться от антивирусных программ, антивирусная программа должна сообщать даже о частичных совпадениях, и, очевидно, ваш компилятор с данным исходным кодом выдает частичное совпадение с этой вредоносной программой.

Другие советы

Сканеры вирусов используют эвристику и сигнатуры для обнаружения уязвимостей.Ложные срабатывания неизбежны.Кажется, ваша программа запускает эвристику.Предположительно, его контрольная сумма, размер файла или другие характеристики соответствуют известному вирусу.Это подтверждается тем фактом, что небольшого изменения достаточно, чтобы решить проблему.

РЕДАКТИРОВАТЬ Вызов вашего приложения Вирус.exe это довольно неудачный выбор, и я предполагаю, что он быстро запустит большинство антивирусных сканеров (хотя это, конечно, не идеальное имя для настоящего вируса...).

Я думаю, у вас где-то есть настоящий вирус, который, возможно, изменил стандартные библиотеки : D Или просто антивирус обнаруживает шаблон в исполняемом файле.

Видеть http://www.viruslist.com/en/viruses/encyclepedia?virusid=1857 .

Я предполагаю, что Antivir сканирует текстовые строки, содержащиеся в DOS/Candy, и, поскольку строка во втором фрагменте кода аналогична той, которую он ищет, Antivir обнаруживает скомпилированный исполняемый файл как вирус.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top