0
点赞
收藏
分享

微信扫一扫

[驱动开发] wcsstr 蓝屏

闲鱼不咸_99f1 2022-07-27 阅读 46

原因

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 条评论