为什么阿维拉考虑“?”CoCreateInstance();作为恶意软件的功能? 我已经使用VisualStudio 2017创建了C++控制台应用程序,这是提取.zip文件。但是,当我运行application.exe文件时,Avira防病毒会将我的exe检测为恶意软件

为什么阿维拉考虑“?”CoCreateInstance();作为恶意软件的功能? 我已经使用VisualStudio 2017创建了C++控制台应用程序,这是提取.zip文件。但是,当我运行application.exe文件时,Avira防病毒会将我的exe检测为恶意软件,c++,winapi,visual-c++,antivirus,C++,Winapi,Visual C++,Antivirus,我发现CoCreateInstance(CLSID_Shell,NULL,CLSCTX_INPROC_SERVER,IID_IShellDispatch,(void**)和pISD)函数,其中实际Avira产生了问题 为什么Avia会考虑 COCCREATION实例(CLSIDHELL,NULL,CLSTXXIN PROCELL服务器,IIDHiSeleDebug,(Value**)和PISD)< /代码>作为恶意软件?< /P> 我的职能: bool Utils::Unzip2Folder(B

我发现
CoCreateInstance(CLSID_Shell,NULL,CLSCTX_INPROC_SERVER,IID_IShellDispatch,(void**)和pISD)
函数,其中实际Avira产生了问题

为什么Avia会考虑<代码> COCCREATION实例(CLSIDHELL,NULL,CLSTXXIN PROCELL服务器,IIDHiSeleDebug,(Value**)和PISD)< /代码>作为恶意软件?< /P> 我的职能:

bool Utils::Unzip2Folder(BSTR lpZipFile, BSTR lpFolder)
{
    IShellDispatch *pISD;

    Folder  *pZippedFile = 0L;
    Folder  *pDestination = 0L;

    long FilesCount = 0;
    IDispatch* pItem = 0L;
    FolderItems *pFilesInside = 0L;

    VARIANT Options, OutFolder, InZipFile, Item;
    CoInitialize(NULL);
    __try {
        if (CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pISD) != S_OK)
            return 1;

        InZipFile.vt = VT_BSTR;
        InZipFile.bstrVal = lpZipFile;
        pISD->NameSpace(InZipFile, &pZippedFile);
        if (!pZippedFile)
        {
            pISD->Release();
            return 1;
        }

        OutFolder.vt = VT_BSTR;
        OutFolder.bstrVal = lpFolder;
        pISD->NameSpace(OutFolder, &pDestination);
        if (!pDestination)
        {
            pZippedFile->Release();
            pISD->Release();
            return 1;
        }

        pZippedFile->Items(&pFilesInside);
        if (!pFilesInside)
        {
            pDestination->Release();
            pZippedFile->Release();
            pISD->Release();
            return 1;
        }

        pFilesInside->get_Count(&FilesCount);
        if (FilesCount < 1)
        {
            pFilesInside->Release();
            pDestination->Release();
            pZippedFile->Release();
            pISD->Release();
            return 0;
        }

        pFilesInside->QueryInterface(IID_IDispatch, (void**)&pItem);

        Item.vt = VT_DISPATCH;
        Item.pdispVal = pItem;

        Options.vt = VT_I4;
        Options.lVal = 1024 | 512 | 16 | 4;//http://msdn.microsoft.com/en-us/library/bb787866(VS.85).aspx

        bool retval = pDestination->CopyHere(Item, Options) == S_OK;

        pItem->Release(); pItem = 0L;
        pFilesInside->Release(); pFilesInside = 0L;
        pDestination->Release(); pDestination = 0L;
        pZippedFile->Release(); pZippedFile = 0L;
        pISD->Release(); pISD = 0L;

        return retval;
    }
    __finally
    {
        CoUninitialize();
    }
}
bool-Utils::Unzip2Folder(BSTR-lpZipFile,BSTR-lpFolder)
{
ISHELL*pISD;
文件夹*pZippedFile=0L;
文件夹*pDestination=0L;
长文件计数=0;
IDispatch*pItem=0升;
FolderItems*pFilesInside=0L;
变量选项、外页、InZipFile、项目;
共初始化(空);
__试一试{
if(CoCreateInstance(CLSID_Shell,NULL,CLSCTX_INPROC_服务器,IID_IShellDispatch,(void**)和pISD)!=S_OK)
返回1;
InZipFile.vt=vt_BSTR;
InZipFile.bstrVal=lpZipFile;
pISD->NameSpace(InZipFile和pZippedFile);
如果(!pZippedFile)
{
pISD->Release();
返回1;
}
OutFolder.vt=vt\u BSTR;
OutFolder.bstrVal=lpFolder;
pISD->名称空间(外部文件夹和pDestination);
如果(!pDestination)
{
pZippedFile->Release();
pISD->Release();
返回1;
}
pZippedFile->Items(&pFilesInside);
如果(!pFilesInside)
{
pdestation->Release();
pZippedFile->Release();
pISD->Release();
返回1;
}
pFilesInside->get_Count(&filecount);
如果(文件计数<1)
{
pFilesInside->Release();
pdestation->Release();
pZippedFile->Release();
pISD->Release();
返回0;
}
pFilesInside->QueryInterface(IID_IDispatch,(void**)和pItem);
Item.vt=vt_调度;
Item.pdispVal=pItem;
Options.vt=vt_I4;
Options.lVal=1024 | 512 | 16 | 4//http://msdn.microsoft.com/en-us/library/bb787866(第85节)
bool retval=pDestination->CopyHere(项目、选项)==S_OK;
pItem->Release();pItem=0升;
pFilesInside->释放();pFilesInside=0L;
pDestination->Release();pDestination=0L;
pZippedFile->Release();pZippedFile=0L;
pISD->Release();pISD=0L;
返回返回;
}
__最后
{
coninitialize();
}
}

没有真正好的答案。为什么AV系统会将某些文件检测为误报

大多数这种误报都是基于某种启发式的

  • 小程序可能比大程序更有问题
  • 与具有依赖关系的复杂EXE相比,与其他DLL的依赖关系较少的程序问题更大
  • 一些API函数的混合似乎比其他函数更有问题。使用更复杂的API函数和UI似乎问题较少
  • 在AV系统中,签名可执行文件对于此类启发式TRAO的风险较小
  • 许多项目(以及公司的签名)都在内部白名单上。您的程序未知
  • 此函数肯定不是您使用的唯一API函数。看情况而定,你会发现更多

    只需将您的exe路径添加到Avira的排除列表中。。。在小型工具的开发阶段,我不得不不止一次地这样做

    最后提示:询问阿维拉并将其发送给你。他们可能会改变那里的启发式模式匹配,所以这不再是一个假阳性


    我对阿维拉几次都有这种影响。

    没有真正好的答案。为什么AV系统会将某些文件检测为误报

    大多数这种误报都是基于某种启发式的

  • 小程序可能比大程序更有问题
  • 与具有依赖关系的复杂EXE相比,与其他DLL的依赖关系较少的程序问题更大
  • 一些API函数的混合似乎比其他函数更有问题。使用更复杂的API函数和UI似乎问题较少
  • 在AV系统中,签名可执行文件对于此类启发式TRAO的风险较小
  • 许多项目(以及公司的签名)都在内部白名单上。您的程序未知
  • 此函数肯定不是您使用的唯一API函数。看情况而定,你会发现更多

    只需将您的exe路径添加到Avira的排除列表中。。。在小型工具的开发阶段,我不得不不止一次地这样做

    最后提示:询问阿维拉并将其发送给你。他们可能会改变那里的启发式模式匹配,所以这不再是一个假阳性


    我对阿维拉有过几次这样的影响。

    你应该问“阿维拉”。与许多WinAPI函数一样,这一函数可能是许多恶意软件应用程序的一部分。“我发现了CoCreateInstance…函数,实际Avira在其中产生了问题。”-您是如何发现的?是什么让你认为它没有被标记只是因为它不是众所周知的可执行文件?@VTT当我在VirasTotal.com中注释CoCreateInstance并检查exe时,那么,这没有问题。可能可以使用CoCreateInstance在运行的进程中附加DLL。在过去,许多病毒可能会这样使用它,因此被标记!你应该问“阿维拉”。与许多WinAPI函数一样,这一函数可能是许多恶意软件应用程序的一部分。“我发现了CoCreateInstance…函数,实际Avira在其中产生了问题。”-您是如何发现的?是什么让你认为它没有被标记只是因为它不是众所周知的可执行文件?@VTT当我在VirasTotal.com中注释CoCreateInstance并检查exe时,那么,这没有问题。可能可以使用CoCreateInstance在运行的进程中附加DLL。pas中的许多病毒