为什么 Avira 认为"CoCreateInstance()"是恶意软件?

Why does Avira consider "CoCreateInstance()" function as a malware?

本文关键字:恶意软件 CoCreateInstance Avira 认为 为什么      更新时间:2023-10-16

我使用visual studio 2017创建了c++控制台应用程序,它是extract.zip文件。但是,当我运行application.exe文件时,Avira防病毒软件会将我的exe检测为恶意软件。

我发现CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pISD)函数的实际Avira会产生问题。

为什么Avira将CoCreateInstance(CLSID_Shell, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pISD)视为恶意软件?

我的功能:

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

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

这种误报大多是基于一些启发式方法。

  1. 小程序比大程序更有问题
  2. 与其他DLL的依赖关系较少的程序比具有依赖关系的复杂EXE更有问题
  3. API函数的某些混合似乎比其他混合更成问题。使用更复杂的API函数和UI似乎问题更少
  4. 对于AV系统中的这种启发式trao,签名可执行文件的风险较小
  5. 许多项目(以及公司的签名(都被列入了内部白名单。您的程序未知

此函数肯定不是您使用的唯一API函数。查看Dependens,您会发现更多!

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

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

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