Антивирусната програма продължава да открива проекта ми като вирус

Добър ден, опитвам се да създам рамка за моята игра, за да улесня кодирането за мен. Току-що създадох функция за добавяне на обект, но след като създадох част, където създавам индексни буфери, антивирусът продължава да ми казва: „Намерен е вирус: Win32: Evo-gen [Susp]“ и аз не знам защо. Кодът на функцията за зареждане на обекта:

HRESULT Framework::AddObject(Object* obj){
    std::vector<short> indices;
    std::vector<VertexType> vertices;
    obj->GetData(indices,vertices);
    IDirect3DVertexBuffer9* cVBuffer;
    IDirect3DIndexBuffer9* cIBuffer;
    int at=vertexBuffers.size();
    vertexBuffers.push_back(cVBuffer);
    indexBuffers.push_back(cIBuffer);
    unsigned int sOfVerts=vertices.size()*sizeof VertexType;
    unsigned int sOfIndices=indices.size()*sizeof(short);
    vCount.push_back(vertices.size());
    iCount.push_back(indices.size());
    HRESULT hr=device->GetDevice()->CreateVertexBuffer(sOfVerts,0,D3DFVF_VertexType,D3DPOOL_DEFAULT,&vertexBuffers[at],NULL);
    if(FAILED(hr)){
        EndWithError("Failed to load object",hr);
        return hr;
    } else {
        void* p_vertices;
        hr=vertexBuffers[at]->Lock(0,sOfVerts,(void**)&p_vertices,0);
        if(FAILED(hr)){
            EndWithError("Failed to lock buffer",hr);
            return hr;
        } else {
            applog<<"Successfuly created VertexBuffer for object "<<obj->GetClass()<<"["<<at<<"], vertices size: "<<sOfVerts<<", vertices count: "<<vertices.size()<<std::endl;
            memcpy(p_vertices,&vertices[0],sOfVerts);
            vertexBuffers[at]->Unlock();
        }
    }
    hr=device->GetDevice()->CreateIndexBuffer(sOfIndices,D3DUSAGE_WRITEONLY,D3DFMT_INDEX16,D3DPOOL_MANAGED,&indexBuffers[at],NULL);
    if(FAILED(hr)){
        EndWithError("Failed to load indices",hr);
        return hr;
    } else {
        void* p_indices;
        hr=indexBuffers[at]->Lock(0,sOfIndices,(void**)&p_indices,0);
        if(FAILED(hr)){
            EndWithError("Failed to lock index buffer",hr);
            return hr;
        } else {
            memcpy(p_indices,&indices[0],sOfIndices);
            indexBuffers[at]->Unlock();            
        }
    }
    return S_OK;
}
//device->GetDevice() - returns IDirect3DDevice9*
//obj->GetData(vector<int>& indices,vector<VertexType>& vertices); //gets vertices and indices
//obj->GetClass() const; - returns name of class of object, because Object is base class for another objects

И функцията Render изглежда така:

void Framework::RenderFrame(){
    IDirect3DDevice9* dev=device->GetDevice();
    if(dev!=NULL){
        dev->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(32,32,64),1.0f,0);
        if(SUCCEEDED(dev->BeginScene())){
            for(unsigned int i=0;i<vertexBuffers.size();i++){
                IDirect3DDevice9* dev=device->GetDevice();
                dev->SetStreamSource( 0, vertexBuffers[i], 0, sizeof( VertexType ) );
                dev->SetFVF( D3DFVF_VertexType );
                dev->SetIndices(indexBuffers[i]);
                //dev->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
                dev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,vCount[i],0,iCount[i]/3);
            }
            dev->EndScene();
        }
        dev->Present(NULL,NULL,NULL,NULL);
    }
}

Някой може ли да ми каже каква е причината, защо антивирусната разпознава това като вирус и как да го оправя?


person Community    schedule 05.03.2013    source източник
comment
може би имате вирус на вашия компютър, който заразява всички изпълними файлове в системата... Той е единственият открит като вирус?   -  person neagoegab    schedule 05.03.2013
comment
да, това е единственият   -  person    schedule 05.03.2013
comment
и когато коментирам тази част от dev-›GetDevice()-›CreateIndexBuffer(...) до } } return S_OK; не го открива като вирус.   -  person    schedule 05.03.2013
comment
Вероятно UB. Почти толкова добър, колкото назалните демони.   -  person PlasmaHH    schedule 05.03.2013
comment
@DieMeine: Възможно ли е тази функция да причини модифициране на изпълнимия код или да изпълни сегменти от данни или да изпълни нещо, което не е част от първоначалния двоичен файл? Погледнахте ли какво ви казва вашият скенер за вируси за вируса, който открива? Пробвал ли си други скенери за вируси и какво ти казват? Може би това ви подсказва какво точно поведение открива евристичният скенер.   -  person PlasmaHH    schedule 05.03.2013
comment
Открива го като вирус само когато го стартирам. Сканирането не открива нищо. Когато го тествам на virustotal, не е намерен вирус 0/40   -  person    schedule 05.03.2013
comment
Не мисля, че този въпрос трябва да бъде отхвърлен.   -  person André Puel    schedule 05.03.2013


Отговори (2)


Проблема решен. И нямаше почти нищо общо с индексните буфери. Причината беше поради 2 незатворени изходни файлови потока.

Все пак благодаря на всички! Поне научих нещо ново.

person Community    schedule 05.03.2013
comment
Антивирусна програма издава предупреждение заради това?!? - person AStopher; 03.10.2015

Антивирусният софтуер използва "евристика" (фантастична дума за "разширени предположения"!), за да открие "лоши модели". Това звучи като "фалшиво положително".

Правилното решение е да съобщите за проблема на вашия AV доставчик и да му позволите да издаде нова версия на „откриване“, която не открива фалшиво валиден код. Въпреки това, освен ако нямате много добър AV доставчик, е малко вероятно да видите много от това през следващите няколко седмици.

И така, ДЕЙСТВИТЕЛНОТО решение често е или да премахнете напълно AV, или да го замените с различен продукт [което между другото и двете могат да бъдат доста трудни, тъй като AV софтуерът има тенденция да се деинсталира трудно - разбира се, поради основателни причини , не бихте искали първият вирус да удари вашата машина, за да деинсталира вашия AV софтуер - което означава, че понякога самото AV деинсталиране не деинсталира ВСИЧКО, което трябва].

Понякога просто изключването на „сканирането на живо“ е достатъчно добро.

person Mats Petersson    schedule 05.03.2013
comment
Това е вярно, но какво ще стане, ако... Не искам да правя играта си частна в бъдеще, а публична. Ще кажа ли на всички други хора да деинсталират антивирусите си? - person ; 05.03.2013
comment
След това трябва да убедите доставчиците на AV, че вашата игра трябва да бъде включена в белия списък за откриване на всичко, което смята, че правите погрешно. Разбира се, вашият код вероятно ще се е променил малко между тях, така че може да не е проблем. - person Mats Petersson; 05.03.2013