gpt4 book ai didi

c++ - 为什么 Avira 将 "CoCreateInstance()"视为恶意软件?

转载 作者:行者123 更新时间:2023-11-28 01:31:24 25 4
gpt4 key购买 nike

我使用 visual studio 2017 创建了 c++ 控制台应用程序,它是提取的 .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. 与具有依赖性的复杂 EXE 相比,对其他 DLL 接缝的依赖性较低的程序更容易出现问题。
  3. API 函数的某些组合似乎比其他函数更容易出问题。使用更复杂的 API 函数和 UI 似乎问题更少。
  4. 签名的可执行文件在 AV 系统中出现此类启发式错误的风险较小。
  5. 许多程序(和公司签名)都在内部列入白名单。您的程序未知。

这个函数肯定不是您使用的唯一 API 函数。检查取决于,你会发现更多!

把你的exe路径加到Avira的排除列表里就可以了。。。在小工具的开发阶段我不止一次这样做。

最后提示:询问 Avira 并将您的文件发送给他们。他们可能会更改启发式模式匹配,因此这不再是误报。

我使用 Avira serval times 时有这种效果。

关于c++ - 为什么 Avira 将 "CoCreateInstance()"视为恶意软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51395651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com