首页
社区
课程
招聘
[求助]为什么 HOOOK NtUserWindowFromPoint 偶尔会蓝屏
发表于: 2020-5-17 20:05 3778

[求助]为什么 HOOOK NtUserWindowFromPoint 偶尔会蓝屏

2020-5-17 20:05
3778

检查到触发蓝屏的代码是

 

void SafeMemcpy(PVOID dst, PVOID src, ULONG32 length)
{
KIRQL irql;
irql = WPOFFx64();
memcpy(dst, src, length);<---这句话触发D1蓝屏
WPONx64(irql);
}
检查了很久 并没有出现空指针,到底是什么原因 而且只有

 

HOOK NtUserWindowFromPoint 这个函数的时候会蓝屏

 

其他函数 列如 NtUserGetThreadState 的时候就不会蓝屏

 

而且是 有时候蓝屏 有时候不蓝屏 有没有大神告知一下

 

win7 x64环境


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 441
活跃值: (1060)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
你这个SafeMemcpy 一点也不safe啊。。
2020-5-17 21:20
0
雪    币: 3574
活跃值: (4719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

你 NtUserGetThreadState  正常, 但是 NtUserWindowFromPoint 不正常
irql = WPOFFx64(); 而且你这返回irql 肯定把中断拉到APCLevel以上了把

memcpy蓝了 我估计你遇到的是这个问题 

  1. 本身函数缺页 被置换到硬盘的页面文件了

  2. NtUserWindowFromPoint 应该跨页了 然后你HOOK的比如头部 假如需要15字节 这15字节分别在2个页上 一个页会导致缺页 所以蓝了
    简单...锁住就行了


最后于 2020-5-17 21:37 被syser编辑 ,原因:
2020-5-17 21:36
0
雪    币: 147
活跃值: (871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
并没有跨页~
2020-5-17 23:12
0
雪    币: 147
活跃值: (871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
*** Fatal System Error: 0x000000d1
                       (0xFFFFF9600015CDF6,0x0000000000000002,0x0000000000000001,0xFFFFF8800636DD4E)
2020-5-17 23:13
0
雪    币: 147
活跃值: (871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
蓝屏代码~
2020-5-17 23:13
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
7
这么频繁执行的函数也敢memcpy我是没想到的
2020-5-18 11:20
0
雪    币: 1525
活跃值: (3422)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
hzqst 这么频繁执行的函数也敢memcpy我是没想到的
正解,以前我hook memset时也是0xd1蓝屏,调用太频繁了,不蓝才怪,后面我在hook之前先插入dpc,用自旋锁挂起其他cpu,然后用提高irql,用mdl才解决了
2020-5-19 00:14
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
66
2020-5-19 06:51
0
游客
登录 | 注册 方可回帖
返回
//