【旧文章搬运】关于NtUserBuildHwndList的一点记录~

原文发表于百度空间,2011-04-07
==========================================================================

该函数与ring3的枚举窗口函数有关,原型如下:

NTSTATUS APIENTRY NtUserBuildHwndList(   
HDESK hDesktop,   
HWND hwndParent,  
 BOOLEAN bChildren,   
ULONG dwThreadId,   
ULONG lParam,   
HWND* pWnd,   
ULONG* pBufSize);

要在驱动中调用此函数的童鞋们要注意下:

(1)不能在System进程和smss进程中调用(比如DriverEntry啥的),Attach到别的进程也不行,原因与Session Space有关,否则你将会得到一个BSOD~~
(2)最后两个参数必须是ring3地址,否则你将得到一个0xC0000008错误~~
(3)在没有GUI的进程中也可以调用此函数,只要该进程属于某个Session就行(还记得访问win32k.sys的进程限制吗?)~~

 

其它的Shadow服务函数可能也有类似情况,如果使用时出现了错误,不妨往以上方面想想~~~

posted @ 2018-12-27 10:51  黑月教主  阅读(935)  评论(0编辑  收藏  举报