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

このプログラムを実行すると、「ウイルス警告」が表示されます。ウイルスではありません。さて、悲劇はあなたがデストラクタを取り除くときです、それはそれをウイルスとして検出しません。

スクリーンショットと同様の質問は次のとおりです。

C言語-\n-ウイルスの作成

代替テキスト

問題は、どのように、そしてなぜですか?

4

4 に答える 4

19

ウイルススキャナーは、ヒューリスティックとシグネチャを使用して脆弱性を検出します。誤検知は避けられません。あなたのプログラムはヒューリスティックをトリガーしているようです。おそらく、そのチェックサム、ファイルサイズ、またはその他の特性は、既知のウイルスと一致します。これは、問題を解決するには小さな変更で十分であるという事実によって裏付けられています。

編集アプリケーションのVirus.exeを呼び出すことは非常に残念な選択であり、ほとんどのウイルススキャナーをすばやくトリガーすると思います(ただし、実際のウイルスの完全な名前ではありません...)。

于 2010-03-14T18:17:12.643 に答える
13

誤検知のように見えます。最近のウイルスはポリモーフィズムを使用してアンチウイルスプログラムから隠蔽しているため、アンチウイルスプログラムは部分的な一致も報告する必要があり、特定のソースコードを使用するコンパイラはそのマルウェアと部分的に一致するようです。

于 2010-03-14T18:18:27.673 に答える
3

どこかに本物のウイルスがあり、おそらく標準ライブラリが変更されていると思います:Dまたは、単にアンチウイルスが実行可能ファイルのパターンを検出します。

于 2010-03-14T18:17:44.400 に答える
3

http://www.viruslist.com/en/viruses/encyclopedia?virusid=1857を参照してください。

私の推測では、AntivirはDOS / Candyに含まれるテキスト文字列をスキャンし、2番目のコードの1つは探しているものと似ているため、Antivirはコンパイルされた実行可能ファイルをウイルスとして検出します。

于 2010-03-14T18:17:45.117 に答える