#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を使用していて、AviraAntiVirウイルスシステムをインストールしました。
上記のプログラムを実行しようとすると、ワーム(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();
}
違いは\nとスペースだけです。私の質問は、なぜ私の単純なプログラムがウイルスとして検出されるのかということです。
これが別のコードサンプルです。今回は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();
}
このプログラムを実行すると、「ウイルス警告」が表示されます。ウイルスではありません。さて、悲劇はあなたがデストラクタを取り除くときです、それはそれをウイルスとして検出しません。
スクリーンショットと同様の質問は次のとおりです。
問題は、どのように、そしてなぜですか?