[驱动开发] wcsstr 蓝屏

阅读 46

2022-07-27

原因

wcsstr是根据最后一个字符是否为NULL判断字符串是否完成的 ,而 UNICODE_STRING,并不是应用层开发意义上的字符串,也不一定是以NULL结束。

解决方案

RtlStringCbCopyNW 复制 buffer 到 wchar* 中,在进行比较

WCHAR pszDest[MAX_PATH] = { 0 };
if (STATUS_SUCCESS != RtlStringCbCopyW(pszDest, MAX_PATH, FltObjects->FileObject->FileName.Buffer))
{
goto _abort;
}
if (wcsstr(pszDest, L"passs.lnk") != 0)
{
DT_INFO("[LYSM] passs.lnk");
goto _abort;
}

2021-6-28
另一种方案

wchar_t str[256];
wcsncpy(str, punistr->Buffer, punistr->Length / 2);
str[punistr->Length / 2] = 0;



精彩评论(0)

0 0 举报