首页
社区
课程
招聘
内核直接调用NTUSERFINDWINDOWEX失败
发表于: 2011-10-11 20:26 7190

内核直接调用NTUSERFINDWINDOWEX失败

2011-10-11 20:26
7190
NtUserFindWindowEx(
        IN ULONG hwndParent,
        IN ULONG hwndChild,
        IN ULONG pstrClassName,
        IN ULONG pstrWindowName,
        IN ULONG dwType
);

利用Hook Shadow观察NTUSERFINDWINDOWEX发现,如果用FindWindow查找标题窗口句柄,不是查找类名,NTUSERFINDWINDOWEX五个参数,只有pstrWindowName参数有数据,hwndParent=0,hwndChild=0,dwType=0,pstrClassName数据为NULL,但是pstrClassName参数有地址值,pstrClassName和pstrWindowName的地址值都是用户层的,在内核层直接调用NtUserFindWindowEx会反回0,经测试无论在用户层传什么参数,调用都失败,参数传入正确,和HOOK到的数据一样,地址也一样,pstrClassName和pstrWindowName用的都是用户层地址,也对另三个参数测试过,都失败,我又试了其它的函数,比如NtUserGetDC,能调用成功,NtUserFindWindowEx就失败,有没有高手能解答下是什么原因,这个网址有介绍说解决了,但是我无法实现,怎么测试都是失败的 d5fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2A6i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6X3N6i4W2*7P5W2)9J5c8X3u0D9L8$3N6Q4x3V1k6A6N6r3g2E0i4K6u0r3y4h3c8T1x3r3q4V1k6X3y4X3x3h3x3I4z5h3q4X3j5h3k6U0x3o6x3%4k6X3c8V1i4K6u0W2K9s2c8E0L8l9`.`.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 75
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
首先是参数的输入: 内核调用
HWND NtUserFindWindowEx(
    IN HWND hwndParent,
    IN HWND hwndChild,
    IN PUNICODE_STRING pstrClassName,
    IN PUNICODE_STRING pstrWindowName)

在函数实现里有  ProbeForRead(strClassName.Buffer, strClassName.Length, sizeof(BYTE));
        ProbeForRead(strWindowName.Buffer, strWindowName.Length, sizeof(BYTE))

检查参数地址有效性
2011-10-12 11:32
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
问题解决,NtUserFindWindowEx的声明多了一个参数造成一直失败,5个参数HOOK的话能成功没出错,由于函数的声明是很早以前不知从哪得来的,所以没怀疑到声明上面
2011-10-12 21:53
0
游客
登录 | 注册 方可回帖
返回