问题描述
我正在寻找一种快速且(崩溃)可靠的方式,以从Windows内核驱动程序扫描整个分配的系统内核内存(范围为0xffff080000000000-0xffffffffffffffff)。 我试图列出整个VAD树(如windbg中的“!vad”)并扫描相关的部分,但似乎树中并未列出所有部分。有什么办法列出整个分配的系统内存地址范围,以便我可以用下面的代码进行扫描?
inline BOOLEAN CompareByteArray(const BYTE* pData,const BYTE* bMask,const char* szMask)
{
for (; *szMask; ++szMask,++pData,++bMask)
if (*szMask == 'x' && *pData != *bMask)
return 0;
return (*szMask) == 0;
}
UINT64 FindPattern(const UINT64 dwAddress,const UINT64 dwLen,const char* szMask)
{
for (UINT64 i = 0; i < dwLen; i++)
if (CompareByteArray((BYTE*)(dwAddress + i),bMask,szMask))
return (UINT64)(dwAddress + i);
return 0;
}
编辑#1: 我必须对内存进行一次实时扫描(每次扫描少于一分钟),而且我只能在内核内存空间中搜索静态值,例如字符串/协称。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)