2011-09-20 5 views
-1

수년간 거짓말을 했었던 이런 오래된 프로그램을 사용하면 왜 내 안티 바이러스가 시작됩니까? 컴파일 된 exe 파일을 가져 와서 gen/dropper 또는 이와 비슷한 소스 코드로 사용한다고 말했습니다. 여기 안티 바이러스를 분노시키는 간단한 프로그램

코드입니다 :

더 정확하게 바이러스 스캐너를 설정하고 무엇
#include "c:\\dxsdk\\include\\d3d9.h" 
#include "c:\\dxsdk\\include\\d3dx9.h" 
#include <time.h> 
#include <sstream> 
using namespace std; 

#define APPTITLE "DirectX Practice" 

LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM); 
int Initialize(HWND); 
void OnCleanup(HWND); 
void OnInterval(HWND); 
BOOL KEY_DOWN(UINT); 
BOOL KEY_UP(UINT); 

LPDIRECT3D9 d3d = NULL; 
LPDIRECT3DDEVICE9 d3ddev = NULL; 
LPDIRECT3DSURFACE9 backBuffer = NULL; 
LPDIRECT3DSURFACE9 surface = NULL; 
UINT Screen_Width = 0; 
UINT Screen_Height = 0; 

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) 
{ 
    // 
    MSG msg; 
    //////////// 

    Screen_Width = 1280;//GetSystemMetrics(SM_CXFULLSCREEN); 
    Screen_Height= 800;//GetSystemMetrics(SM_CYFULLSCREEN); 

    // can't use the real rez if it isn't standard 

    if(Screen_Width==0 || Screen_Height==0){ 
     MessageBox(
      NULL, 
      "Could not detect native screen resolution. Using Default.", 
      "Error", 
      MB_ICONERROR|MB_SYSTEMMODAL); 
     Screen_Width = 800; 
     Screen_Height = 600; 
    } 


    WNDCLASSEX wc; 
    wc.cbSize = sizeof(WNDCLASSEX); 

    wc.style = CS_HREDRAW|CS_VREDRAW; 
    wc.lpfnWndProc = (WNDPROC)WinProc; 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hInstance = hInstance; 
    wc.hIcon = NULL; 
    wc.hCursor = LoadCursor(NULL,IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)GetSysColorBrush(COLOR_BTNFACE); 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = APPTITLE; 
    wc.hIconSm = NULL; 

    if(!RegisterClassEx(&wc)) 
     return FALSE; 

    HWND hwnd; 
    hwnd = CreateWindow(
     APPTITLE, 
     APPTITLE, 
     WS_EX_TOPMOST|WS_VISIBLE|WS_POPUP, 
     CW_USEDEFAULT, 
     CW_USEDEFAULT, 
     Screen_Width, 
     Screen_Height, 
     NULL, 
     NULL, 
     hInstance, 
     NULL); 

    if(!hwnd) 
     return FALSE; 

    ShowWindow(hwnd,SW_SHOW/*nCmdShow*/); 
    UpdateWindow(hwnd); 

    if(!Initialize(hwnd)) 
     return FALSE; 

    int done = 0; 
    while(!done) 
    { 
     if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
     { 
      if(msg.message==WM_QUIT) 
      { 
       MessageBox(hwnd,"Exiting","Notice",MB_OK|MB_SYSTEMMODAL); 
       done = 1; 
      } 
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
     }else{ 
      OnInterval(hwnd); 
     } 
    } 

    return msg.wParam; 
} 

LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    switch(msg) 
    { 
     case WM_DESTROY: 
      OnCleanup(hwnd); 
      PostQuitMessage(0); 
      return 0; 
     default: 
      return DefWindowProc(hwnd,msg,wParam,lParam); 
    } 
    return 0; 
} 

int Initialize(HWND hwnd) 
{ 
    d3d = Direct3DCreate9(D3D_SDK_VERSION); 
    if(d3d == NULL){ 
     MessageBox(hwnd,"Could not initialize Direct3D 9","Error",MB_ICONERROR|MB_SYSTEMMODAL); 
     return 0; 
    } 

    D3DPRESENT_PARAMETERS dp; 
    ZeroMemory(&dp,sizeof(dp)); 
    dp.Windowed = FALSE; 
    dp.SwapEffect = D3DSWAPEFFECT_DISCARD;  
    dp.BackBufferFormat = D3DFMT_X8R8G8B8; 
    dp.BackBufferCount = 1; 
    dp.BackBufferWidth = Screen_Width; 
    dp.BackBufferHeight = Screen_Height; 
    dp.hDeviceWindow = hwnd; 

    d3d->CreateDevice(
     D3DADAPTER_DEFAULT, 
     D3DDEVTYPE_HAL, 
     hwnd, 
     D3DCREATE_SOFTWARE_VERTEXPROCESSING, 
     &dp, 
     &d3ddev); 

    if(d3ddev == NULL){ 
     MessageBox(hwnd,"Could not create Direct3D 9 device","Error",MB_ICONERROR|MB_SYSTEMMODAL); 
     return 0; 
    } 

    srand(time(NULL)); 

    d3ddev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0); 
    d3ddev->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backBuffer); 

    if(d3ddev->CreateOffscreenPlainSurface(
      1294,614, 
      D3DFMT_X8R8G8B8, 
      D3DPOOL_DEFAULT, 
      &surface, 
      NULL) != D3D_OK) 
    { 
     MessageBox(hwnd,"Could not create off-screen data surface","Error",MB_ICONERROR|MB_SYSTEMMODAL); 
     return 0; 
    } 

    if(D3DXLoadSurfaceFromFile(
      surface, 
      NULL, 
      NULL, 
      "green.jpg", 
      NULL, 
      D3DX_DEFAULT, 
      0, 
      NULL) != D3D_OK) 
    { 
     MessageBox(hwnd,"Could not load image","Error",0); 
     return 0; 
    } 

    return 1; 
} 
void OnCleanup(HWND hwnd) 
{ 
    MessageBox(hwnd,"exiting","bye",MB_ICONERROR|MB_SYSTEMMODAL); 
    if(surface!=NULL) 
    { 
     surface->Release(); 
    } 
    if(d3ddev!=NULL) 
    { 
     d3ddev->Release(); 
    } 
    if(d3d!=NULL) 
    { 
     d3d->Release(); 
    } 
} 
void OnInterval(HWND hwnd) 
{ 
    /*RECT rect; 
    int r; 
    int g; 
    int b; 

    */ 
    if(KEY_DOWN(VK_ESCAPE)) 
     PostMessage(hwnd,WM_QUIT,0,0); 

    if(d3ddev == NULL) 
     return; 

    d3ddev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0); 



    if(d3ddev->BeginScene()) 
    { 
     /*r = rand()%255; 
     g = rand()%255; 
     b = rand()%255; 
     d3ddev->ColorFill(surface,NULL,D3DCOLOR_XRGB(r,g,b)); 

     rect.left = rand()%Screen_Width/2; 
     rect.top = rand()%Screen_Height/2; 
     rect.right = rect.left + rand()%Screen_Width/2; 
     rect.bottom = rect.top + rand()%Screen_Height/2; 
     */ 
     // blit surface's contents to the screen into the 
     // target rect area 
     d3ddev->StretchRect(surface,NULL,backBuffer,&rect,D3DTEXF_NONE); 

     d3ddev->EndScene(); 
    } 
    d3ddev->Present(NULL,NULL,NULL,NULL); 
} 


BOOL KEY_DOWN(UINT key) 
{ 
    return (BOOL)(GetAsyncKeyState(key) & 0x8000); 
} 
BOOL KEY_UP(UINT key) 
{ 
    return !((BOOL)(GetAsyncKeyState(key) & 0x8000)); 
} 

, 나는이를 방지하기 위해 무엇을 할 수 있는가?

+0

이 사이트는 프로그래밍에 대한 질문입니다. 수퍼 유저에게는 더 나은 행운을 누릴 수 있습니다. 또한 어떤 A/V 응용 프로그램을 사용하고 있습니다. –

+0

의심스러운 프로그래밍 전술을 피하는 방법에 대한 질문으로, 사이트 목적에 대한 귀하의 의견은 항상 쓸모없는 것입니다. 현재 Avira-Antivir을 사용하고 있지만 AVG를 사용하는 동안 비슷한 사건이 발생했습니다. 컴파일 된 응용 프로그램은 항상 Dev-C++에서 공격을받습니다. – freenode5

+0

당신은 새로운 사용자입니다. 사이트의 일반적인 목표에 대해 "언제나처럼 쓸모가 없습니다"라는 의견에 대한 귀하의 의견은 비 건설적이고 비방적인 것입니다. 최악의 경우 여기에 귀하의 참여에 해가됩니다. 귀하의 질문을 개선 (편집)하고, 받아들이거나, 떠날 것을 제안했습니다. –

답변

0

다시 컴파일하면 어떤 일이 발생하는지 확인하십시오. 문제가 지속되지 않으면 다른 프로세스가 실행 파일을 변조하고있는 것일 수 있습니다. virri 스캐너 나는 그것이 추세 생각

+0

때때로 virri 스캐너는 실수 만하는 경우도 있습니다. – UncleBens

+0

thx, 나는 또한 과거에 문제를 일으킨 일부 발췌 문장을 컴파일 해보고 무슨 일이 일어나는지 보려고합니다. – freenode5

0

을하는 데 도움이

희망 (컴파일러의 중간 어셈블러를 덤핑으로) 컴파일러는 정말 코드를 만들어 어떤 패턴 파일 및 경우 일치하는 이유를 확인하십시오. 안티 바이러스 소프트웨어가 탐지 할 수있는 바이러스는 매우 많습니다. 그래서 그들은 사용자들에게 바이러스 백신이 얼마나 좋은지와 컴퓨터가 얼마나 안전한지를 상기시키기 위해 오탐 (false positive)을 많이 감지하기 시작했습니다.

또한이 문제가 자주 발생합니다. 일부 사용자는 바이러스 백신에 대해 오탐 (false positive)에 대해 불평하기 시작하고, 보고서를 제출하며, 거짓 긍정을 수정하는 내용의 업데이트가 발행되고 한 달 이내에 위양성 (false positive)이 다시 나타납니다.

최상의 솔루션은 디지털 서명입니다. 디지털 서명 된 파일은 신뢰할 수있는 출처에서 가져온 것으로 보장되므로 대부분의 바이러스 백신 응용 프로그램에서는 문제가 있다고보고하지 않습니다. 단점은 코드 서명 인증서를 사야한다는 것입니다.