문제

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

차이는 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- 바이러스 생성

대체 텍스트

문제는 어떻게, 왜?

도움이 되었습니까?

해결책

거짓 양성 인 것 같습니다. 현대 바이러스는 다형성을 사용하여 바이러스 백신 프로그램에서 숨겨져 있기 때문에, 바이러스 백신 프로그램은 부분적 일치조차보고해야하며, 주어진 소스 코드가있는 컴파일러는 해당 맬웨어와 부분 일치를 생성합니다.

다른 팁

바이러스 스캐너는 휴리스틱과 서명을 사용하여 취약성을 감지합니다. 허위 긍정적 인 것은 피할 수 없습니다. 귀하의 프로그램은 휴리스틱을 유발하는 것 같습니다. 아마도 그 체크섬, 파일 크기 또는 기타 특성은 알려진 바이러스와 일치합니다. 이것은 작은 변화가 문제를 해결하기에 충분하다는 사실에 의해 두 번째입니다.

편집하다 응용 프로그램에 전화하십시오 virus.exe 꽤 불행한 선택이며, 나는 그것이 대부분의 바이러스 스캐너를 빠르게 유발할 것이라고 가정합니다 (실제 바이러스의 완벽한 이름은 아니지만 ...).

나는 당신이 어딘가에 실제 바이러스를 가지고 있다고 생각합니다. 아마도 표준 라이브러리를 수정했을 것입니다. D 또는 단순히 항 바이러스는 실행 파일의 패턴을 감지합니다.

보다 http://www.viruslist.com/en/viruses/encyclopedia?virusid=1857 .

제 생각에는 안티 바이어가 DOS/CANDY가 포함하는 텍스트 문자열을 통해 스캔하고 두 번째 코드의 코드에서 찾는 것과 같기 때문에 Antivir는 컴파일 된 실행 파일을 바이러스로 감지합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top