2010-03-14 2 views
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)에서 실행합니다.C 언어 프로그램이 바이러스로 탐지되었습니다.

Windows 7을 사용하고 Avira AntiVir 바이러스 시스템을 설치했습니다.

위의 프로그램을 실행하려고하면 웜 (DOS/Candy)이 생성됩니다. 나는 프로그램에 잘못된 점이 없다고 생각한다. 이제 여기

alt text

특별한 무언가이다. 다음과 같은 차이점이있는 동일한 프로그램을 실행하십시오.

#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 공간 : 여기 유일한 차이점 \n 사이의 공간이다. 내 질문은, 왜 내 간단한 프로그램이 바이러스로 탐지되는 것입니까? 심지어는 바이러스가 아닌 -

#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++이 시간입니다. 이제 비극은 파괴자를 제거하면 바이러스로 탐지하지 못합니다.

C Language - \n - creating virus

alt text

문제는 어떻게, 그리고 왜 : 여기

는 스크린 샷과 비슷한 질문입니까?

+19

호기심에서 벗어나 : 왜 20 살짜리 컴파일러를 사용하고 있습니까? –

+1

의심의 여지가 있지만,이 바이러스는 코드에서 정의되지 않은 동작으로부터 발전합니다. –

+2

'void main'을 사용 했으므로 컴파일러가 프로그램을 바이러스로 변환하고 있습니다. :-) –

답변

12

위양성처럼 보입니다. 최신 바이러스는 바이러스 백신 프로그램에서 숨기기 위해 다형성을 사용하기 때문에 백신 프로그램은 부분 일치도보고해야하며 컴파일러가 특정 소스 코드를 사용하면 분명히 해당 악성 프로그램과 부분적으로 일치합니다.

19

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

편집 응용 프로그램 호출 Virus.exe 꽤 불행한 선택을, 나는 (이 완벽한 이름은 실제 바이러스에 대해 확실히 비록 ...) 신속 대부분의 바이러스 스캐너를 트리거 추정 것입니다.

+5

... OP가 자신의 프로그램 인 'VIRUS'및 'VIRUS2'를 호출하면 안티 바이러스 소프트웨어가 바이러스를 발견했다고 생각할 수 있습니다. – stakx

+0

안녕하세요! 다른 이름을 사용할 수도 있습니다. 시험 준비를 위해 디스크에 너무 많은 프로그램이 있습니다. 그냥 쉽게 식별 할 수 있기 때문에 그냥 이름을지었습니다. 당신은 다른 이름을 선택할 수 있습니다 - 또한 그것은 바이러스로 감지합니다. –

+0

내 의견을 들었습니까? –

3

어쩌면 표준 바이러스 라이브러리를 수정 한 어딘가에 실제 바이러스가있는 것 같습니다. D 또는 단순히 바이러스 백신이 실행 파일의 패턴을 감지합니다.

+0

아니요 - 없어요. 나는 대답이 필요하다 - 어떤 가정도. 나는 너무 많은 시간을 확인했다. 처음에는 전체 컴퓨터를 포맷했습니다. - 설치 한 운영 체제 & 다음으로는 최초의 바이러스 백신 시스템, 그리고 나서 터보 C. 이 후에도 - 내 프로그램을 바이러스로 탐지합니다. –